Prhub

#34768 [AMD] CI: pin antlr4-python3-runtime back after lmms-eval (unblocks ROCm 7.2 stage-b evals)

原始 PR 作者 michaelzhang-ai 合并时间 2026-08-14 08:41 文件变更 1 提交数 1 评论 3 代码增减 +6 / -0

执行摘要

修复 AMD CI 中 ANTLR 版本冲突,解锁 ROCm 7.2 stage-b 评测

34689 修复了 ROCm 7.2 stage-a 的 sgl-eval 安装语法问题后,stage-b 首次运行,所有调用 run_eval 的 shard 都报 ImportError: Unsupported ANTLR version 4.7.2。PR body 指出这是 scripts/ci/amd/amd_ci_install_dependency.sh 中的依赖顺序冲突:sgl-eval 先装并带入 antlr4-python3-runtime 4.9.3,lmms-eval v0.4.1 随后拉入 latex2sympy2 并 pin 4.7.2、卸载 4.9.3。CUDA 路径在 #34477 引入 sgl-eval 时已修过同样的冲突,AMD 因 stage-a 前置故障从未得到等价修复。

值得合入,并可作为 CI 依赖冲突排查的范例阅读。关注三点:一是在安装脚本中立即钉回版本的修复时机选择;二是 --force-reinstall --no-deps 的取舍理由;三是对 install_with_retry 内部 eval 拆词的防御。对普通读者不需要精读,对 AMD CI 维护者建议顺手补充安装后 antlr 版本校验,防止回归。

讨论亮点

Review 阶段没有文字评论,bingxche 直接 APPROVED。主要讨论在 Issue 评论中由 amd-bot 给出:

Merge verdict: fix 验证有效——antlr4-python3-runtime==4.9.3 的 pin 在每个 ROCm 7.2 job 中生效,Unsupported ANTLR 4.7.2 错误完全消失。没有正在执行的失败由本 PR 引起。

amd-bot 同时提醒:stage-b 仍有 5 个与本次 pin 无关的失败,且因 fast-fail,所有 stage-c 任务被跳过未测试,PR 无法单独让 workflow 变绿。作者在 PR body 中逐一给出了剩余失败的成因与关联修复。

实现拆解

  1. 定位与复现:
    根据 PR body 与 install 日志,确认是依赖安装顺序冲突,即 lmms-eval v0.4.1 的 latex2sympy2 将 antlr4-python3-runtime 从 4.9.3 降级为 4.7.2,运行期 sgl_eval._vendored.nemo_skills.math_grader 拒绝 4.7.2。

  2. 选择修复点:
    在 scripts/ci/amd/amd_ci_install_dependency.sh 中 lmms-eval 安装后立即用 install_with_retry 执行 pip install "antlr4-python3-runtime==4.9.3" --force-reinstall --no-deps,与 scripts/ci/cuda/ci_install_dependency.sh 的既有修复保持一致。

  3. 放置与细节:
    --force-reinstall --no-deps 只重装 antlr 而不动 lmms-eval 其他依赖;pin 放在 SKIP_TT_DEPS 的 else 分支内,因为跳过测试依赖时 lmms-eval 根本不会安装;spec 不含空格,可安全穿过 install_with_retry 内部的 eval(避免 #34689 修过的拆词陷阱)。

  4. 验证:
    PR Test ROCm 7.2 run 31742250192 中 ImportError 出现 0 次,stage-b-1gpu-small 13/14 通过;剩余 5 个失败各有独立原因(HIP graph-capture、perf 阈值、EmbeddingReqInput 属性缺失等),其中 EmbeddingReqInput 由 #34769 单独修复。

  5. 配套:
    无模型或内核代码改动,无单测;验证依赖 run-ci 标签的 ROCm 7.2 流水线。

文件 模块 状态 重要度
scripts/ci/amd/amd_ci_install_dependency.sh CI 脚本 modified 3.48

关键源码片段

scripts/ci/amd/amd_ci_install_dependency.sh infrastructure

唯一变更文件,在 lmms-eval 安装后立即把 antlr4-python3-runtime 重新钉为 4.9.3,修复 ROCm 7.2 stage-b 评测路径的依赖顺序冲突,并对齐 CUDA 安装脚本的既有方案。

# lmms-eval v0.4.1 会拉入 latex2sympy2,后者把 antlr4-python3-runtime 钉为 4.7.2,
# 并卸载 sgl-eval 依赖的 4.9.3,导致每个调用 sgl-eval run mmlu 的 shard 报错
# “Unsupported ANTLR version 4.7.2”;CUDA 安装脚本早已用同样方式修复,这里对齐。
install_with_retry docker exec -w /lmms-eval ci_sglang pip install --cache-dir=/sgl-data/pip-cache -e .
​
# 紧跟 lmms-eval 安装,因为它是本脚本最后一个会触碰 antlr 的步骤;
# --force-reinstall --no-deps 只重装 antlr,不动 lmms-eval 的其他依赖。
# 该 pin 放在 SKIP_TT_DEPS 的 else 分支内:跳过测试依赖时 lmms-eval 不会安装,
# 也就不存在被覆盖的问题。spec 不含空格,可安全经过 install_with_retry 的 eval。
install_with_retry docker exec ci_sglang pip install --cache-dir=/sgl-data/pip-cache "antlr4-python3-runtime==4.9.3" --force-reinstall --no-deps

评论区精华

PR CI 未全绿与 stage-c fast-fail 跳过 测试

amd-bot 在 Issue 评论确认 antlr4-python3-runtime==4.9.3 的 pin 在每个 ROCm 7.2 job 中生效,Unsupported ANTLR 4.7.2 错误完全消失;但 stage-b 仍有 5 个与本 PR 无关的失败(HIP graph-capture、perf threshold、EmbeddingReqInput 属性缺失等),stage-c 全部被 fast-fail 跳过未测试。

结论:修复已验证有效,但 PR 无法单独让 workflow 变绿,剩余失败需单独修复或 bypass-fastfail 以获取 stage-c 信号。 · 已解决

风险与影响

  1. 依赖覆盖风险:--force-reinstall --no-deps 会把 lmms-eval 侧 latex2sympy2 想要的 4.7.2 强制覆盖为 4.9.3,lmms-eval 相关功能存在兼容性风险;CUDA 路径已长期接受同一取舍,属已知且可接受的权衡。
  2. 防回归缺口:脚本没有在安装后校验 antlr 版本,未来 lmms-eval 或 latex2sympy2 升级可能再次引发同类问题,需要人工从日志发现。
  3. 流水线完整性:本 PR 合入时 stage-c 全部未跑、stage-b 还有 5 个失败,虽然与本次修改无关,但 CI 未处于全绿状态,回归信号被部分遮蔽。
  4. 影响面限制:仅修改 AMD 安装脚本,NPU 不装 lmms-eval 不受影响,CUDA 已有同款 pin,无运行时影响。

对用户与模型无直接影响(纯 CI 脚本);对团队的影响是解锁了 AMD ROCm 7.2 stage-b 的 accuracy 评测,使 sgl-eval run mmlu 相关测试从大量失败恢复到 13/14 通过,并让 AMD 与 CUDA 两条 CI 路径的依赖处理行为对齐。后续 stage-b 剩余问题(#34769 等)仍会影响 AMD 夜间与 PR CI 的绿灯状态。

依赖版本强制覆盖 stage-c 未验证 防回归校验缺失

关联 Issue

#34769 [VLM] Fix AttributeError on multimodal embedding requests

完整报告

参与讨论