一、硬件
- CPU: AMD Ryzen 5 7500F (6核12线程, 5.08GHz, AVX-512)
- GPU: AMD Radeon RX 7900 XTX (Navi 31, 24GB GDDR6) 蓝宝石 PULSE
- 内存: 24GB DDR5
- 存储: 1TB NVMe SSD 系统: Ubuntu 26.04 LTS, Kernel 7.0
- 网络: 有线网 + ZeroTier VPN (MTU 2800)
二、软件 推理引擎: llama.cpp (Vulkan 后端)
- GPU 驱动: Vulkan RADV (Mesa 26.0.3, Vulkan 1.4.335)
- 模型: Qwen3.6-27B-Q4_K_M (16GB, 273亿参数)
- 多模态: mmproj-Qwen3.6-27B-f16.gguf (885MB)
为什么选 Vulkan RADV 而不是 ROCm? 系统自带 mesa-vulkan-drivers,零额外配置,编译时加 -DGGML_VULKAN=on 就行。对于推理来说性能足够,省去了 ROCm 的折腾。
三、启动参数
llama-server --host 0.0.0.0 --port 8080 -m Qwen3.6-27B-Q4_K_M.gguf --mmproj mmproj-Qwen3.6-27B-f16.gguf --no-mmproj-offload -ngl 999 -c 262144 -b 512 -ub 512 -fa auto -ctk q4_0 -ctv q4_0 --spec-type draft-mtp --spec-draft-n-max 2 --jinja --reasoning-preserve
参数说明: -ngl 999: 所有模型层 offload 到 GPU -c 262144: 上下文窗口 262K tokens -b 512 / -ub 512: 批处理大小 -fa auto: Flash Attention,减少显存占用 -ctk q4_0: Key Cache 4-bit 量化 -ctv q4_0: Value Cache 4-bit 量化 --spec-type draft-mtp: MTP 推测解码 (Multi-Token Prediction) --spec-draft-n-max 2: 每步推测 2 个 token --no-mmproj-offload: 视觉编码器放 CPU 省显存 --jinja: Jinja 模板,适配 Qwen 格式 --reasoning-preserve: 保留推理链标记
显存占用: 模型权重 ~16.0 GB + KV Cache ~2.5 GB + 引擎 ~1.5 GB + 系统 ~1.0 GB 实际使用 23.3 GB / 24.0 GB,剩余 0.7 GB
四、测速方式
- 测速题目:生成1000字解释TCP/IP协议 Prompt: 61 tokens,max_tokens: 2048,temperature: 0.7
测试分为两组:
- 非流式请求 — 端到端完整生成,读取 llama.cpp 内置 timings
- 流式请求 — 逐 token 记录时间戳,测量 TTFT 和生成间隔分布
数据来源:
- 推理速度取自 llama.cpp 内部计时(排除 HTTP/网络开销)
- 流式数据通过 Python 逐 chunk 解析 time.time() 差值
- 长上下文 prefill 数据来自 server log
- GPU 温度/显存从 sysfs hwmon 读取
网络测试:
- Loopback TCP 吞吐量测试(10MB 数据)
- Ping 网关延迟测试(10 次)
- 内存带宽测试(Python array 读写 256MB)
五、测速结果
- 【非流式请求 — 完整生成 2048 tokens】 (llama.cpp 内置计时) Prompt tokens: 61 Output tokens: 2048 输出字符数: 5419 总耗时: 31.16s
- Prompt 阶段: 478.7ms (127 tok/s) Generation 阶段: 28.23s (72.5 tok/s, 13.8ms/tok) 总生成速度: 65.7 tok/s 推测解码: 1718 个 draft 生成, 1188 个被接受 (69% 接受率)
- 【流式请求 — 完整生成 2044 tokens】 TTFT (首 token): 425ms 总耗时: 29.10s 总生成速度: 71.3 tok/s 平均间隔: 14.0ms/tok
- 【长上下文 Prefill — server log】 Prefill 速度: 842 tok/s (2560 tokens, 3.04秒) 835 tok/s (4096 tokens, 4.90秒) 809 tok/s (8192 tokens, 10.13秒)
- 【短测试 — server log】 短 Prefill: 63 tok/s (12 tokens, 冷启动) 短 Generation: 91 tok/s (30 tokens, 330ms) 短 TTFT: 190ms 短 MTP 接受率: 100% (19/19 accepted, mean len 2.90)
- 【GPU 状态】(测速完成后) 温度: Edge 68°C / Junction 74°C / Memory 82°C 显存: 23.3 GB / 24.0 GB
- 【网络测试】 Loopback TCP: 55.3 MB/s Ping 网关: 0.54ms 平均,0% 丢包(0.40-0.82ms) 内存写入带宽: 26.4 GB/s 内存读取带宽: 28.8 GB/s
六、总结
- 7900 XTX 24GB + Vulkan RADV + llama.cpp + Qwen3.6-27B:
- 完整生成 66 tok/s,流式输出 71 tok/s,14ms/tok 流畅度足够
- 长上下文 Prefill 840+ tok/s(2560+ tokens 批量)
- MTP 推测解码 69% 接受率,显著加速生成
- 24GB 显存占用 23.3GB(97%),模型权重全部 offload 到 GPU, 系统内存显示 ~15GB 占用为 mmap 映射,实际物理可用 ~7GB
- 性价比较高的本地大模型方案