本节导读:同一台机器,参数配置不同,体验可能相差数倍。本节把Llamafile(llama.cpp体系)的常用参数按"性能、内存、生成质量、服务"四类拆解,并给出按硬件场景的调优组合。
Llamafile的参数体系继承自llama.cpp,可归为四类:
┌─ 性能类:--n-gpu-layers / --threads / --batch-size ├─ 内存类:--ctx-size / --mlock / --no-mmap ├─ 质量类:--temp / --top-p / --repeat-penalty └─ 服务类:--server / --host / --port / --parallel
| 参数 | 默认值 | 作用 | 调优建议 |
|---|---|---|---|
--n-gpu-layers N(-ngl) |
0(纯CPU) | 卸载到GPU的Transformer层数 | NVIDIA显卡设为 999(全部卸载);显存不足时从大到小递减试探 |
--threads N(-t) |
自动 | CPU推理线程数 | 设为物理核心数;超线程收益有限 |
--batch-size N(-b) |
512 | prompt处理的批大小 | 长文档问答可提升到1024~2048加快首字响应 |
| 参数 | 作用 | 使用场景 |
|---|---|---|
--ctx-size N(-c) |
上下文窗口token数 | KV缓存随其线性增长:8192比4096多占约一倍KV内存;日常对话2048~4096足够 |
--mlock |
锁定内存防止换出 | 内存充足时保证生成速度稳定 |
--no-mmap |
禁用内存映射,强制整读 | 避免mmap缺页带来的首次生成卡顿 |
| 参数 | 建议值 | 说明 |
|---|---|---|
--temp |
0.7 | 温度。创意写作用0.91.0,事实问答/代码用0.10.3 |
--top-p |
0.9 | 核采样。与温度二选一调节即可 |
--repeat-penalty |
1.1 | 抑制复读。模型反复输出相同短语时调到1.2 |
| 参数 | 作用 |
|---|---|
--server |
启动HTTP服务(Web界面+API) |
--host / --port |
监听地址与端口 |
--parallel N |
并发对话槽数(多用户同时使用) |
--metrics |
暴露 /metrics 监控端点 |
./model-7b.llamafile --server \ --n-gpu-layers 20 \ # 部分层卸载,其余留在CPU --ctx-size 4096 \ --temp 0.7 --repeat-penalty 1.1
思路:显存装不下全部层时,"部分卸载"(CPU+GPU混合)是性价比最高的方案,通过逐步增大 -ngl 找到不爆显存的上限。
./model-13b.llamafile --server \ --n-gpu-layers 999 \ # Metal全量卸载 --ctx-size 8192 \ --temp 0.7
思路:统一内存架构无需权衡显存,全量卸载即可获得最佳速度。
./model-14b.llamafile --server \ --threads 16 \ # 匹配物理核心 --ctx-size 4096 \ --mlock \ # 防止换出 --temp 0.5
思路:CPU推理的两大要点是线程数匹配与防止内存换出;适当降低温度可减少冗长输出,间接提升体验。
| 症状 | 首先调整 | 其次调整 |
|---|---|---|
| 首字响应慢 | --n-gpu-layers 提高 |
--batch-size 提高 |
| 生成中途越来越慢 | 加 --mlock |
减小 --ctx-size |
| 显存溢出报错 | --n-gpu-layers 递减 |
换更低量化版本 |
| 输出复读车轱辘话 | --repeat-penalty 1.15~1.2 |
--temp 提到0.8 |
| 答非所问/胡编 | --temp 降到0.2~0.4 |
检查模型是否为Instruct版本 |
Q1:--n-gpu-layers 设多少合适?
从999开始试,若启动报CUDA/显存错误,逐次减半(999→60→40→30…)直到稳定。每次调整后观察终端显示的"offloaded layers"确认实际生效层数。
Q2:参数能写进配置文件吗?
llamafile本身不读取配置文件,建议用shell脚本或批处理封装常用启动命令,把参数固化成 start.sh / start.bat。
Q3:--ctx-size 越大越好吗?
不是。KV缓存占用与上下文长度成正比,超长上下文会挤压可用内存并拖慢推理。按实际需要设置:日常聊天2048,长文档处理才需要8192+。
参数配置是"用得起"与"用得好"的分水岭:性能类参数决定快慢,内存类参数决定稳不稳,质量类参数决定输出风格,服务类参数决定怎么接入。按本节的三套模板起步,再用决策速查表迭代,即可把Llamafile调到你硬件的最优状态。下一章将进入核心模块,拆解模型加载与量化背后的机制。
关键词:Llamafile, 参数配置, GPU卸载, 上下文长度, 温度调优, 性能优化
难度:入门~进阶
预计阅读:20分钟