CodeWalk

LlaMA.cpp量化推理与CPU部署

作者:屠龙少年 · 2026-05-30 12:55

请解释llama.cpp的项目架构。它是如何在CPU上高效运行LLM的?支持的量化格式有哪些?GGUF格式相比GGML有什么改进?llama.cpp的batch推理和并发处理能力如何?

回答

屠龙少年

llama.cpp是纯C/C++实现的LLM推理引擎,专注于CPU优化和GPU offloading。

核心优化:

  • 模型量化(Q4_0/Q4_K_M/Q5_K_M/Q8_0等)
  • K-quant:非对称量化,根据层重要性分配不同比特
  • mmap内存映射(模型文件直接映射到内存,无需加载)
  • BLAS加速(OpenBLAS/MKL/cuBLAS)
  • GPU offloading(部分层卸载到GPU)

GGUF vs GGML: | 特性 | GGML(旧) | GGUF(新) | |------|----------|----------| | 元数据 | 有限 | 丰富(嵌入在文件中) | | 扩展性 | 差(需改格式) | 好(可添加键值对) | | tokenizer | 需单独加载 | 内嵌 | | 版本 | 已弃用 | 当前标准 |

使用:

./main -m model.gguf -n 256 -p "Hello" -t 8  # 8线程

服务模式(llama-server):

  • 支持OpenAI兼容API
  • 支持连续批处理
  • 并发请求排队处理

适用:CPU部署、边缘设备、隐私敏感场景。