执行摘要
- 一句话:Kimi-K3 在 ROCm 上默认启用 V2 model runner
- 推荐动作:建议阅读。该 PR 虽然代码量极小,但揭示了 V2 model runner 在特定平台与并发场景下的性能差距,值得关注后续的性能优化与回归复测。对维护者而言,应尽快为 ROCm + Kimi-K3 + V2 runner 建立自动化性能基准或测试,避免回归再次流入。
功能与动机
PR body 说明:Kimi-K3 on ROCm was gated from using V2 model runner. After validation using the up-to-date upstream. V2 model runner is working as expected. 即此前 ROCm 上 Kimi-K3 被显式排除在 V2 runner 之外,作者经验证认为 V2 runner 已可正常工作,因此解除 gating。
实现拆解
- 删除平台专属排除常量:在
vllm/config/vllm.py 中移除 ROCM_EXCLUDED_V2_MODEL_RUNNER_ARCHITECTURES(原 frozenset 仅包含 KimiK3ForConditionalGeneration)。
- 简化架构选择函数:
default_v2_model_runner_architectures() 移除 from vllm.platforms import current_platform 延迟导入及 current_platform.is_rocm() 分支,直接返回 DEFAULT_V2_MODEL_RUNNER_ARCHITECTURES,让所有平台的默认 runner 选择逻辑收敛为单一集合。
- 验证与回退配套:本 PR 未新增自动化测试,验证依赖手动 benchmark(lm-eval gsm8k、
vllm bench serve 多并发对比);若出现性能问题,可通过环境变量 VLLM_USE_V2_MODEL_RUNNER=0 强制回退到 V1。
关键文件:
vllm/config/vllm.py(模块 配置层;类别 source;类型 dependency-wiring;符号 default_v2_model_runner_architectures, ROCM_EXCLUDED_V2_MODEL_RUNNER_ARCHITECTURES): 唯一的变更文件,删除了 ROCm 对 Kimi-K3 使用 V2 runner 的排除逻辑,直接改变默认 runner 选择行为。
关键符号:default_v2_model_runner_architectures
关键源码片段
vllm/config/vllm.py
唯一的变更文件,删除了 ROCm 对 Kimi-K3 使用 V2 runner 的排除逻辑,直接改变默认 runner 选择行为。
DEFAULT_V2_MODEL_RUNNER_ARCHITECTURES = frozenset(
{
'DeepseekV2ForCausalLM',
'DeepseekV4ForCausalLM',
'GraniteMoeForCausalLM',
'InklingForCausalLM',
'InklingForConditionalGeneration',
'KimiK3ForConditionalGeneration', # Kimi-K3 在 ROCm 上不再被排除
'LongcatFlashNgramForCausalLM',
'Qwen2MoeForCausalLM',
}
)
@lru_cache
def default_v2_model_runner_architectures() -> frozenset[str]:
# 原实现会按平台剔除 ROCM_EXCLUDED_V2_MODEL_RUNNER_ARCHITECTURES,
# 本 PR 删除该剔除逻辑,使 ROCm 与其它平台行为一致。
return DEFAULT_V2_MODEL_RUNNER_ARCHITECTURES
评论区精华
核心讨论围绕 V2 与 V1 的性能差异展开:
风险与影响
- 风险:性能回退风险:在 ROCm MI355X 8 卡 TP8、低并发长 context 场景下,V2 相比 V1 有约 12% 的 decode 延迟回退,根因疑似与 AITER
cross_device_reduce_2stage 内核延迟抖动有关,尚未定位。默认行为变更:ROCm 上 Kimi-K3 的默认 runner 从 V1 变为 V2,用户未显式设置环境变量时会静默切换,可能造成线上性能波动。缺少自动化测试:本 PR 未新增针对 ROCm + Kimi-K3 + V2 runner 的回归测试,验证依赖手动 benchmark,后续回归难以被 CI 捕获。兼容性:删除平台判断后,非 ROCm 平台行为不变(本来默认 V2),但旧注释曾提及 V2 在 profile run 阶段会 fault,需确认已修复。
- 影响:影响范围集中在 ROCm 平台上运行 Kimi-K3 的用户:默认 runner 从 V1 切换为 V2,高并发吞吐基本持平,但低并发 TP8 decode 有显著延迟回退,可能影响在线推理服务。对团队的影响是需要维护
VLLM_USE_V2_MODEL_RUNNER=0 回退配置,并投入资源优化 V2 路径。代码层面,架构选择逻辑被简化,未来所有平台默认 runner 集合统一,降低了配置分支的维护成本。
- 风险标记:性能回归风险, 默认行为变更, 缺少自动化测试, 平台特定路径(ROCm)
关联脉络
- PR #46646 Kimi-K3 ROCm support (mentioned in discussion): 讨论中 yewentao256 与 tjtanaa 均提及该 PR,本 PR 是其子集。
- PR #51855 [K3] support recoverssm for K3: 同模型 Kimi-K3 的 V2 路径功能扩展。
- PR #51809 [XPU] Enable Kimi K3 KDA kernel tests on XPU: 同模型 Kimi-K3 的跨平台内核验证。
- PR #52458 [Kimi-K3][Perf] Update FlashKDA for automatic K2 V-split: Kimi-K3 性能优化,与 V2 路径性能相关。
参与讨论