0. 简介
llama.cpp 是一个专注于推理性能优化的项目,主要解决大模型在本地运行时的效率问题。其核心优势在于没有 GPU 也能运行 LLaMA 模型,具有轻量级、最小外部依赖、多平台以及广泛灵活的硬件支持。
- 纯粹的 C/C++ 实现,没有外部依赖
- 支持广泛的硬件:
- x86_64 CPU 的 AVX、AVX2 和 AVX512 支持
- 通过 Metal 和 Accelerate 支持 Apple Silicon(CPU 和 GPU)
- NVIDIA GPU(通过 CUDA)、AMD GPU(通过 hipBLAS)、Intel GPU(通过 SYCL)等
- GPU 的 Vulkan 后端
- 多种量化方案以加快推理速度并减少内存占用
- CPU+GPU 混合推理,以加速超过总 VRAM 容量的模型
llama.cpp 提供了模型量化的工具,可以将模型参数从 32 位浮点数转换为 16 位浮点数,甚至是 8、4 位整数。除此之外,llama.cpp 还提供了服务化组件,可以直接对外提供模型的 API。
1. llama.cpp 环境安装
克隆仓库并进入该目录:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
构建 GPU 执行环境,确保安装 CUDA 工具包,适用于有 GPU 的操作系统。
如果 CUDA 设置正确,那么执行 nvidia-smi、nvcc --version 没有错误提示,则表示一切设置正确。
mkdir build
sudo apt-get install make cmake gcc g++
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j4
cd build
make install
在当前版本(截至 2024 年 11 月 10 日)这些指令分别被重命名为 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
2. LLAMA 模型转换
这里我们会从 pth 开始,一步步给出我们怎么将模型应用到 llama.cpp 中的。
2.1 pth 原始模型处理
首先安装高版本 python 3.10。
pip install protobuf==3.20.0
pip install transformers
pip install sentencepiece
pip install peft
2.1.1 下载模型权重
下载原版 LLaMA 模型的权重和 tokenizer.model 文件。如果嫌从官方下载太麻烦,网上也有一些泄露的模型版本可以直接下载。
社区里也有人制作了种子,可以使用 BitTorrent 下载,磁链地址为 magnet:?xt=urn:btih:ZXXDAUWYLRUXXBHUYEMS6Q5CE5WA3LVA&dn=LLaMA。
压缩包内文件目录如下(LLaMA-7B 为例):
├── llama-7b
│ ├── consolidated.00.pth
│ ├── .json
│ └── checklist.chk
└── tokenizer.model


