目录
[■CPU 版本编译](#■CPU 版本编译)
[■GPU 加速编译(ROCm)](#■GPU 加速编译(ROCm))
[■针对特定 AMD GPU 架构优化](#■针对特定 AMD GPU 架构优化)
[■使用 CMake 的详细配置](#■使用 CMake 的详细配置)
■环境准备
-
系统要求
Ubuntu/Debian 系统依赖
sudo apt update sudo apt install -y build-essential git cmake wget
可选:安装 ROCm(如果需要 GPU 加速)
sudo apt install -y rocm-dev rocm-utils
-
获取源代码
克隆官方仓库
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
■CPU 版本编译
- 基础编译
bash
# 创建构建目录
mkdir build cd build
# 配置 CMake
cmake .. -DLLAMA_NATIVE=ON
# 编译
make -j$(nproc)
# 或者使用简化方式
cd .. # 回到项目根目录
make
- 高级编译选项
bash
# 启用 AVX/AVX2 支持(AMD CPU 通常支持)
make LLAMA_AVX=1 LLAMA_AVX2=1
# 启用 AVX512(如果 CPU 支持)
make LLAMA_AVX=1 LLAMA_AVX2=1 LLAMA_AVX512=1
# 启用 FMA 支持
make LLAMA_FMA=1
# 启用所有优化
make LLAMA_NATIVE=ON
■GPU 加速编译(ROCm)
- 安装 ROCm 依赖
bash
# 确保 ROCm 已正确安装
rocm-smi # 检查 ROCm 状态
# 安装额外依赖
sudo apt install -y hip-devices-rocm miopen-hip-rocm rccl-rocm
- 编译支持 GPU 的版本
bash
# 使用 CMake 配置
mkdir build-gpu cd build-gpu
# 配置 ROCm 支持
cmake .. -DLLAMA_HIPBLAS=ON -DCMAKE_C_COMPILER=hipcc -DCMAKE_CXX_COMPILER=hipcc -DAMDGPU_TARGETS=gfx900,gfx906,gfx908,gfx1030
# 编译
make -j$(nproc)
- 简化的 GPU 编译方式
bash
# 在项目根目录下
make LLAMA_HIPBLAS=1
■针对特定 AMD GPU 架构优化
- 查询 GPU 架构
bash
# 查看 AMD GPU 架构
rocminfo | grep gfx
# 或者使用
rocm-smi --showhw
- 针对特定架构编译
bash
# 针对 RDNA2 架构 (gfx1030)
make LLAMA_HIPBLAS=1 AMDGPU_TARGETS=gfx1030
# 针对 RDNA3 架构 (gfx1100, gfx1101, gfx1102)
make LLAMA_HIPBLAS=1 AMDGPU_TARGETS=gfx1100,gfx1101,gfx1102
# 针对 CDNA 架构 (数据中心 GPU)
make LLAMA_HIPBLAS=1 AMDGPU_TARGETS=gfx908,gfx90a
■使用 CMake 的详细配置
bash
# 创建构建目录
mkdir build-amd cd build-amd
# 完整的 CMake 配置示例
cmake .. -DCMAKE_BUILD_TYPE=Release -DLLAMA_NATIVE=ON -DLLAMA_HIPBLAS=ON -DLLAMA_AVX=ON -DLLAMA_AVX2=ON -DCMAKE_C_COMPILER=hipcc -DCMAKE_CXX_COMPILER=hipcc -DAMDGPU_TARGETS=gfx1030,gfx1100,gfx908
# 编译
make -j$(nproc)
如何确认 AMDGPU_TARGETS 值 ?
方法一:使用 rocminfo 命令
bash
# 查询 GPU 架构信息
rocminfo | grep gfx
# 更详细的输出
rocminfo | grep -A 5 "Name:"
# 示例输出:
# Name: gfx906
# Name: gfx1030
方法二:使用 rocm-smi 命令
bash
# 显示 GPU 硬件信息
rocm-smi --showhw
# 显示更详细的 GPU 信息
rocm-smi -a | grep "GPU Family"
■验证编译结果
- 检查生成的二进制文件
bash
# 查看生成的可执行文件
ls -la main quantize server
# 检查二进制文件信息
file main
# 查看依赖库
ldd main
- 测试 GPU 支持
bash
# 检查是否支持 GPU 加速
./main --help | grep -i gpu
# 查看系统信息
./main --list-gpus
■常见问题和解决方案
- 编译错误处理
bash
# 如果遇到 HIP 编译错误
export HIP_PLATFORM=amd
export HCC_AMDGPU_TARGET=gfx1030 # 根据你的 GPU 架构调整
# 如果链接错误
export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
- 性能优化设置
bash
# 设置 GPU 内存分配策略
export HSA_XNACK=1
export MIOPEN_USER_DB_PATH=/tmp/miopen
■运行测试
- CPU 推理测试
bash
# 下载模型(例如 7B 模型)
wget https://huggingface.co/TheBloke/Llama-2-7B-GGUF/resolve/main/llama-2-7b.Q4_K_M.gguf
# 运行推理
./main -m llama-2-7b.Q4_K_M.gguf -p "Hello, how are you?" -n 128
- GPU 推理测试
bash
# 使用 GPU 运行推理
./main -m llama-2-7b.Q4_K_M.gguf -p "Hello, how are you?" -n 128 -ngl 33
至此,本文的内容就结束了。