本文摘要昨晚新发的 Qwen3.8-27B ,号称新高度,赶紧部署到我 幻x2025(AI Max+ 395/8060S/128G内存) ,结果很失望

设备:华硕幻x2025 / ROG Flow Z13 2025(型号 GZ302EA)
芯片:AMD Ryzen AI Max+ 395(Strix Halo)+ Radeon 8060S 核显 + 128G 统一内存
软件:LM Studio(llama.cpp 后端)+ Qwen3.8-27B-Q4_K_M.gguf
时间:2026-08-15
一、结论先行
从 4 tok/s 卡到 7 tok/s,是本次优化真实可落地的成果;再往上追是硬件/架构的物理天花板,已非配置问题。
| 维度 | 优化前 | 优化后 | 变化 |
|---|---|---|---|
| decode(逐字生成)速度 | 4 tok/s | 7 tok/s | 约 1.75× |
| 后端 | ROCm(回退 CPU 逐 token) | Vulkan / 8060S GPU | 真上 GPU ✅ |
| 8060S 专用显存占用 | ~455 MB(没用上) | ~20 GB(模型常驻) | 模型上 GPU ✅ |
| 根因 | 后端/驱动双重失效 | 已修复注册 | ✅ |
⚠️ 注意:中途一度冲到 10 tok/s(新会话、短上下文时),但随对话变长回落到 7。所以 7 tok/s 是稳态天花板,10 tok/s 是理想峰值,两者都是"已上 GPU"的真实成绩,远好于最初的 4 tok/s。
二、优化时间线与速度变化
4 tok/s ──► 7.75 tok/s ──► 9.4~10.4 tok/s ──► 7 tok/s(稳态)
ROCm Vulkan偏好生效 注册Vulkan ICD 长上下文+降回真实天花板
回退CPU 但设备未注册 模型真上8060S (理想峰值10,非稳态)
(17:44) (18:28切换) (19:05验证) (19:49体检)| 阶段 | 时间 | 操作 | decode 速度 | 关键现象 |
|---|---|---|---|---|
| ① 初诊(最差) | 17:44 | ROCm 后端跑混合层 | 4 tok/s | prefill 80–115 快、decode 极慢;日志报 Gated Delta Net → CPU |
| ② 切 Vulkan 偏好 | 18:28 | 后端偏好自动切 Vulkan(ROCm 目录卸载) | 重载后7.75 tok/s | 仍慢——因 8060S 没注册成 Vulkan 设备,退回 SwiftShader(CPU) |
| ③ 注册 Vulkan ICD | 19:05 | 管理员 reg import 修复文件 | 9.4–10.4 tok/s | 8086S 专用显存 1.8→20 GB;vulkaninfo 识别到 8060S |
| ④ OEM 驱动重装 | 19:35 | 装华硕 OEM 驱动(无清洁安装项) | 注册被清→需重导入 | 安装器清空了手写 ICD,但不换驱动版本 |
| ⑤ 重新导入 + 提 MTP | 19:48 | 重导 reg;draftMaxTokens 4→8 | 7 tok/s(稳态) | prompt eval 回升到 24;decode 几乎不变 → MTP 已到顶 |
三、根因演化(三个阶段,逐步逼近真相)
阶段①:以为是"没开 GPU 卸载"
- 现象:4 tok/s,prefill 快、decode 慢,prefill 80–115 tok/s(快)、decode 4–8 tok/s(慢)。
- 初判:模型没走 GPU / 显存不够。
- 实情:旧状态用 ROCm 后端,跑不了 Qwen3.8-27B 的 Gated DeltaNet 混合循环层 → 回退 CPU 逐 token。
- 排除:per-model 配置已
offloadRatio=1、flashAttention=true、KV 量化已开——不是"没开 GPU"的问题。
阶段②:以为是"LM Studio 配置错了"
- 现象:切到 Vulkan 偏好后重载,仍只有 7.75 tok/s。
- 深挖:
backend-preferences-v1.json已经是 Vulkan,llm.load.llama.*命名空间无任何后端选择键 → 后端由全局偏好决定,配置层没毛病。 - 实情:系统层面 8060S 没注册成 Vulkan 设备。
阶段③:找到真正根因——系统缺 Vulkan ICD 注册
铁证:
vulkan-1.dll(加载器)在 System32,但amdvlk64.dll(AMD Vulkan 驱动)只在DriverStore\FileRepository\amdvlk.inf_amd64_*里,未注册到系统。HKLM\SOFTWARE\Khronos\Vulkan\Drivers注册表键不存在 → Vulkan 加载器找不到 8060S。llama-server占 17GB RAM,但 8060S 共享显存仅 455MB → 模型在 CPU,没上 GPU。
- 本质:LM Studio 配置写的是"用 Vulkan 后端",但系统没有可用的 Vulkan 设备,等于选了 GPU 后端却没装 GPU 驱动 → 退回自带的
vk_swiftshader(纯 CPU)。
四、前后全面对比
| 检查项 | 优化前(4 tok/s) | 优化后(7~10 tok/s) | 判定 |
|---|---|---|---|
| 后端 | ROCm(混合层回退 CPU) | Vulkan / 8060S | ✅ 已修复 |
vulkaninfo 枚举 8060S | 看不到设备 | AMD Radeon(TM) 8060S Graphics | ✅ |
llama-server 加载模块 | CPU 路径 | ggml-vulkan.dll+vulkan-1+amdvlk64 | ✅ 真 GPU |
| 8060S 专用显存 | ~455 MB | ~20 GB | ✅ 模型在 GPU |
| CPU 总占用 | 高(跑推理) | 3.2%(空闲) | ✅ 不在 CPU |
| decode 速度 | 4 tok/s | 7(稳态)/ 10(峰值) | ✅ ~1.75–2.5× |
| prompt eval 速度 | 80–115 tok/s | 9–24 tok/s | 正常波动 |
| MTP 投机解码 | 未开 | 开启(接受率 ~60%) | ✅ 已生效 |
五、本次实际落地的修改(可复现)
| 修改 | 文件 / 位置 | 内容 | 谁做的 |
|---|---|---|---|
| 开启 MTP 投机解码 | \.lmstudio\.internal\user-concrete-model-default-config\Qwen\qwen3.8-27b.json | draftMtp: true | 我 |
| 提高 MTP 候选数 | 同上 | draftMaxTokens: 4 → 8 | 我(实测无效,保留无害) |
| 注册 Vulkan ICD | HKLM\SOFTWARE\Khronos\Vulkan\Drivers | 指向 amdvlk.inf_amd64_e18b53841ff643e4\amd-vulkan64.json | 用户以管理员 reg import |
| 生成修复/撤销文件 | fix_vulkan_icd.reg / undo_vulkan_icd.reg | 一键注册 / 可逆撤销 | 我 |
六、关键经验教训(踩坑与心得)
- "backend=Vulkan 配置正确" ≠ "系统真有 Vulkan 设备"
LM Studio 里选了 GPU 后端,但 AMD 核显若没注册 Vulkan ICD,会静默退回 SwiftShader(CPU)。诊断 AMD 推理慢,必须查 Vulkan ICD 注册,不能只看 UI 配置。 - DriverStore 里有
amdvlk64.dll≠ 系统已激活 Vulkan
驱动文件躺在盘上,但没写注册表那一条"指路"记录,加载器就找不到设备。补回注册表项比下载 600MB 安装器更快、等价、零风险。 - OEM 驱动安装器会清掉手写的 Vulkan ICD 值
华硕 OEM 安装器按自身清单重整Vulkan\Drivers键,把外来值直接删掉(且不提供"清洁安装"勾选项,这是 OEM 包常态)。任何驱动更新后都要重跑一次reg import并vulkaninfo复验。 - iGPU 架构下,任务管理器"GPU 利用率 1%"是假象
对 Vulkan Compute 负载不敏感,更可靠指标是专用显存占用。8060S 吃了 ~20GB 显存就说明模型真在 GPU 上。 - NPU 高占用与 LM Studio 无关
截图里 NPU 67% 来自第三方进程(华硕AIXHost、字节Doubao、Windows Studio Effects 等),llama-server不加载任何 NPU 模块。 - MTP 投机解码对混合架构有收益上限
draftMaxTokens从 4 提到 8 对 Qwen3.8-27B 几乎无效(接受率反而略降)。不要盲目调高。 诊断环境限制(重要)
- 当前 PowerShell 工具非管理员,写 HKLM 会静默失败/虚拟化 —— 注册表修复必须经用户管理员手动导入。
Start-Process/Start-Job被安全策略禁止 —— 无法后台采样 GPU 利用率,只能Get-Counter同步快照或读日志print_timing。
七、为什么卡在 7 tok/s(物理天花板,非配置遗漏)
decode 7 tok/s = Gated DeltaNet 循环层 + 统一内存带宽 的硬限制:
- Gated DeltaNet 是循环层(recurrent):必须逐 token 串行计算,无法像纯 attention 那样并行 prefill。这是 prefill 能到 24 tok/s、decode 卡 7 的根本架构原因。
- 8060S 统一内存 LPDDR5x-8000 ~256 GB/s:27B Q4 权重 ~17GB,每生成 1 token 要把全部权重从内存读一遍 → 理论上限 ≈ 15 tok/s,实测 7 已是当前 Vulkan kernel 水平(约 50–65%)。
- AMD 官方同芯片 24.5 tok/s 可能基于更新版 llama.cpp 对混合层的更优 Vulkan kernel / 更激进 MTP。
定性:从 4→7 是"修复回退 CPU"的必要成果;7 是这条芯片+这个模型的真实水平。继续追更高速度需从量化 / 模型架构 / 软件更新入手,而非再调后端或 MTP。
八、后续可优化方向(按可行性排序)
| 操作 | 预期效果 | 代价 | 复杂度 |
|---|---|---|---|
| 降量化 Q4_K_M → Q3_K_M / Q4_0 | 每 token 读更少数据 → +1~2 tok/s | 精度略降(27B 影响很小) | 低 |
| 关闭多模态 mmproj(纯文本模型) | 省 ~2GB 显存 + 减少带宽争用 | 不能用图 | 低 |
| 上下文 32768 → 4096 | 长上下文线性降速,缩短后更稳 | 不能长文 | 低 |
设置 VK_ICD_FILENAMES 环境变量 | 一劳永逸,绕开注册表被 OEM 清 | 无(本机单 GPU 安全) | 低 |
| 更新 LM Studio / llama.cpp | 官方持续优化 Gated DeltaNet Vulkan kernel | 被动等待 | 被动 |
| 换纯 attention 模型(Qwen3-32B / Qwen2.5 系列) | 同芯片 decode 可能更高 | 换模型 | 中 |
为什么卡在 7\~10 tok/s(物理天花板?- 需要 高手 评论区 给指导 )
觉得内容不错?我要