ROCm 10 配 llama.cpp 在双卡 R9700 上跑通 Qwen3-27B,启用 MTP 提速明显
Reddit 用户实测 ROCm 10 + llama.cpp 在双 AMD R9700 上运行 Qwen3-27B Q…
Reddit 用户 hurdurdur7 在 r/LocalLLaMA 板块分享了一次端到端实测:在 AMD 最新 ROCm 10 环境下,用 llama.cpp 加载 Qwen3-27B(Q8_K_XL 量化版本),跑在两块 R9700 显卡上,整体无需额外 patch 或绕过手段即可工作。文本生成阶段吞吐稳定在 37–50 tg/s,在写代码这类任务中可瞬时冲到 60 tg/s 以上;启用 llama.cpp 的 MTP(multi-token prediction)投机解码后,相比 ROCm 官方 docker 镜像中的默认版本还可再获得约 5–10% 的性能提升。
运行环境与构建步骤
作者以 ROCm 10.0.0-full 官方 Docker 镜像(rocm/dev-ubuntu-24:10.0.0-full)为底,在容器内补装 git、cmake 后从 GitHub 拉取最新版 llama.cpp,并按官方 HIP 构建文档编译。运行前需要手动指定 ROCm 核心库路径:
export LD_LIBRARY_PATH=/opt/rocm/core-10.0/lib/
启动 llama-server 时加载的模型为 Hugging Face 上的 unsloth/Qwen3.8-27B-GGUF:Q8_K_XL,启用张量并行(-sm tensor),上下文长度设为 255000,KV 缓存分别用 f16,并开启 Flash Attention(-fa 1)。
关键推理参数与 MTP 配置
请求侧使用的核心参数:
- 温度 0.8、top-p 0.95、top-k 20、min-p 0
- 批大小
-b 1024、-ub 1024,线程数-t 7 - 投机解码开关:
--spec-type draft-mtp --spec-draft-n-max 3 - 对话模板保留思考:
--chat-template-kwargs '{"preserve_thinking": true}' - 上下文检查点:
-ctx-checkpoints 4 --checkpoint-min-step 1024
amd-smi 显示每张卡占用约 27 GB 显存,作者据此判断仍有进一步拉高上下文的余量。
实测吞吐与投机解码效果
作者让模型写一段带 insert/update/delete 的 JavaScript 二叉树实现。从 llama.cpp 服务端日志可以看到,文本生成吞吐(tg)在 40–52 tg/s 区间波动,短时平均(tg_3s)峰值多次突破 60 tg/s。最终统计:
- 提示词评估:419.12 ms / 4 tokens(≈ 9.54 tok/s)
- 文本生成:104114.81 ms / 5369 tokens(≈ 51.56 tok/s)
- 投机解码接受率:72.147%(3673/5091),平均投机长度 3.16
也就是说,MTP 草稿大约每 3 个 token 中有 2 个被主模型接受,对吞吐的拉升起到明显作用。
小结
对于手上持有 AMD RDNA 4(R9700)平台、又不想被 CUDA-only 生态挡在外面的本地大模型用户,这条帖子提供了一个相对干净的 ROCm 10 + llama.cpp + Qwen3-27B 实操样例:默认路径即可跑通,吞吐也具备实用性。需要注意作者使用的是 X370 老主板,更好的 PCIe 通道与 CPU 平台还可能带来进一步提升。
