简介
大模型发展日新月异,推理性能始终是落地的关键瓶颈。llama.cpp 作为一个轻量级、低依赖的 C/C++ 实现,解决了在 CPU 甚至无 GPU 环境下运行 LLaMA 模型的难题。它支持广泛的硬件后端(AVX、Metal、CUDA、Vulkan 等),并提供多种量化方案来平衡速度与精度。
相比传统的 Python 框架,llama.cpp 的优势在于纯粹的 C/C++ 实现,没有外部依赖,且支持 CPU+GPU 混合推理,能够突破显存限制。此外,它还内置了服务化组件,可直接对外提供 API。
环境安装
首先克隆仓库并进入目录:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
构建 GPU 执行环境前,请确保已安装 CUDA 工具包。若 nvidia-smi 和 nvcc --version 无报错,则环境配置正确。
使用以下命令编译(注意空格):
mkdir build
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j4
cd build
make install
当前版本中,部分指令已重命名为 llama-quantize、llama-cli 和 llama-server。建议建立软链接以便调用:
ln -s /path/to/llama.cpp/build/bin/llama-quantize ./llama-quantize
ln -s /path/to/llama.cpp/build/bin/llama-server ./llama-server
ln -s /path/to/llama.cpp/build/bin/llama-cli ./llama-cli
模型转换流程
我们将以 PTH 格式模型为例,演示如何将其转换为 llama.cpp 可用的 GGUF 格式。
1. 原始模型处理
首先需要准备高版本的 Python 环境(3.10+)及相关依赖:
pip install protobuf==3.20.0 transformers sentencepiece peft
下载原版 LLaMA 权重和 tokenizer 文件。如果官方下载受限,可使用社区提供的资源或脚本自动下载。下载完成后,目录结构通常如下(以 7B 为例):
├── llama-7b
│ ├── consolidated.00.pth
│ ├── params.json
│ └── checklist.chk
└── tokenizer.model
2. 转为 HuggingFace 格式
为了兼容性,建议先将原始 PTH 模型转换为 HF 格式。可以使用 Transformers 库提供的转换脚本:
git clone https://github.com/huggingface/transformers.git
cd transformers
python src/transformers/models/llama/convert_llama_weights_to_hf.py \
--input_dir /workspace/pth_model/7B \
--model_size 7B \
--output_dir /workspace/hf_data
输出目录将包含 config.json、 等标准 HF 文件。


