Llama 核心功能
核心功能
推理引擎对比
| 引擎 | 权重格式 | 擅长场景 | 取舍 |
|---|---|---|---|
| llama.cpp | GGUF | CPU / 混合推理、端侧、单机低并发、量化档位精细控制 | 高并发吞吐弱于 vLLM,需要自己编译与调参 |
| Ollama | GGUF(自动管理) | 本地开发、原型验证、桌面场景、快速换模型 | 抽象层厚,底层参数可控性不如直接开 llama.cpp |
| vLLM | HF safetensors | 在线服务、批量推理、高并发、多卡张量并行 | 显存占用高,环境依赖严格,不适合纯 CPU |
| TGI | HF safetensors | 容器化部署、与 Hugging Face 生态联动 | 部署编排更重,量化方案选择相对少 |
量化档位取舍
| 档位 | 相对体积 | 质量损失 | 建议 |
|---|---|---|---|
| Q8_0 | 最大 | 几乎无损 | 显存/内存充裕,追求近似原始效果时用 |
| Q5_K_M | 中等偏大 | 很小 | 质量与体积的稳妥折中,正式服务可优先试 |
| Q4_K_M | 中等 | 轻微但可感知 | 社区默认档,本地部署性价比最高的起点 |
| 更低档位(如 Q3 / Q2) | 最小 | 明显,长文与推理任务退化快 | 仅在硬性内存受限时考虑,需自测验收 |
自己量化一条命令即可,先把原始权重要成 GGUF 的 f16 版本,再压到目标档位:
python convert_hf_to_gguf.py ./llama-8b --outfile llama-8b-f16.gguf --outtype f16
./build/bin/llama-quantize llama-8b-f16.gguf llama-8b-Q4_K_M.gguf Q4_K_M
关键点:不要拿已经量化过的模型再量化一次,误差会叠加。要换档位就从原始 checkpoint 重新走一遍流程。
采样参数
| 参数 | 作用 | 调法 |
|---|---|---|
| temperature | 控制输出随机性,越低越确定 | 抽取式问答、代码生成调低;创意写作调高。设 0 时等价贪心解码 |
| top_p | 核采样,只从累积概率前 p 的候选里取 | 通常 0.9 上下;与 temperature 不要同时大幅调整 |
| top_k | 只保留概率最高的 k 个候选 | 作为 top_p 的补充约束,可限制离题词 |
| repeat_penalty | 惩罚已出现过的 token,抑制复读 | 出现循环输出时小幅上调;过高会导致语句破碎 |
| num_ctx | 上下文窗口大小 | 按任务最长输入设定,盲目拉满会挤爆 KV cache |
| seed | 随机种子 | 需要可复现的输出时固定,评测对比必用 |
llama.cpp 里这些参数通过命令行传入,例如 --temp 0.6 --top-p 0.9 --repeat-penalty 1.1 --ctx-size 8192;Ollama 侧写在 Modelfile 的 PARAMETER 行;vLLM 侧通过请求体的 sampling_params 或 OpenAI 兼容字段传递。

