7900 XTX 上 llama.cpp Vulkan + MTP 实战:Qwen3.8-27B 跑出 63 t/s
核心结论:在 AMD Radeon RX 7900 XTX(gfx1100)上,通过自编译 llama.cpp Vulkan 后端 + MTP 投机解码,让 27B 参数的 Qwen3.8 模型在 24GB 显存内跑满 ~63 t/s。关键在于正确搭建 Vulkan 工具链,并理解 MTP 与显存 offload 策略的冲突与取舍。
硬件与软件配置
部件 型号 / 版本
CPU Intel i5-13400(10核 16线程)
内存 DDR5 32GB
显卡 AMD Radeon RX 7900 XTX 24GB(gfx1100)
GPU 驱动 RADV(Mesa 23.2.1,radeon_icd)
系统 Ubuntu 22.04(内核 6.8.0-136,glibc 2.35)
推理引擎 llama.cpp master(commit 9d57ce4,自编译 Vulkan 后端)
🧠 模型信息
项目 详情
主模型 Qwen3.8-27B-Q4_K_M.gguf(17.1 GB)
视觉编码器 mmproj-F16.gguf(928 MB)
架构 qwen35(Gated DeltaNet 线性注意力)
启动参数(Vulkan + MTP)
bash
/llama.cpp/build-vulkan/bin/llama-server
-m /models/qwen38/Qwen3.8-27B-Q4_K_M.gguf
--mmproj /models/qwen38/mmproj-F16.gguf
--spec-type draft-mtp
--spec-draft-n-max 3
-c 163840
-ub 512
--cache-type-k q4_0
--cache-type-v q8_0
--parallel 1
--host 0.0.0.0
--port 8080
--jinja
--chat-template-kwargs '{"enable_thinking": false}'
--timeout 600
--api-key '你的key'
关键参数详解
参数 说明
--spec-type draft-mtp 启用 MTP 投机解码(Multi-Token Prediction),核心提速手段
--spec-draft-n-max 3 每次最多预测 3 个草稿 token
️ 去掉 -ngl MTP 与全量 offload(-ngl 999)冲突会 OOM;去掉后显存自适应分配
-c 163840 160K 上下文(Gated DeltaNet 线性注意力,长上下文下仍省显存)
-ub 512 最大 batch 大小
--cache-type-k q4_0
--cache-type-v q8_0 KV 缓存量化(K: q4_0,V: q8_0),进一步压低显存占用
💡 核心权衡:-ngl 999 看似能把所有层塞进 GPU,但 MTP 的 nextn 预测层需要额外显存空间。全量 offload 会挤爆 24GB,导致 OOM。让 llama.cpp 自适应分配反而能跑满。
实测性能
指标 数值
生成速度 ~63 t/s(MTP 投机解码开启)
显存占用 ~23.85 GB / 24 GB(MTP nextn 层同时进 GPU)
在 24GB 显存几乎跑满的情况下仍维持 63 t/s,说明 MTP 的草稿 token 接受率与线性注意力的长上下文效率形成了很好的正反馈。
️ 构建要点(Ubuntu 22.04 自编译踩坑)
以下是编译 Vulkan 后端时最容易翻车的几个点,按优先级排列:
-
glslc 必须从 shaderc 源码编译
Ubuntu 22.04 官方仓库没有 glslc,需从 shaderc 源码编译「真」glslc。
需包含 glslang 16.x,以匹配系统 gcc 11 的 ABI。 -
别用 conda-forge 的 glslcconda-forge 版本用 gcc 14 构建,在 22.04 上编译复杂 shader 时会段错误(exit 139)。
-
Vulkan-Headers 需升级到最新
llama.cpp 最新 master 使用 Vulkan 1.4 API。
系统默认的 Vulkan-Headers 1.3.204 不够用,必须更新到最新版本。
️ 易漏点:别漏掉 vk_video/ 子目录,否则链接失败。 -
CMake 目标名是 glslc_exe
编译 shaderc 时,CMake 目标名是 glslc_exe 而非 glslc。写错目标名会导致构建找不到可执行文件。
一句话总结
在 gfx1100 的 24GB 大显存上,MTP 投机解码 + KV 量化 + 去掉强制 -ngl 三招组合,让 27B 模型在显存吃紧的极限下依然跑出 63 t/s 的可用速度。搭建 Vulkan 工具链时,源码编译 glslc(gcc 11 ABI)+ 升级 Vulkan-Headers 1.4 是绕不开的两大硬门槛。

