Files
qwen38-flash-next-rtx6000d/docs/mtp-tuning.md
T

62 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MTP 参数优化试验计划
基准提交:918b78a;日期:2026-09-18。当前默认 MTP 2、128K、FP8 KV、prefill batch 2048、GPU memory utilization 0.985、单活动请求。
## 顺序与固定变量
1. 保存当前 Compose 和运行状态。首先在当前配置跑筛选集,获得本轮对照。
2. 分别仅把预测步数改为 1、3Graph capture sizes 随验证长度改为 [1,2]、[1,4]。保持官方镜像 digest、模型 revision、128K、视觉编码器、FP8 KV、显存预算和并发不变。
3. 对最合适的步数,仅把 max-num-batched-tokens 从 2048 改到 1024,再跑同一筛选集。
4. 候选若有明确收益,补做完整套件,包括 16384-token 输出和至少 600 秒混合负载,及 xhigh/medium 质量题。只有通过后才替换默认;否则恢复原 MTP 2。
## 筛选集
沿用 qualification.py 的算术、JSON、多轮、2048×1536 OCR、多图、120 秒视频、三类各三次 2048-token 输出、接近 128K 检索、长文本加图片及排队请求。筛选阶段跳过 16384-token 单次长输出及持续负载,完整阶段再补足。另运行 medium 正常 EOS 质量题,包括生成代码的固定测试。
记录:模型和 KV 显存、KV 容量、MTP 接受率、TTFT、解码速度、请求总耗时、错误、OOM、温度和输出正确性。不同输出文本不声称质量等价;固定长度只作为吞吐测试。缓存状态影响长输入,分别记录首次和重复结果,不宣称未控制缓存状态的冷启动对照。
## 判定
- 任一功能/质量回归、OOM、服务退出:不提升为默认,保存失败证据。
- 启动要求仍能容纳 128K,不通过降低上下文或关闭视觉让候选通过。
- 同类计时三次中位数;约 5% 以内变化视为证据不足,优先保留原配置。
- 选择综合收益,不只取峰值速度。步数增加但速度下降、首 token 明显恶化或缓存更少,应记录并拒绝。
- batch 1024 仅在 KV/长上下文或显存收益可见、且生成速度没有明显下降时进入完整验证;如纯粹降低 prefill 吞吐则恢复 2048。
- 不再提高 0.985 显存比例,不增加并发。实验中关闭自动重启,避免失败循环加载;正式配置使用 unless-stopped。
状态:四组筛选完成,各 44 条记录通过;默认配置保持不变。所有回执存入 audit/tuning/,旧验收证据保留。
## 步数筛选的中间结论
三类各 3 次 2048-token 计时,中位数 token/s
| 步数 | 代码 | 中文 | 推理 |
|---|---:|---:|---:|
| 1 | 109.63 | 112.61 | 108.28 |
| 2 | 123.72 | 128.75 | 122.11 |
| 3 | 123.55 | 134.24 | 123.53 |
MTP 1 明显更慢;MTP 3 的最大提升约 4.3%,其余基本相同,未达到事先设定的约 5% 明显收益门槛。继续以 MTP 2 做 batch 1024 筛选,不因短算术请求的高速度换成 MTP 3。
## batch 1024 筛选结论
保持 MTP 2 后,KV 预算从 2.78 GiB 增至 2.96 GiB,容量从 146622 增至 155509 token(约 +6.1%)。三类解码速度基本不变,但长输入首 token 变慢:
| 请求 TTFT | batch 2048 | batch 1024 |
|---|---:|---:|
| 接近 128K 首次检索 | 14.426 秒 | 17.993 秒 |
| 相同前缀再次检索 | 0.702 秒 | 0.854 秒 |
| 长文本+图片 | 12.815 秒 | 15.955 秒 |
额外缓存没有改善本组长上下文请求,首 token 反而约慢 22%–25%。因此不将 1024 提升为默认,也不因理论上的缓存增量继续完整压力验证。未测试不同于本组的真实业务分布,不能宣称 1024 在所有场景都更差。
## 最终选择
继续保持 **MTP 2、batch 2048、128K、FP8 KV、0.985 GPU 预算、单活动请求、保留视觉能力**。MTP 1 更慢;MTP 3 长输出收益不明显且缓存更少;batch 1024 缓存略增但长输入更慢。本轮没有发现足以替代现有默认值的配置。
完整持续负载只对收益明确的候选开展。本轮候选在筛选阶段没有达到收益标准,所以保留此前已完成完整验证的配置,不将筛选测试描述成新的完整压力测试。
KV 容量补充:MTP 1/2/3 在相同 2.78 GiB KV 预算下分别为 159669 / 146622 / 137414 token。MTP 3 的 128K 余量最小,因此没有理由为最多约 4.3% 的单项计时增益替换默认步数。
验收归档:4 组各 44 条记录,共 176 条筛选/质量记录通过;两段资源监测均未发生主机 OOM 或触发保护。试验结束后配置与试验前逐字一致,容器 healthy、OOMKilled=false、restart=unless-stopped。详见 `audit/tuning/summary.json`、各组原始记录和 `audit/tuning/final-state.json`