Prhub

#37453 [CI][MLX] Restore the mamba_branching_seqlen attribute the MLX runner reads off a request

原始 PR 作者 alphabetc1 合并时间 2026-09-02 02:16 文件变更 1 提交数 1 评论 4 代码增减 +1 / -0

执行摘要

为 MLX 测试模拟对象添加缺失属性,修复 CI 测试失败。

本次变更的动机是修复 pr-test-mlx.ymlstage-a-unit-test-mlx 的持续性失败。PR#37164 将 MlxModelRunner._select_auxiliary_state_track_len 中的 getattr(req, "mamba_branching_seqlen", None) 调用收紧为直接访问 req.mamba_branching_seqlen。这一更改在生产代码中是正确的,因为 schedule_batch.Req.__init__ 总会定义该属性。然而,MLX 单元测试使用的 FakeRequest 模拟类未包含此属性,导致测试失败。由于测试套件配置了 failfast,第一个测试的失败也隐藏了后续依赖相同代码路径的测试(如 test_auxiliary_state_prefill_restores_prefix_statetest_auxiliary_state_prefill_tracks_chunk_aligned_auxiliary_state)。

这是一个简单、明确且必要的 bugfix,用于修复一个由先前 PR 引入的测试基础设施回归。PR 改动范围小(1 行代码),动机清晰,且已通过 CI 验证。虽然技术洞察有限,但它及时修复了阻塞 CI 的问题,因此值得肯定并合并。主要关注点在于验证修复是否完全解决了测试失败问题。

讨论亮点

该 PR 的讨论主要集中在验证修复是否有效,而非深入的设计或技术辩论。

  • 自动审查:Codex Bot 对 PR 进行了代码审查并完成,未发现问题。
  • 手动测试验证:作者通过 /rerun-test test_attention_patching.py 命令在 CI 中手动重新运行了相关测试,GitHub Actions 机器人确认测试在 ubuntu-latest 环境下通过。作者随后附上了成功的 CI 运行截图作为确认。
  • 结论:讨论表明修复是直接的、针对性的,且通过了实际 CI 验证。没有遗留未解决的疑虑。

实现拆解

  1. 定位失败的测试:在 test/registered/unit/hardware_backend/mlx/test_attention_patching.py 文件中,FakeRequest 类被用于模拟 MLX 后端的请求对象。
  2. 对齐属性接口:在 FakeRequest.__init__ 方法中,新增 self.mamba_branching_seqlen = None 属性初始化。这一修改确保了测试模拟对象与 schedule_batch.Req 的行为一致,后者总是在初始化时定义 mamba_branching_seqlen 属性(默认为 None)。
  3. 无配套改动:本次变更仅涉及测试文件的单一修改,无需调整生产代码、配置或部署流程。变更集仅包含 1 行新增代码。
文件 模块 状态 重要度
test/registered/unit/hardware_backend/mlx/test_attention_patching.py MLX 测试 modified 3.48

关键符号

FakeRequest.__init__

关键源码片段

test/registered/unit/hardware_backend/mlx/test_attention_patching.py test-coverage

这是 PR 唯一修改的文件,其中包含失败的 MLX 单元测试以及被修复的 `FakeRequest` 模拟类。修复了测试中的 `AttributeError`,是恢复 CI 通过的关键。

# 变更前(约 1520-1524 行)
class FakeRequest:
    def __init__(self):
        self.kv = ReqKvInfo()
        self.inflight_middle_chunks = 0# 变更后(约 1520-1525 行)
class FakeRequest:
    def __init__(self):
        self.kv = ReqKvInfo()
        # 修复 : 添加此属性,使其与 schedule_batch.Req 的默认行为一致。
        # PR#37164 将 MlxModelRunner 中的 getattr 改为直接访问,
        # 导致缺少此属性的模拟对象在测试中抛出 AttributeError。
        self.mamba_branching_seqlen = None
        self.inflight_middle_chunks = 0

评论区精华

修复 MLX CI 测试失败 测试

PR 作者明确说明了因 `pr-test-mlx.yml` 测试失败(`FakeRequest` 缺少 `mamba_branching_seqlen` 属性)而提交此修复。讨论集中于确认修复的有效性。

结论:通过手动重新运行相关测试 (`test_attention_patching.py`) 并附上成功截图,确认修复有效。Codex 自动审查也通过。 · 已解决

风险与影响

本次变更的风险极低。

  • 回归风险:变更仅限于测试代码中的模拟对象定义,不影响生产代码逻辑。添加一个与现有属性同名的 None 默认值属性,完全匹配了真实 Req 对象的初始化行为,因此不会引入新的回归。
  • 性能与安全风险:不涉及运行时逻辑、资源管理或数据处理,无相关风险。
  • 测试覆盖风险:修复消除了测试失败,直接提升了 MLX 后端相关测试的覆盖率和可靠性。
  • 用户影响:对最终用户无直接影响,因为变更仅涉及内部测试基础设施。
  • 系统影响:修复了 pr-test-mlx.yml CI 流水线中阻塞性的测试失败,确保了 Apple Silicon (MLX) 后端相关的单元测试能够在所有 PR 中正常运行,从而维持了持续集成的质量门禁功能。
  • 团队影响:解决了持续干扰开发者的 CI 红色状态,提升了贡献者对 MLX 后端测试结果的信心。
测试基础设施回归

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论