Qwen3.8-27B ROCmFP4 在 Strix Halo 上的配置优化与工具调用兼容性反馈

#4
by chandlerma - opened

Qwen3.8-27B ROCmFP4 在 Strix Halo 上的配置优化与工具调用兼容性反馈
提交对象:julianmb(模型卡作者)
提交人:doorwayer / chandlerma
日期:2026-09-28
硬件:AMD Ryzen AI Max+ 395 / Radeon 8060S / gfx1151 / 128GB UMA
系统:Fedora 43,Mesa 25.3.6(RADV GFX1151),Vulkan 1.4.328
引擎:ROCmFPX fork c49ebdb,Vulkan0 后端

  1. 背景
    基于你的 Qwen-3.8-27B-ROCmFP4-FAST-GGUF 模型卡,我们在 Strix Halo 上进行了独立复现测试,并针对实际使用场景(Kilo Code 本地 vibe coding)做了定制调整。以下是完整的测试数据与配置建议。

  2. 基础配置复现
    2.1 文件校验
    文件 SHA256 来源
    Qwen3.8-27B-ROCmFP4-FAST.gguf fb89c78d...da9 ✅ julianmb
    mmproj-Qwen3.8-27B-BF16.gguf de2a4986...fe8 ✅ kingjones777
    2.2 复现的基准配置
    yaml
    -c 262144 --parallel 1 -np 1
    -ngl 999 -fa on --no-mmap -t 8
    -b 8192 -ub 2048
    --reasoning off
    --spec-type draft-mtp --spec-draft-n-max 6 --spec-draft-p-min 0.60
    -ctk q8_0 -ctv q8_0
    -dev Vulkan0
    env: HSA_OVERRIDE_GFX_VERSION=11.5.1 GGML_HIP_ENABLE_UNIFIED_MEMORY=1 GGML_VK_FORCE_MMVQ=1

  3. 实测数据
    3.1 与官方基准对比
    配置 官方标称 我们的实测 差异
    n6/p0.60(短代码 512 token) 30.56–34.82 t/s 40.21 t/s +15–31%
    n6/p0.60(长代码 1500 token) 同上 42.67 t/s +22–40%
    接受率 未标 75.0–81.0% —
    3.2 n-max 深度扫描
    n-max p-min Decode tps 接受率
    3 0.60 36.95 90.1%
    4 0.60 37.75 84.8%
    6 0.60 38.20–42.67 72.9–81.0%
    7 0.35 33.79 53.7%
    结论:你的 n6/p0.60 是最优档位。n7/p0.35 在我们的环境上表现最差(接受率暴跌到 53.7%),与你的标称 36.04 t/s 不符。

3.3 KV 量化对比
KV 配置 Decode tps 接受率
-ctk q8_0 -ctv turbo4(你的推荐) 38.20 73.3%
-ctk q8_0 -ctv q8_0(我们改用) 38.20 72.9%
结论:短上下文下速度字节级相同。我们改用对称 q8_0/q8_0 以提升长上下文质量,代价是 KV 内存占用略增(262K 下约 28 GiB vs 20 GiB)。

  1. 两项定制调整
    4.1 GGML_VK_FORCE_MMVQ=1
    这是速度超过官方标称的主要原因。

我们额外设置了 GGML_VK_FORCE_MMVQ=1 环境变量,强制 Vulkan 后端在所有 batch size 下统一使用 MMVQ 量化路径。这消除了 batch-shape 切换带来的 logits 抖动,可能同时改善了 MTP 草稿的接受率。

实测增益:+15–40%(对比官方标称)。

建议:考虑在模型卡中补充这个环境变量的说明,它对 AMD RDNA 3.5 平台的 MTP 路径有可测量的正面影响。

4.2 --chat-template-kwargs '{"tool_call_format": "json"}'
这是为了解决 Kilo Code 兼容性问题。

Kilo Code 7.7.6 强制要求 OpenAI 风格的 JSON 工具调用,而 Qwen 系模型的聊天模板默认输出 XML 标签(<function=...>)。格式不匹配时,Kilo 会出现:

agent_manager 工具报 invalid arguments

连续 3 次失败后中止任务

翻译类请求被误判为 agent 任务,触发多余的文件读取和 git 命令

加入 tool_call_format: json 后,模型输出 JSON 格式的工具调用,Kilo 能正确解析。

性能影响:几乎为零(Qwen3.8-27B 波动在 37.6–42.7 t/s 区间)。

建议:如果模型卡面向本地 agent 工具用户(Kilo Code、Continue.dev 等),建议在模型卡中补充这个参数的说明。

  1. 已知限制与建议
    限制 状态 建议
    GDN 状态跨请求泄漏(#29092) 上游未修复 单轮独立请求字节级非确定;多轮对话不受影响
    单轮复杂 prompt 非确定性 2–4 种等价变体 语义等价,不影响正确性
    Kilo 300 秒硬超时 硬编码,不可配置 翻译类请求用 Ask 模式或 curl
    Kilo 工具调用格式冲突 XML vs JSON 加 tool_call_format: json 已缓解

Sign up or log in to comment