llama.cpp AMD显卡快速部署完整指南
【免费下载链接】llama.cppLLM inference in C/C++项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp
你第一次运行llama-cli做本地推理,进度条却在加载模型前停住,日志里一行 "no GPU" 让你愣在屏幕前。别急——llama.cpp 对 AMD 显卡有两条成熟路径:ROCm 的 HIP 后端,和跨平台的 Vulkan 后端。这篇文章带你把这两条路都走通,让显存真正跑起来。
llama.cpp 对 AMD 显卡能帮你做什么
- 双后端加速:HIP 走 ROCm 官方驱动栈,性能上限高;Vulkan 走通用图形接口,驱动适配更省心,两条路二选一或互补。
- CPU+GPU 混合推理:显存放不下整个模型时,
-ngl可以把部分层留在 CPU,大模型照样能跑。 - 低比特量化:1.5 到 8 比特整数量化(把权重压缩成更省空间的整数格式)让小显存卡也能装下大模型。
- 多工具链:
llama-cli命令行对话、llama-server提供 OpenAI 兼容的 API 服务,部署方式随你挑。
动手前核对 AMD 显卡环境的五项检查
- 显卡与显存:
nvidia-smi对 AMD 无效,Linux 下用rocminfo | grep gfx | head -1(HIP 路线)或vulkaninfo(Vulkan 路线)。预期看到你的 GPU 名称和gfx架构号(如gfx1030),记住它,编译时要用。 - 驱动栈:HIP 路线确认 ROCm 已装好(
hipconfig -l有输出);Vulkan 路线在 Debian/Ubuntu 上执行sudo apt-get install libvulkan-dev glslc spirv-headers,预期vulkaninfo无报错并列出你的显卡。 - 构建工具:
cmake --version预期 3.14 以上,外加任意 C/C++ 编译器。 - 源码:
git clone https://gitcode.com/GitHub_Trending/ll/llama.cpp,预期得到含CMakeLists.txt的完整目录。 - 显存预算:模型量化文件体积 + KV 缓存(注意力中间结果)要小于显存,粗估公式是"模型文件大小 + 每 1k 上下文数百 MB"。
图注:llama.cpp 在 GPU 上的核心就是这类矩阵运算。
分步演示:从源码编译到第一次 AMD 显卡推理
选择 HIP 后端并编译(ROCm 用户)
进入仓库目录后执行:
HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" \ cmake -S . -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1030 -DCMAKE_BUILD_TYPE=Release \ && cmake --build build --config Release -- -j 16- 预期反馈:
build/bin/下生成llama-cli等可执行文件,GPU_TARGETS换成你第一步查到的架构号(如 RX 7000 系列用gfx1100)。 - 若不对:报
cannot find ROCm device library时,在HIP_PATH下找到含oclc_abi_version_400.bc的目录,在命令前加HIP_DEVICE_LIB_PATH=<该目录>重编。
选择 Vulkan 后端并编译(无 ROCm 或 Windows 用户)
cmake -B build -DGGML_VULKAN=1 cmake --build build --config Release- 预期反馈:编译日志无 Vulkan 相关错误;注意 Linux 下用 LunarG SDK 时需先
source setup-env.sh,否则构建会失败。 - 若不对:
vulkaninfo报错就先修驱动与头文件,不要急着改编译参数。
跑通第一次推理并确认 GPU 接管
./build/bin/llama-cli -hf ggml-org/Qwen3.5-0.8B-GGUF -p "你好" -ngl 99- 预期反馈:日志出现
ggml_vulkan: Using <你的显卡名>或 HIP 设备加载信息,-ngl 99会把所有层尽量压进显存,随后看到逐词生成。 - 若不对:只看到 CPU 后端时,回到编译步骤确认
-DGGML_HIP=ON或-DGGML_VULKAN=1是否真的生效。
验证输出与基础速度
连续输入两三轮对话,观察:
- 首 token 延迟与生成是否连贯无乱码;
- 终端或系统监控里显存占用是否稳定上升后持平,而非一路顶满;
- 想压测速度,可用仓库自带的 tools/llama-bench/ 跑基准,把"每秒 token 数"记下来作为后续调参的对照基线。
三个关键参数精调:llama.cpp 显存与速度怎么平衡
| 参数 | 默认值 | 推荐值 | 调大 / 调小的效果 |
|---|---|---|---|
-ngl(GPU 层数) | auto | 显存充裕时99或all | 调大=更多层进显存、生成更快;显存不够时调小,剩余层由 CPU 承接 |
-fa(Flash Attention,省显存的注意力算法) | auto | on | 开启后注意力中间缓存更省显存;个别旧驱动下若输出异常,先改off定位问题 |
-t(生成用 CPU 线程数) | -1 | 物理核心数 | 混合推理时调大 CPU 分担的层更快;纯 GPU 满载时它影响有限,不必硬拉 |
另有一个常被忽略的保险开关:-fit默认on,会自动按设备显存收缩未显式设置的参数,避免你手填的-c(上下文长度)和-ngl组合直接爆显存。
高频坑点速查:AMD 显卡部署 llama.cpp 别绕弯路
- 现象:编译报
cannot find ROCm device library→可能原因:ROCm 设备库路径没传给 clang →一句话处置:定位含oclc_abi_version_400.bc的目录并设置HIP_DEVICE_LIB_PATH。 - 现象:
vulkaninfo找不到设备 →可能原因:图形驱动没装好,或 SDK 的setup-env.sh没在当前终端source→一句话处置:重装厂商驱动,每次开新终端先执行 source 再编译。 - 现象:日志只有 CPU 后端,
gfx架构报不支持 →可能原因:你的卡不在 ROCm 官方支持列表 →一句话处置:设置HSA_OVERRIDE_GFX_VERSION(RDNA2 用10.3.0,RDNA3 用11.0.0),或直接改走 Vulkan 后端。 - 现象:加载到一半报显存不足退出 →可能原因:
-ngl与上下文长度叠加超出显存 →一句话处置:调小-ngl或-c,让-fit自动兜底。 - 现象:多卡时层分配不均、某张卡跑满 →可能原因:默认按层切分未匹配你的双卡显存比例 →一句话处置:用
-sm row与-ts 显存比例重新划分,细节见 docs/multi-gpu.md。
落地建议与延伸:让 llama.cpp 长期稳定跑在 AMD 显卡上
- 固定一套已验证的配置:把跑通的编译参数和
-ngl/-fa/-t组合记到本地笔记,升级驱动前先备份它,出问题好回滚。 - 每次升级 ROCm 或驱动后回归测试:重跑一次
llama-bench,token/s 掉得明显就先查日志再查参数。 - 深入后端细节读官方构建文档:docs/build.md 里 HIP 与 Vulkan 两节覆盖了各发行版差异、Docker 方案和 Windows 工具链配置。
兼容性调试往往是一步一步逼近的过程,每一次报错都在缩小范围。跑通第一次生成的那一刻你会发现,AMD 显卡上的本地推理,比你想象中离你更近。
【免费下载链接】llama.cppLLM inference in C/C++项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考