环境准备:安装 llama.cpp、编译工具链、Python 依赖库
好,咱们正式开始动手。这一章说白了就是搭积木——把后面所有实验要用到的工具全部装好。我个人习惯先把环境理清楚再往下走,不然写到一半发现缺个库,那感觉就像炒菜到一半发现没盐,挺难受的。
咱们要装的东西分三块:llama.cpp 本体、C++ 编译工具链、以及Python 依赖库。一个一个来。
1. 安装 llama.cpp
llama.cpp 是目前 GGUF 量化的事实标准工具。它用 C++ 写的,性能很好,而且支持各种量化方案。我建议直接从 GitHub 拉源码编译,这样最可控。
核心思路:git clone → cmake 配置 → make 编译。三步走完,你就能拿到 quantize、main、server 等核心可执行文件。
先打开终端,找个你喜欢的目录(比如 ~/workspace),然后执行:
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
mkdir build && cd build
cmake ..
make -j$(nproc)
这里有个小细节:-j$(nproc) 是让编译用满你 CPU 的所有核心。我自己的机器是 8 核,编译大概 2 分钟就完了。如果你机器比较老,可以不加 -j 参数,慢慢等也行。
小提示:如果你在 macOS 上,记得先装 Xcode Command Line Tools。命令是 xcode-select --install。我在 M1 Mac 上试过,cmake 会自动识别 ARM 架构,编译出来的二进制跑起来很顺。
编译完成后,你会在 build/bin/ 目录下看到一堆可执行文件。其中 quantize 就是我们后面做量化的主角。main 用来跑推理,server 可以启动一个 HTTP 服务。嗯,这里先认识一下就行。
2. 编译工具链
llama.cpp 本身依赖 C++17 标准,所以你的编译器得够新。我个人推荐用 GCC 11+ 或 Clang 14+。怎么检查?
g++ --version
# 或者
clang++ --version
如果版本太低,比如 GCC 9 以下,编译时会报一些模板错误。我曾经在 Ubuntu 20.04 上踩过这个坑,默认的 GCC 9 编译 llama.cpp 会报 std::filesystem 找不到。解决办法很简单:升级 GCC。
sudo apt update
sudo apt install gcc-11 g++-11
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100
Windows 用户呢?我建议直接用 WSL2(Windows Subsystem for Linux)。在 WSL2 里装 Ubuntu 22.04,然后按上面的步骤走。纯 Windows 下用 MSVC 编译也不是不行,但坑比较多,我不推荐新手尝试。
注意:如果你用 macOS 且是 Apple Silicon(M1/M2/M3),一定要确保 cmake 配置时开启了 ARM 优化。llama.cpp 默认会检测,但为了保险,可以在 cmake 时加 -DLLAMA_METAL=ON 来启用 Metal GPU 加速。效果很明显,推理速度能快 3-5 倍。
3. Python 依赖库
虽然 llama.cpp 是 C++ 项目,但咱们后面做数据处理、模型转换、结果分析时,还是离不开 Python。我建议创建一个干净的虚拟环境,避免和系统 Python 打架。
python3 -m venv gguf_env
source gguf_env/bin/activate # Linux/Mac
# 或者 Windows: gguf_env\Scripts\activate
pip install --upgrade pip
pip install numpy pandas tqdm
pip install huggingface_hub
pip install transformers
这几个库的作用:
- numpy:处理张量数据,量化前后对比时必用
- pandas:整理实验结果,比如不同量化方案的精度对比表
- tqdm:显示进度条,下载模型或处理数据时看着舒服
- huggingface_hub:从 Hugging Face 下载原始模型
- transformers:加载模型做精度验证
我个人习惯还会装一个 matplotlib,用来画量化前后的损失曲线图。不过这不是必须的,看你自己需求。
避坑指南:我曾经在 pip install 时遇到 transformers 依赖冲突,原因是系统里有个旧版的 tokenizers。解决办法很简单:先 pip install tokenizers --upgrade,再装 transformers。如果你用虚拟环境,基本不会遇到这个问题。
知识体系总览
下面这张图帮你理清本章的核心逻辑。说白了就是三根柱子:llama.cpp 提供量化工具,编译工具链保证它能跑起来,Python 库帮我们做辅助工作。三根柱子缺一不可。
验证安装是否成功
装完之后,我建议你跑一个快速验证,确保所有工具都能正常工作。写个简单的 Python 脚本:
import numpy as np
import pandas as pd
import transformers
import huggingface_hub
print("numpy version:", np.__version__)
print("pandas version:", pd.__version__)
print("transformers version:", transformers.__version__)
# 检查 llama.cpp 的 quantize 工具
import subprocess
result = subprocess.run(["../build/bin/quantize", "--help"], capture_output=True, text=True)
if result.returncode == 0:
print("llama.cpp quantize: OK")
else:
print("llama.cpp quantize: 未找到,请检查路径")
如果所有输出都正常,恭喜你,环境已经准备好了。后面咱们就可以开始真正的量化实战了。
总结一下:这一章我们装了三个东西——llama.cpp 本体(编译出量化工具)、C++ 编译工具链(保证能编译通过)、Python 依赖库(辅助数据处理)。这三样装好,后面 90% 的实验都能跑起来。我个人建议把编译好的 llama.cpp 二进制文件路径加到 PATH 里,这样后面用起来方便。
公众号:蓝海资料掘金营,微信deep3321