执行摘要
- 一句话:为AMD CI跳过MLA FP8测试中的确定性推理标志,修复CI失败。
- 推荐动作:该PR值得快速浏览,以了解如何优雅处理跨平台CI测试中的后端差异。重点关注条件逻辑的设计,它展示了在存在上游bug时如何临时绕过问题而不破坏现有功能。对于涉及多后端支持的团队,这是一个实用的模式。
功能与动机
PR #23303添加的--enable-deterministic-inference标志在NVIDIA上工作正常,但在AMD CI分区(stage-b-test-1-gpu-small-amd)上导致服务器启动失败,错误为:'ValueError: Currently only ['flashinfer', 'fa3', 'triton'] attention backends are supported for deterministic inference, but you explicitly specified 'aiter'.'。根本原因是ROCm后端存在三个叠加的bug:
1) 默认注意力后端aiter不在确定性推理允许列表中;
2) 绕过此问题设置--attention-backend triton会触发FUSED_ROPE_ROCM问题;
3) 进一步禁用该功能后遇到CUDA图捕获时的GPU内存访问错误。因此,暂时在AMD CI上跳过该标志,恢复非确定性基线,直到上游ROCm问题解决。
实现拆解
- 导入依赖调整:在
test/registered/mla/test_mla_fp8.py中,从sglang.test.test_utils导入is_in_amd_ci函数,用于检测当前是否在AMD CI环境中。
- 重构服务器启动参数:将
setUpClass方法中的other_args列表从内联定义改为变量,并移除--enable-deterministic-inference标志的硬编码。
- 条件添加标志:添加条件判断
if not is_in_amd_ci():,仅在非AMD CI环境下将--enable-deterministic-inference标志追加到other_args中,从而在AMD CI上跳过该标志。
- 测试配套:此变更仅影响测试逻辑,不修改生产代码;确保NVIDIA路径保持原有行为(添加标志以稳定MGSM分数),AMD路径回退到非确定性推理以避免CI失败。
关键文件:
test/registered/mla/test_mla_fp8.py(模块 MLA测试;类别 test;类型 test-coverage;符号 TestMLA.setUpClass): 这是唯一变更的文件,包含测试逻辑的核心调整,通过条件判断跳过AMD CI上的确定性推理标志,直接解决CI失败问题。
关键符号:TestMLA.setUpClass, is_in_amd_ci
关键源码片段
test/registered/mla/test_mla_fp8.py
这是唯一变更的文件,包含测试逻辑的核心调整,通过条件判断跳过AMD CI上的确定性推理标志,直接解决CI失败问题。
class TestMLA(CustomTestCase, MGSMEnMixin):
mgsm_en_score_threshold = 0.8
@classmethod
def setUpClass(cls):
cls.model = DEFAULT_MLA_FP8_MODEL_NAME_FOR_TEST
cls.base_url = DEFAULT_URL_FOR_TEST
# 重构参数列表为变量,便于条件添加
other_args = [
"--trust-remote-code",
"--kv-cache-dtype",
"fp8_e5m2",
# 注释说明确定性推理的作用:固定 MoE 专家调度和内核归约顺序,减少 MGSM 分数波动
]
# 关键条件判断:仅在非 AMD CI 环境下添加确定性推理标志
if not is_in_amd_ci():
# 在 AMD 上,默认注意力后端(aiter)不在确定性推理允许列表中,导致服务器启动失败,因此跳过此标志
other_args.append("--enable-deterministic-inference")
# 使用条件构建后的参数启动服务器
cls.process = popen_launch_server(
cls.model,
cls.base_url,
timeout=DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
other_args=other_args,
)
评论区精华
Reviewer HaiShaw在批准前要求作者创建一个issue,以记录未来需要在AMD ROCm上为该测试添加fp8_e4m3 kv-cache-dtype和--enable-deterministic-inference支持。作者已创建issue #23536并链接到本PR,确保有跟踪机制解决上游ROCm问题。讨论焦点在于长期修复的规划,而非当前变更的技术争议。
- AMD ROCm兼容性跟踪 (other): 作者创建了issue #23536并链接到PR,确保有长期修复计划。
风险与影响
关联脉络
- PR #23303 [PR #23303] (假设标题为添加确定性推理标志到MLA FP8测试): 本PR直接修复了PR #23303引入的AMD CI失败问题,通过条件跳过该PR添加的--enable-deterministic-inference标志。
参与讨论