Windows下llama.cpp+Qwen3.5-4B GPU加速部署实战

📅 2026/6/21 4:55:42
Windows下llama.cpp+Qwen3.5-4B GPU加速部署实战
1. 项目概述为什么是 llama.cpp Qwen3.5-4B GPU这组合不是“凑热闹”而是实打实的生产力选择最近两周我连续在三台不同配置的 Windows 11 机器上完成了 llama.cpp 对 Qwen3.5-4B 模型的 GPU 加速推理编译部署——一台是 RTX 4070 笔记本移动版一台是 RTX 3060 台式机还有一台是刚配好的 RTX 4090 工作站。没有用 Ollama没碰 vLLM也没走 Python 生态那套“pip install load_model”路径。全程只用 C、CMake、CUDA Toolkit 和一个干净的 Git 克隆。最终结果Qwen3.5-4B 在 4070 笔记本上实测首 token 延迟压到 820ms吞吐稳定在 28.3 tokens/s3060 台式机上首 token 1.12s吞吐 19.7 tokens/s4090 工作站则跑出 41.6 tokens/s 的持续输出速度。这不是 benchmark 跑分截图是我在写周报、审代码、查 API 文档时真实开着的后台服务。你可能已经看到网上一堆“llama.cpp UI 下载”“qwen3.5-4b量化版”的搜索热词但很多人卡在第一步Windows 11 下 CUDA 版 llama.cpp 根本编译不过。报错五花八门“a d3d11-compatible gpu (feature level 11.0, shader model 5.0) is required to…”、“warning: you do not appear to have an nvidia gpu supported by the 595.80 nvidia driver”、“nvcc fatal : Unsupported gpu architecture ‘compute_86’”……这些不是环境问题是编译链路里几个关键决策点被跳过了。比如你用的是 CUDA 12.4 还是 12.2CMake 配置时有没有显式禁用 HIPGGUF文件加载时是否误启用了CLIP相关编译选项导致链接失败这些细节官方 README 不会写GitHub Issues 里散落着几十个 PR 和 comment但没人帮你串起来。这个项目标题里的三个关键词每个都踩着当前本地大模型落地的痛点llama.cpp 是目前唯一能把 4B 级别模型在消费级 GPU 上跑出可用响应速度的纯 C 推理引擎Qwen3.5-4B 是通义千问最新发布的轻量主力模型中文理解、工具调用、长文本摘要能力比 Qwen2-4B 明显提升且官方已发布 GGUF 格式量化版本Q4_K_M / Q5_K_SGPU 推理则是绕不开的性能分水岭——CPU 推理 Qwen3.5-4B首 token 动辄 3.5 秒以上根本没法交互。而一旦 GPU 编译成功你得到的不是一个 demo而是一个可嵌入脚本、可对接 Web UI、可集成进自动化流程的稳定二进制。它不依赖 Python 环境不占内存泄漏风险启动即用重启秒级。我把它直接塞进公司内部知识库的 RAG 流程里替代了原来用 CPU 跑的 LangChain chain端到端延迟从 8.2 秒降到 1.9 秒运维同事再也不用半夜被 Prometheus 告警叫醒查 OOM。适合谁看如果你正面临这些场景想在 Windows 笔记本上跑一个真正能用的中文大模型而不是“能加载就行”你试过 Ollama 但发现它对 Qwen3.5 支持滞后或者想绕过其黑盒调度机制做细粒度控制你手头有块 NVIDIA 显卡RTX 30 系及以上或 A100/A800但被 CUDA 版本、驱动兼容、CMake 参数搞到崩溃你想把模型推理能力封装成 CLI 工具供团队其他成员调用而非每人配一套 Python 环境……那么这篇记录就是为你写的。它不讲编译原理第三版课后题不分析 GCC 内部 AST只告诉你哪一步必须做哪一步可以跳哪一步做了反而坏事以及——为什么。2. 整体设计与思路拆解为什么放弃 Python 生态死磕 C 编译2.1 选 llama.cpp 而非 vLLM/Ollama/Transformers 的底层逻辑很多人第一反应是“干嘛自己编译Ollama 一行命令就跑起来了。”这话没错但前提是你的需求只是“试试看”。一旦进入真实工作流差异立刻显现内存占用不可控Ollama 默认启用 mmap page cacheQwen3.5-4B Q4_K_M 模型加载后常驻内存约 2.8GB但实际运行中因 Python GIL 和 PyTorch 的 CUDA context 管理峰值内存常飙到 4.2GB 以上。我的 4070 笔记本只有 16GB 总内存开个 Chrome VS Code Docker Desktop留给模型的只剩不到 5GBOllama 经常触发 Windows 内存压缩响应卡顿。GPU 利用率虚高Ollama 的ollama run qwen3.5:4b看似在用 GPU实测nvidia-smi显示 GPU-Util 长期低于 30%大量时间耗在 Python 层的 token 处理和 KV cache 同步上。而 llama.cpp 的 CUDA backend 是直接操作 cuBLAS 和 cuDNN 的 kernelGPU-Util 稳定在 65%~85% 区间这才是真正的“喂饱显卡”。无法深度定制比如你需要在推理前插入自定义 prompt engineering 逻辑如自动补全 system prompt 中的当前日期、用户角色权限或在生成后做实时敏感词过滤非 post-process而是中断生成流。Ollama 的插件机制太重vLLM 的 custom generation logic 又要求改 core code。而 llama.cpp 的llama_eval()函数就是裸指针操作你可以在llama_token_eos()判断后立即插入 C 条件分支毫秒级响应。所以我们选择 llama.cpp不是因为它“最火”而是因为它的架构决定了最小抽象层、最大控制权、最低运行时开销。它把模型推理这件事还原成了“读权重 → 矩阵乘 → 更新 cache → 输出 token”这一条清晰的数据流中间没有任何魔法。2.2 为什么是 Qwen3.5-4B而不是更小的 1.5B 或更大的 7BQwen3.5-4B 是一个典型的“甜点模型”sweet spot model。我们做过横向对比测试集CMMLU 中文多任务理解 Self-RAG QA 问答准确率模型参数量GGUF 量化大小CPU 推理 avg. latencyGPU 推理 avg. latency (RTX 4070)CMMLU 准确率Self-RAG QA F1Qwen3.5-1.5B1.5B980MB (Q4_K_M)2.1s1.3s62.3%0.58Qwen3.5-4B4B2.1GB (Q4_K_M)3.7s0.82s74.6%0.73Qwen3.5-7B7B3.9GB (Q4_K_M)6s频繁 swap1.4s显存溢出需 offload78.1%0.79注意看4B 模型在 GPU 推理延迟上比 1.5B 快了 35%但准确率却高出 12 个百分点而 7B 模型虽然准确率再3.5%但延迟翻倍且在 40708GB 显存上必须启用部分 offload 到系统内存导致实际体验反而不如 4B 稳定。这就是为什么我们锁定 4B——它在精度、速度、显存占用三者之间找到了最佳平衡点。尤其对于中文场景Qwen3.5 系列的 tokenizer 对中文子词切分更合理相比 LLaMA 原生 tokenizerQwen3.5-4B 的 context window 达到 131072远超同类 4B 模型这对处理长文档摘要、代码审查等任务至关重要。2.3 GPU 推理的硬性门槛与避坑前置条件这里必须划重点不是所有“带 GPU 的 Windows 11 电脑”都能顺利编译运行。我们踩过的坑90% 都源于对硬件/驱动/CUDA 三者关系的误判。首先NVIDIA 驱动版本不是越高越好。Qwen3.5-4B 的 CUDA kernel 依赖 compute capability 8.6Ampere 架构如 RTX 30/40 系列而官方推荐的驱动是535.104 或 545.23。我们试过 551.86 驱动编译能过但运行时报 “CUDA error: invalid device ordinal”降回 545.23 后立即解决。原因在于新驱动引入了对 Hopper 架构H100的额外检查会误判 Ampere 设备状态。其次CUDA Toolkit 版本必须与 llama.cpp 主干代码严格匹配。截至 2024 年 6 月llama.cpp 官方主干commita1f2c3d明确要求 CUDA 12.2。你装 12.4CMake configure 阶段会报 “nvcc fatal : Unsupported gpu architecture ‘compute_86’”因为 12.4 默认禁用旧架构支持。解决方案不是降级 CUDA而是在 CMakeLists.txt 里手动添加set(CMAKE_CUDA_ARCHITECTURES 86) # 强制启用 Ampere set(CMAKE_CUDA_FLAGS ${CMAKE_CUDA_FLAGS} -gencode archcompute_86,codesm_86)但这属于 hack稳定性不如直接用 12.2。最后显存不是越大越好而是要够用且不浪费。Qwen3.5-4B Q4_K_M 模型在 GPU 上运行最低需要约 5.2GB 显存含 KV cache intermediate buffer。RTX 306012GB和 40708GB都满足但 RTX 40608GB在开启--ctx-size 32768时会显存不足——因为大 context 会线性增加 KV cache 占用。我们实测4060 上 max ctx-size 安全值是 16384再大就 OOM。所以编译前务必用nvidia-smi -q -d MEMORY确认可用显存并根据目标 context size 反推上限。提示不要迷信“昇腾系列有哪些 GPU”这类搜索词。昇腾Ascend是华为生态llama.cpp 官方 CUDA backend 仅支持 NVIDIA。如果你想用昇腾得等社区 PR 合并aclnnbackend目前2024年6月仍处于实验阶段不建议生产使用。3. 核心细节解析与实操要点Windows 11 下编译链路的 7 个生死节点3.1 开发环境初始化Visual Studio 2022 CUDA 12.2 Git 的黄金组合Windows 下编译 C 项目环境一致性是第一道生死线。我们反复验证以下组合是目前最稳定的Visual Studio 2022 Communityv17.6.5必须安装 “Desktop development with C” 工作负载且勾选 “CMake tools for Visual Studio” 和 “Windows 10/11 SDK (10.0.22621.0)”。CUDA Toolkit 12.2从 NVIDIA 官网下载cuda_12.2.2_536.67_win11.exe安装时取消勾选 “NVIDIA GeForce Driver”—— 驱动必须单独安装否则版本冲突。Git for Windows 2.44用于克隆 llama.cpp 仓库确保启用 “Enable file system caching” 和 “Enable Git Credential Manager”。为什么不用 VS2019 或 VS2025 PreviewVS2019 的 MSVC 工具链对 C20 的std::span支持不完整llama.cpp 的llama.h头文件大量使用该特性编译会报 “span is not a member of std”。VS2025 Preview 则因 CMake 集成尚不稳定configure 阶段常卡死。VS2022 v17.6.5 是微软官方认证的 CUDA 12.2 兼容版本。安装顺序极其重要先装 VS2022 → 再装 CUDA 12.2不装驱动→ 最后装 NVIDIA 驱动 545.23。任何颠倒都会导致nvcc找不到cl.exe或cl.exe找不到nvcc。我们曾因先装驱动再装 VS导致 CMake 报 “Could not find compiler set in environment variable CC”折腾 6 小时才发现是环境变量 PATH 被驱动安装器污染。注意安装完 CUDA 12.2 后务必打开 CMD 运行nvcc --version确认输出为 “release 12.2, V12.2.128”。如果显示 “V12.4.x”说明你装错了包。此时不要卸载重装直接去C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\bin下把nvcc.exe复制一份重命名为nvcc-12.2.exe并在 CMake 配置时指定-DCMAKE_CUDA_COMPILERC:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.2/bin/nvcc-12.2.exe。3.2 llama.cpp 仓库克隆与分支选择main 还是 cuda-fix截至 2024 年 6 月llama.cpp 官方main分支对 Qwen3.5 的支持已合并但存在一个致命 bugllama.cpp/examples/main/main.cpp中的llama_tokenize()函数对 Qwen tokenizer 的特殊 BOS/EOS token 处理错误导致输入中文时首 token 解析失败。这个问题在cuda-fix分支commite7b8c9a中已修复。因此我们必须克隆cuda-fix分支git clone --branch cuda-fix --single-branch https://github.com/ggerganov/llama.cpp.git cd llama.cpp git submodule update --init --recursive--single-branch很关键。llama.cpp 仓库包含llama.cpp,llama-server,llama-cli等多个子模块main分支默认拉取所有历史分支克隆下来近 2.3GB。而cuda-fix是一个轻量修复分支克隆体积仅 480MB且 commit 记录干净便于排查问题。子模块更新后检查ggml目录是否存在ggml-cuda.cu文件。如果不存在说明 submodule 未正确初始化运行git submodule foreach --recursive git checkout main强制同步。3.3 CMake 配置12 个关键参数的取舍逻辑这是整个编译过程中最易出错、也最需要理解原理的环节。我们不用 GUI 工具全部通过 CMD 执行cmake命令确保每一步可复现、可审计。进入llama.cpp根目录创建build文件夹mkdir build cd build执行 CMake configure关键参数详解cmake -G Visual Studio 17 2022 ^ -A x64 ^ -DCMAKE_BUILD_TYPERelease ^ -DLLAMA_CURLOFF ^ -DLLAMA_AVXOFF ^ -DLLAMA_AVX2OFF ^ -DLLAMA_AVX512OFF ^ -DLLAMA_ARM_FMAOFF ^ -DLLAMA_CUDAON ^ -DLLAMA_CUDA_FORCE_DMMOFF ^ -DLLAMA_VULKANOFF ^ -DLLAMA_SYCLOFF ^ -DLLAMA_METALOFF ^ -DCMAKE_CUDA_ARCHITECTURES86 ^ ..逐条解释为何这样设置-G Visual Studio 17 2022强制指定生成器避免 CMake 自动选择 Ninja 导致 CUDA 编译失败。-A x64明确架构为 64 位Windows 下必须。-DCMAKE_BUILD_TYPEReleaseDebug 模式下 CUDA kernel 会插入大量断言性能下降 40% 以上且易触发cudaErrorLaunchTimeout。-DLLAMA_CURLOFFQwen3.5 推理无需网络请求关闭 cURL 可减少依赖和潜在 SSL 冲突。-DLLAMA_AVX*OFFAVX 指令集与 CUDA kernel 存在寄存器竞争开启后 GPU 推理稳定性暴跌我们实测 3060 上 crash rate 从 0.2% 升至 12%。-DLLAMA_CUDAON核心开关必须开启。-DLLAMA_CUDA_FORCE_DMMOFFDMMDirect Memory Mapping是 llama.cpp 的实验性功能用于绕过 CUDA Unified Memory但在 Windows 下极易导致cudaErrorInvalidValue生产环境务必关闭。-DLLAMA_VULKANOFF等Qwen3.5 无官方 Vulkan 支持开启纯属增加编译失败概率。最关键的-DCMAKE_CUDA_ARCHITECTURES86它告诉 nvcc “只编译针对 Ampere 架构sm_86的 PTX 代码”避免生成冗余的 sm_75/sm_80 代码缩短编译时间 35%并杜绝 “Unsupported gpu architecture” 错误。3.4 模型文件准备Qwen3.5-4B GGUF 的官方来源与校验Qwen3.5-4B 的 GGUF 格式模型由魔搭ModelScope官方发布不是 HuggingFace 上的 pytorch bin 文件转换而来。后者转换质量差常出现 attention mask 错误。正确获取路径访问 https://modelscope.cn/models/qwen/Qwen3.5-4B切换到 “Files and versions” 标签页下载Qwen3.5-4B-Q4_K_M.gguf约 2.1GB或Qwen3.5-4B-Q5_K_S.gguf约 2.4GB下载后务必校验 SHA256certutil -hashfile Qwen3.5-4B-Q4_K_M.gguf SHA256 # 正确值应为a7b3c9d2e1f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0SHA256 不匹配说明下载中断或被 CDN 缓存污染需清除浏览器缓存或换源重下。为什么选 Q4_K_M 而非 Q5_K_SQ4_K_M 在 4B 模型上精度损失 0.8%CMMLU 测试但体积小 12%加载速度快 18%。Q5_K_S 虽然精度略高但对 GPU 显存带宽压力更大在 RTX 3060 上实测吞吐仅比 Q4_K_M 高 1.2 tokens/s性价比极低。3.5 编译与链接MSVC 与 nvcc 的协同作战CMake configure 成功后执行构建cmake --build . --config Release --parallel 8--parallel 8表示使用 8 个线程编译匹配主流 16 线程 CPU。线程数过多如 16会导致 MSVC 链接器内存溢出报 “LINK : fatal error LNK1248: image size (123456789) exceeds maximum allowable size (FFFFFFFF)”过少如 2则编译时间从 8 分钟拉长到 22 分钟。编译过程会生成llama-cli.exe命令行工具和llama-server.exeHTTP 服务。我们重点关注llama-cli.exe因为它是调试推理逻辑的最简载体。编译完成后测试 CUDA 是否真正启用.\bin\Release\llama-cli.exe -h | findstr CUDA应输出类似--gpu-layers N number of layers to store in VRAM (default: 0, -1 for all) --cuda-malloc use CUDA memory allocator (default: false)如果没看到--gpu-layers说明 CUDA 编译失败返回上一步检查 CMake 输出日志搜索 “CUDA” 关键字定位具体错误。3.6 GPU 推理启动--gpu-layers参数的科学计算法--gpu-layers是 llama.cpp GPU 推理的灵魂参数但它不是“越多越好”。它的含义是将模型的前 N 个 transformer layer 的权重和 KV cache 全部加载到 GPU 显存中剩余 layer 保留在 CPU 内存。Qwen3.5-4B 共有 32 个 layer。我们通过显存占用公式反推最优值GPU 显存占用 ≈ (N * layer_weight_size) (KV_cache_size * ctx_size * 2)其中layer_weight_sizeQ4_K_M≈ 185MBKV_cache_size≈ 0.04MB per token实测ctx_size 4096常用值代入 RTX 40708GB若--gpu-layers 3218532 0.044096*2 ≈ 5920 328 6248MB → 安全若--gpu-layers 32--ctx-size 3276818532 0.0432768*2 ≈ 5920 2621 8541MB → OOM因此我们制定分层策略日常使用ctx-size 4096--gpu-layers 32全 offload最快长文档处理ctx-size 16384--gpu-layers 2418524 0.0416384*2 4440 1311 5751MB笔记本省电模式ctx-size 2048--gpu-layers 1618516 0.042048*2 2960 164 3124MB实测数据证明--gpu-layers 24在 16384 ctx 下吞吐仅比32低 3.2%但稳定性提升 100%零 OOM。3.7 首次运行验证如何读懂llama-cli的输出日志启动命令.\bin\Release\llama-cli.exe -m ..\models\Qwen3.5-4B-Q4_K_M.gguf -p 你好你是谁 --gpu-layers 32 --ctx-size 4096 --temp 0.7 --repeat-penalty 1.1成功运行时你会看到类似输出system_info: n_threads 12 / 24 | AVX 1 | AVX2 1 | AVX512 0 | FMA 1 | NEON 0 | ARM_FMA 0 | METAL 0 | CUDA 1 | SYCL 0 | VULKAN 0 | COMPILATION 1 llama_model_loader: loaded meta data with 19 key-value pairs and 321 tensors from ..\models\Qwen3.5-4B-Q4_K_M.gguf (version GGUF V3) llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. llama_model_loader: - kv 0: general.architecture str qwen2 llama_model_loader: - kv 1: general.name str Qwen3.5-4B llama_model_loader: - kv 2: qwen2.context_length u32 131072 ... llama_kv_cache_init: kv_size 4096, type_k 17, type_v 17 llama_graph_compute: CUDA execution time: 823.45 ms (graph) llama_graph_compute: CUDA execution time: 12.34 ms (eval)关键日志解读CUDA 1确认 CUDA backend 已激活。general.architecture str qwen2Qwen3.5 基于 Qwen2 架构llama.cpp 已正确识别。qwen2.context_length u32 131072模型原生支持超长上下文放心用。CUDA execution time: 823.45 ms (graph)首次推理的图编译耗时后续请求会复用降到 12ms 级别。type_k 17, type_v 17表示 KV cache 使用 FP1616-bit float这是 GPU 加速的关键。如果看到CUDA execution time: 0.00 ms说明根本没有走 GPU检查--gpu-layers是否为 0 或负数。4. 实操过程与核心环节实现从零到可交互推理的完整流水线4.1 构建可复用的批处理脚本告别重复敲命令每次测试都要输一长串参数我们写了一个run_qwen.bat脚本放在llama.cpp根目录echo off setlocal enabledelayedexpansion REM 配置区只需修改这里 set MODEL_PATH..\models\Qwen3.5-4B-Q4_K_M.gguf set GPU_LAYERS32 set CTX_SIZE4096 set TEMP0.7 set REPEAT_PENALTY1.1 set PROMPT_FILEprompt.txt REM 自动检测硬件并优化 for /f tokens2 delims: %%a in (nvidia-smi --query-gpumemory.total --formatcsv,noheader,nounits ^| findstr [0-9]) do ( set GPU_MEM%%a ) if %GPU_MEM% LSS 8000 ( echo [WARN] GPU memory 8GB, reducing gpu-layers to 24 set GPU_LAYERS24 ) REM 构建命令 set CMD.\bin\Release\llama-cli.exe -m %MODEL_PATH% --gpu-layers %GPU_LAYERS% --ctx-size %CTX_SIZE% --temp %TEMP% --repeat-penalty %REPEAT_PENALTY% if exist %PROMPT_FILE% ( set CMD%CMD% -f %PROMPT_FILE% ) else ( set /p USER_PROMPTEnter prompt: set CMD%CMD% -p !USER_PROMPT! ) echo Running: %CMD% %CMD% pause这个脚本的价值在于硬件自适应自动读取nvidia-smi输出的显存总量小于 8GB 时自动降级--gpu-layers避免手动算错。输入灵活支持从prompt.txt文件读取适合批量测试也支持命令行交互输入适合调试。错误防御enabledelayedexpansion确保!USER_PROMPT!中的空格和特殊字符不被截断。我们用它跑了 200 次不同 prompt 的 stress test从未因参数错误崩溃。4.2 中文 Prompt 工程实战Qwen3.5 的 tokenizer 特性利用Qwen3.5 的 tokenizer 对中文处理有两大特性必须利用BOS token 不是|endoftext|而是|im_start|所有 prompt 必须以|im_start|system\n...|im_end||im_start|user\n...|im_end||im_start|assistant\n格式组织。支持|reserved_special_token_1|等保留 token可用于标记结构化字段。一个高效 prompt 模板保存为prompt.txt|im_start|system 你是一个专业的技术文档助手擅长用中文清晰、准确地解释复杂概念。回答时请遵循1) 先给出结论2) 用 bullet point 列出 3 个关键依据3) 最后提供一个可运行的代码示例。禁止使用 markdown 格式用纯文本。 |im_end| |im_start|user 请解释 llama.cpp 的 CUDA backend 如何管理 KV cache |im_end| |im_start|assistant注意结尾的|im_start|assistant\n—— 这告诉模型“接下来是我的回答”触发 autoregressive 生成。漏掉这个模型会输出乱码。我们测试过不用|im_start|格式直接输 “你是一个技术助手…”Qwen3.5-4B 的回答准确率下降 22%。因为它的训练数据全部基于 Qwen Chat Formattokenizer 会把普通文本映射到错误的 token ID 序列。4.3 性能压测与调优找到你机器的“甜蜜点”我们用llama-bench工具对 RTX 4070 笔记本做了全参数扫描--gpu-layers--ctx-size--batch-size首 token (ms)吞吐 (tok/s)显存占用 (MB)稳定性0 (CPU only)409651234203.12100★★★★★164096512128014.23120★★★★☆24409651295022.84750★★★★★32409651282028.36240★★★★★328192512112025.17890★★★★☆3216384512OOM--★☆☆☆☆结论清晰对 RTX 4070--gpu-layers 32 --ctx-size 4096是绝对最优解。吞吐最高延迟最低显存留有 1.7GB 余量8GB - 6.24GB可安全运行其他程序。但对 RTX 306012GB最优解是--gpu-layers 32 --ctx-size 8192吞吐达 25.1 tok/s显存占用 7.89GB余量充足。实操心得不要盲目追求最大--ctx-size。Qwen3.5-4B 在 ctx-size 8192 后KV cache 的内存访问局部性急剧下降导致 GPU 显存带宽利用率从 85% 降到 52%吞吐不升反降。我们实测--ctx-size 16384时吞吐比8192低 1.8 tok/s纯属浪费资源。4.4 集成到工作流用 PowerShell 脚本实现“一键提问”最终我们把 llama-cli 封装成一个 PowerShell 函数加入$PROFILEfunction Invoke-Qwen { param( [Parameter(Mandatory)] [string]$Prompt, [int]$CtxSize 4096,