执行摘要
- 一句话:移除对 tiny-mixtral 的 aiter rmsnorm/MOE 禁用
- 推荐动作:该 PR 是清理性质的代码删除,值得阅读以理解之前数值问题的解决过程和 pytest hook 陷阱。对于 ROCm 平台维护者,这是及时的技术债务清理。
功能与动机
PR body 指出,在 ROCm 的 aiter 测试中,TitanML/tiny-mixtral 模型由于未训练导致 logprob 分布近乎均匀,对 bf16 舍入差异敏感。之前通过设置环境变量 VLLM_ROCM_USE_AITER_RMSNORM=0 和 VLLM_ROCM_USE_AITER_MOE=0 来禁用 aiter 的 rmsnorm 和 MOE 内核以通过测试。但该禁用是通过 pytest_sessionstart 实现的,而测试套件运行时的根目录不同,导致 hook 未生效。现在 aiter 内核已修复,测试可以完全使用 aiter 通过,因此移除这些禁用标志。
实现拆解
- 在文件
tests/models/language/generation/test_common.py 的 test_models 函数中,移除了针对 TitanML/tiny-mixtral 模型的特殊处理分支。
- 该分支原本会通过
monkeypatch.setenv 设置环境变量以禁用 aiter 的 rmsnorm 和 MOE 内核。
- 现在当
use_rocm_aiter=True 且模型在 AITER_MODEL_LIST 中时,只设置 VLLM_ROCM_USE_AITER=1,不再区分模型是否 tiny-mixtral。
- 移除的代码包括 8 行注释和
monkeypatch.setenv 调用,还删除了一个针对 tiny-mixtral 的嵌套条件。
关键文件:
tests/models/language/generation/test_common.py(模块 测试;类别 test;类型 test-coverage): 这是唯一修改的文件,删除了针对 tiny-mixtral 的 aiter rmsnorm 和 MOE 禁用逻辑,共 8 行代码。
关键符号:未识别
关键源码片段
tests/models/language/generation/test_common.py
这是唯一修改的文件,删除了针对 tiny-mixtral 的 aiter rmsnorm 和 MOE 禁用逻辑,共 8 行代码。
# tests/models/language/generation/test_common.py 中 test_models 函数片段
if use_rocm_aiter and (model in AITER_MODEL_LIST):
monkeypatch.setenv("VLLM_ROCM_USE_AITER", "1")
# 移除以下代码块:
# if model == "TitanML/tiny-mixtral":
# # Untrained model: near-uniform logits make argmax sensitive to
# # AITER's bfloat16 rounding error...
# monkeypatch.setenv("VLLM_ROCM_USE_AITER_RMSNORM", "0")
# monkeypatch.setenv("VLLM_ROCM_USE_AITER_MOE", "0")
elif use_rocm_aiter and model not in AITER_MODEL_LIST:
pytest.skip(f"Skipping '{model}' model test with AITER kernel.")
评论区精华
只有一条来自 claude[bot] 的自动评论,提示 PR 来自 fork 无法自动审查。随后 AndreasKaratzas 批准了 PR,没有进一步的讨论。
- 自动审查因 fork 被禁用 (other): 无需要解决的讨论;AndreasKaratzas 随后批准了 PR,未进一步讨论。
风险与影响
- 风险:风险极低。被删除的代码之前因 pytest hook 作用域问题从未在测试中生效,因此移除不会引入回归。aiter 内核的修复已经通过测试验证(15 passed, 0 failed)。但如果 aiter 内核修复不完全,tiny-mixtral 模型在特定场景下可能再次出现数值不稳定性。
- 影响:影响范围仅限于 ROCm 平台上的 tiny-mixtral 模型测试。用户不会有功能感知,测试通过数从 13 提升到 15,运行时间从 980s 缩短到 631s(减少了 35%),因为不再需要为 tiny-mixtral 回退到原生内核。
- 风险标记:暂无
关联脉络
- PR #36101 previous fix for tiny-mixtral aiter issue: PR #36101 详细分析了 tiny-mixtral 在 aiter 下的数值问题,并首次禁用了 rmsnorm。
- PR #45509 disable MOE for aiter tiny-mixtral: PR #45509 在 #36101 基础上额外禁用了 MOE 内核以解决 tiny-mixtral 的数值问题。
- PR #31597 torch sdp changes for aiter: PR #31597 因 tiny-mixtral 测试不准确引入了 torch sdp 相关更改,与本次清理的数值问题相关。
参与讨论