【AMD平台】编译llama.cpp

发布于:2025-07-28 ⋅ 阅读:(20) ⋅ 点赞:(0)

目录

■环境准备

■CPU 版本编译

■GPU 加速编译(ROCm)

■针对特定 AMD GPU 架构优化

■使用 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 版本编译

  • 基础编译
# 创建构建目录

mkdir build cd build


# 配置 CMake

cmake .. -DLLAMA_NATIVE=ON


# 编译

make -j$(nproc)


# 或者使用简化方式

cd ..  # 回到项目根目录

make
  • 高级编译选项
# 启用 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 依赖
# 确保 ROCm 已正确安装

rocm-smi # 检查 ROCm 状态

# 安装额外依赖

sudo apt install -y hip-devices-rocm miopen-hip-rocm rccl-rocm
  • 编译支持 GPU 的版本
# 使用 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 编译方式
# 在项目根目录下

make LLAMA_HIPBLAS=1

针对特定 AMD GPU 架构优化

  • 查询 GPU 架构
# 查看 AMD GPU 架构

rocminfo | grep gfx

# 或者使用

rocm-smi --showhw
  • 针对特定架构编译
# 针对 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 的详细配置

# 创建构建目录

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 命令

# 查询 GPU 架构信息

rocminfo | grep gfx

# 更详细的输出

rocminfo | grep -A 5 "Name:"

# 示例输出:

# Name: gfx906

# Name: gfx1030

方法二:使用 rocm-smi 命令

# 显示 GPU 硬件信息

rocm-smi --showhw

# 显示更详细的 GPU 信息

rocm-smi -a | grep "GPU Family"

验证编译结果

  • 检查生成的二进制文件
# 查看生成的可执行文件

 ls -la main quantize server

# 检查二进制文件信息

file main

# 查看依赖库

ldd main 
  • 测试 GPU 支持
# 检查是否支持 GPU 加速

./main --help | grep -i gpu


# 查看系统信息

./main --list-gpus

常见问题和解决方案

  • 编译错误处理
# 如果遇到 HIP 编译错误

export HIP_PLATFORM=amd

export HCC_AMDGPU_TARGET=gfx1030 # 根据你的 GPU 架构调整

# 如果链接错误

export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
  • 性能优化设置
# 设置 GPU 内存分配策略

export HSA_XNACK=1

export MIOPEN_USER_DB_PATH=/tmp/miopen

运行测试

  • CPU 推理测试
# 下载模型(例如 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 推理测试
# 使用 GPU 运行推理

./main -m llama-2-7b.Q4_K_M.gguf -p "Hello, how are you?" -n 128 -ngl 33

至此,本文的内容就结束了。


网站公告

今日签到

点亮在社区的每一天
去签到