4、编译环境搭建:Linux环境准备、依赖库安装、llama.cpp源码编译

好,咱们进入第四章。说实话,这一章是整个量化工具链的「地基」。地基没打好,后面跑模型、做量化,全是坑。我自己刚入行那会儿,就因为在CUDA版本上偷了个懒,结果折腾了整整两天——嗯,从那以后我再也不敢在环境搭建上马虎了。

这一章,我带你一步步把Linux环境、依赖库、还有llama.cpp的编译全部搞定。你跟着我的节奏来,基本不会出问题。

4.1 Linux环境准备:选对发行版,少走弯路

我个人习惯用Ubuntu 20.04 LTS或22.04 LTS。为什么?因为社区支持最好,遇到问题随便一搜就有答案。CentOS也行,但包管理器的体验嘛……你懂的。

这里有几个硬性要求,你对照着检查一下:

项目 最低要求 推荐配置
操作系统 Ubuntu 20.04 Ubuntu 22.04 LTS
内核版本 5.4+ 5.15+
磁盘空间 50GB 200GB+(模型文件很占地方)
内存 16GB 32GB+
GPU显存 8GB 24GB+(跑大模型量化时有用)
小提示:如果你用的是云服务器,记得选「GPU计算型」实例。我踩过坑——普通实例连CUDA都装不上,白花了几百块。

4.2 依赖库安装:CMake、CUDA、OpenBLAS

依赖库安装,说白了就是给llama.cpp准备「积木」。缺一块,编译就报错。咱们一个一个来。

4.2.1 安装CMake

CMake是C++项目的构建工具。llama.cpp用它来管理编译流程。我个人建议装3.22以上版本,太老的版本有些特性不支持。

# 先更新包列表
sudo apt update

# 安装CMake
sudo apt install cmake -y

# 验证版本
cmake --version

如果系统自带的版本太低,别慌。去https://cmake.org/download/下载源码包手动编译也行。不过说实话,用apt装省心多了。

4.2.2 安装CUDA Toolkit

CUDA是NVIDIA GPU的「驱动+工具链」。你要用GPU加速量化推理,这步绕不开。

我曾经试过用conda装cudatoolkit,结果llama.cpp编译时死活找不到CUDA路径。后来我学乖了——直接用NVIDIA官方的runfile安装,一劳永逸。

# 下载CUDA 12.1(推荐版本)
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run

# 运行安装程序
sudo sh cuda_12.1.0_530.30.02_linux.run

# 配置环境变量(加到~/.bashrc里)
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH

# 验证安装
nvcc --version
注意:安装CUDA时,如果系统已经装了NVIDIA驱动,记得在安装界面取消勾选「Driver」。否则驱动冲突,你会看到黑屏——别问我怎么知道的。

4.2.3 安装OpenBLAS

OpenBLAS是高性能的线性代数库。llama.cpp在CPU推理时会用到它。说白了,就是让矩阵乘法跑得更快。

# 安装OpenBLAS
sudo apt install libopenblas-dev -y

# 验证安装
pkg-config --modversion openblas

如果你用的是ARM架构的机器(比如树莓派、Mac M系列),OpenBLAS的优化效果会更明显。我在一台ARM服务器上测过,推理速度提升了将近30%。

4.3 llama.cpp源码编译:从源码到可执行文件

好,依赖都装齐了。现在咱们来编译llama.cpp。这一步是整个环境搭建的「临门一脚」。

4.3.1 克隆源码

git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

我个人习惯用master分支的最新代码。但如果你追求稳定,可以切到某个release版本,比如b2270

4.3.2 编译配置

llama.cpp用CMake管理编译。你可以选择纯CPU模式,也可以开启GPU加速。我建议你两种都试试,感受一下性能差异。

纯CPU编译:

mkdir build && cd build
cmake ..
make -j$(nproc)

开启CUDA加速编译:

mkdir build && cd build
cmake .. -DLLAMA_CUBLAS=ON
make -j$(nproc)
关键参数说明:
  • -DLLAMA_CUBLAS=ON:启用CUDA加速
  • -DLLAMA_METAL=ON:苹果M系列芯片用这个
  • -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS:启用OpenBLAS优化
  • -j$(nproc):用所有CPU核心并行编译,速度翻倍

4.3.3 验证编译结果

编译完成后,在build/bin目录下会生成一堆可执行文件。咱们最常用的是这几个:

可执行文件 用途
main 模型推理主程序
quantize 模型量化工具
server HTTP API服务器
perplexity 困惑度评估工具

你可以跑一下./main --help,看看能不能正常输出帮助信息。能输出,就说明编译成功了。

避坑指南:我曾经在编译时忘了加-j$(nproc),结果单线程编译等了快40分钟。你想想看,要是每次编译都这么慢,那得多耽误事。所以,一定要用并行编译

4.4 本章知识体系总览

为了让你更直观地理解这一章的内容结构,我画了一张流程图。你可以把它当作「环境搭建路线图」。

编译环境搭建流程 1. Linux环境准备 2. 依赖库安装 CMake CUDA Toolkit OpenBLAS 3. llama.cpp源码编译 4. 验证编译结果 图4-1 编译环境搭建流程示意图

这张图把整个流程串起来了。你从Linux环境开始,一步步装好依赖,最后编译llama.cpp并验证。每一步都有对应的操作和检查点。

好了,环境搭建就讲到这里。你跟着操作一遍,应该不会有什么大问题。如果遇到报错,先检查依赖版本对不对,再确认环境变量有没有配好——90%的问题都出在这两个地方。


公众号:蓝海资料掘金营,微信deep3321