Prhub

#43971 [CI] Make Model Executor test hangs fail fast with a traceback

原始 PR 作者 khluu 合并时间 2026-05-30 02:58 文件变更 1 提交数 1 评论 0 代码增减 +9 / -2

执行摘要

CI 模型执行器测试超时失败快速反馈

在构建 68772 中,Model Executor 测试步骤因单个测试 tests/model_executor/model_loader/fastsafetensors_loader/test_fastsafetensors_loader.py::test_model_loader_download_files 在 GPUModelRunner.init 期间挂起,阻塞夜间构建约 10 小时。原有 timeout_in_minutes: 35 未生效,因为 CUDA 调用不可中断。

应立即合入,作为 CI 防御性措施。建议后续将类似超时机制推广到其他 GPU/CUDA 密集的 CI 步骤。此 PR 逻辑清晰,改动安全。

讨论亮点

PR 无 review 评论,仅有 njhill 的 APPROVED。无公开讨论。

实现拆解

  1. .buildkite/test_areas/model_executor.yaml 的 commands 中添加 export PYTHONFAULTHANDLER=1,启用 faulthandler 在测试挂起时转储所有线程的栈跟踪。
  2. 在 pytest 命令中添加 --timeout=900 --timeout-method=thread,每个测试单独拥有 900s 超时看门狗,thread 方法能中断 C/CUDA 内部的挂起并输出栈跟踪。
  3. 对两个 pytest 调用(model_executor 和 tensorizer_entrypoint)均应用超时设置。
  4. pytest-timeout 已存在于 requirements/test/cuda.txt,无需新增依赖。
文件 模块 状态 重要度
.buildkite/test_areas/model_executor.yaml CI 配置 modified 4.56

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

本次变更为纯 CI 配置,不涉及源码修改。风险极低:pytest-timeout 在正常路径下是空操作(no-op),不会影响测试行为;只有挂起超过 900s 才触发。可能引入的新风险:超时时间(900s)是否足够覆盖正常慢测试?但 900s=15min,远大于常规测试时长,安全。

仅影响 CI 中 Model Executor 测试步骤。影响程度低,但价值高:将诊断时间从 ~10h 缩短至 ~15min,快速定位 GPU 初始化挂起问题,避免阻塞夜间构建。对用户无影响。

配置变更 无源码修改

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论