Ubuntu 下 llama.cpp 编译与性能调优实战
llama.cpp 作为轻量级 LLM 推理框架,在本地部署中表现优异。下面分享一套完整的编译与优化方案,涵盖从基础环境搭建到高级性能调优的关键步骤。
环境准备与基础编译
开始之前,确保系统满足基本要求。Ubuntu 22.04 LTS 是最推荐的版本,软件包支持稳定且兼容性好。
首先更新系统并安装必要的开发工具:
sudo apt update && sudo apt upgrade -y
接着安装构建依赖,包括编译器、CMake 和 Git:
sudo apt install -y build-essential cmake git curl libcurl4-openssl-dev
如果希望使用 CUDA 加速,还需要安装 NVIDIA 驱动和 CUDA 工具包:
sudo apt install -y nvidia-driver-535 nvidia-cuda-toolkit
接下来获取源代码并初始化构建目录:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build && cd build
基础编译配置使用 CMake 完成。对于纯 CPU 环境,推荐以下配置:
cmake .. -DLLAMA_CURL=ON -DBUILD_SHARED_LIBS=OFF
提示:
-DLLAMA_CURL=ON启用了 HTTP 支持,-DBUILD_SHARED_LIBS=OFF创建静态链接库,便于后续部署。
编译过程可以使用多线程加速,这能显著缩短等待时间:
cmake --build . --config Release -j $(nproc)
编译完成后,主要生成以下可执行文件:
| 文件名 | 功能描述 |
|---|---|
| main | 命令行推理主程序 |
| server | HTTP 服务接口 |
| quantize | 模型量化处理工具 |
| perplexity | 困惑度评估工具 |
性能调优关键点
编译只是第一步,实际运行时的性能往往取决于参数配置。在调用 main 或 server 时,有几个核心参数值得注意:
- GPU 层数 (
-ngl):这是影响速度的关键。设置-ngl 999可以尽可能将模型层卸载到 GPU,但需确保显存充足。 - 批处理大小 (
-t):线程数通常设为物理核心数,但在多任务场景下适当减少可避免上下文切换开销。 - 内存映射 (
-mmap):当显存不足时,开启内存映射可以将部分数据加载到系统内存,虽然速度稍慢但能防止 OOM。
这些调整需要根据硬件情况灵活权衡,建议先在测试集上验证效果再投入生产。

