Prhub

#22899 ci: add issue filing and suspect PR identification to log analyzer

sgl-project/sglang · 作者 ishandhanani · 合并时间 2026-04-16 05:27

分析状态 已生成
文件变更 3提交数 3 · 评论 1
代码增减 +61 / -19
run-ci documentation

执行摘要

为日志分析器添加自动提 Issue 和可疑 PR 识别功能,优化 CI 故障处理流程。

根据PR body描述,目的是让AI日志分析器能够自动处理夜间测试失败:对于可明确归因于配置、标志或编排的bug,自动向NVIDIA/srt-slurm仓库提交带有具体证据的Issue;对于可能源于sglang本身的故障,则改为审查过去一天的提交并列出可疑PR,供人工决策,避免自动提Issue。这旨在提升故障诊断和问题追踪的自动化程度与准确性。

该PR值得负责CI/CD和运维的工程师精读。重点关注 log_analysis_prompt.md 中新增的决策逻辑和规则,这是自动化故障处理的核心设计。同时,注意临时配置变更仅为测试目的,需跟踪后续PR以确保配置恢复。

讨论亮点

本次PR没有review评论,所有变更由作者直接合并。从提交历史看,有三个提交,表明实现过程有小的迭代:先更新核心逻辑,再临时禁用配置以方便测试,最后调整脚本权限。

实现拆解

  1. 更新日志分析提示文档:修改 scripts/ci/slurm/log_analysis_prompt.md,新增“Filing Issues”和“Suspect PRs”章节。详细规定了Issue提交流程、仓库归属判断逻辑(srt-slurm用于编排/配置问题,sglang相关故障仅列出可疑PR)、重复检查机制以及Issue内容格式。
  2. 调整CI配置以测试新功能:修改 scripts/ci/slurm/nightly-configs.yaml,注释掉 dsr1-fp8-gb200-dynamo-sglang 配置块(标记为TODO,将在后续PR重新启用)。目的是让CI仅运行已知会失败的 dsr1-fp4-gb200-dynamo-sglang 配置,以便端到端验证日志分析器的新增功能。
  3. 设置脚本执行权限:修改 scripts/ci/slurm/analyze_logs_with_modal.py 的文件权限,确保其可执行。这是一个配套的运维调整。
文件 模块 状态 重要度
scripts/ci/slurm/log_analysis_prompt.md CI 脚本 modified 4.29
scripts/ci/slurm/nightly-configs.yaml CI 脚本 modified 4.25
scripts/ci/slurm/analyze_logs_with_modal.py CI 脚本 modified 2.17
scripts/ci/slurm/nightly-configs.yaml configuration

为了测试新的日志分析器功能,临时禁用了已知会失败的 fp8 配置项,这是实现测试计划的关键步骤。

# TODO: re-enable after testing log analyzer (see follow-up PR)
# dsr1-fp8-gb200-dynamo-sglang:
#   model: deepseek-ai/DeepSeek-R1-0528
#   model-prefix: dsr1
#   runner: gb200
#   precision: fp8
#   framework: dynamo-sglang
#   multinode: true
#   disagg: true
#   seq-len-configs:
#     - isl: 1024
#       osl: 1024
#       search-space:
#         - conc-list: [1024, 2048, 4096, 6144]
#           config_file: recipes/gb200-fp8/1k1k/max-tpt.yaml
#         - conc-list: [4096]
#           config_file: recipes/gb200-fp8/1k1k/ultra-tpt.yamldsr1-fp4-gb200-dynamo-sglang:
  model: nvidia/DeepSeek-R1-0528-NVFP4-v2
  # ... 其他配置保持不变

评论区精华

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

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

风险与影响

  1. 配置风险:临时禁用 dsr1-fp8-gb200-dynamo-sglang 配置可能导致相关测试在CI中暂时缺失,需确保后续PR及时重新启用。
  2. 自动化误判风险:新增的自动提Issue和可疑PR识别逻辑依赖于AI分析器的准确判断。如果规则定义不清或AI误判,可能导致向错误仓库提交Issue或遗漏真正的问题PR。
  3. 依赖工具风险:实现依赖于 gh (GitHub CLI) 工具的正常工作,如果环境缺少该工具或版本不兼容,自动化流程会失败。
  1. 对团队的影响:显著提升CI故障处理效率。运维和开发人员无需手动分析日志和提Issue,AI分析器能自动归类并给出初步结论(直接提Issue或列出可疑PR),减少了人工介入的工作量。
  2. 对系统的影响:改进了CI/CD流水线的可观测性和问题追踪能力。故障根因能更快速、准确地被记录和分配,有助于加速问题修复周期。
  3. 影响范围:主要影响使用Slurm进行夜间测试的CI流程,以及负责处理相关故障的运维和开发人员。不影响核心的sglang运行时或模型推理逻辑。
自动化误判风险 临时配置缺失

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:为日志分析器添加自动提Issue和可疑PR识别功能,优化CI故障处理流程。
  • 推荐动作:该PR值得负责CI/CD和运维的工程师精读。重点关注 log_analysis_prompt.md 中新增的决策逻辑和规则,这是自动化故障处理的核心设计。同时,注意临时配置变更仅为测试目的,需跟踪后续PR以确保配置恢复。

功能与动机

根据PR body描述,目的是让AI日志分析器能够自动处理夜间测试失败:对于可明确归因于配置、标志或编排的bug,自动向NVIDIA/srt-slurm仓库提交带有具体证据的Issue;对于可能源于sglang本身的故障,则改为审查过去一天的提交并列出可疑PR,供人工决策,避免自动提Issue。这旨在提升故障诊断和问题追踪的自动化程度与准确性。

实现拆解

  1. 更新日志分析提示文档:修改 scripts/ci/slurm/log_analysis_prompt.md,新增“Filing Issues”和“Suspect PRs”章节。详细规定了Issue提交流程、仓库归属判断逻辑(srt-slurm用于编排/配置问题,sglang相关故障仅列出可疑PR)、重复检查机制以及Issue内容格式。
  2. 调整CI配置以测试新功能:修改 scripts/ci/slurm/nightly-configs.yaml,注释掉 dsr1-fp8-gb200-dynamo-sglang 配置块(标记为TODO,将在后续PR重新启用)。目的是让CI仅运行已知会失败的 dsr1-fp4-gb200-dynamo-sglang 配置,以便端到端验证日志分析器的新增功能。
  3. 设置脚本执行权限:修改 scripts/ci/slurm/analyze_logs_with_modal.py 的文件权限,确保其可执行。这是一个配套的运维调整。

关键文件:

  • scripts/ci/slurm/log_analysis_prompt.md(模块 CI脚本;类别 docs;类型 documentation): 这是本次PR的核心文件,定义了AI日志分析器的新行为规则,包括何时提Issue、向哪个仓库提、如何识别可疑PR等关键逻辑。
  • scripts/ci/slurm/nightly-configs.yaml(模块 CI脚本;类别 infra;类型 configuration): 为了测试新的日志分析器功能,临时禁用了已知会失败的fp8配置项,这是实现测试计划的关键步骤。
  • scripts/ci/slurm/analyze_logs_with_modal.py(模块 CI脚本;类别 infra;类型 infrastructure): 配套调整,确保脚本文件具有可执行权限,是运维层面的必要改动。

关键符号:未识别

关键源码片段

scripts/ci/slurm/nightly-configs.yaml

为了测试新的日志分析器功能,临时禁用了已知会失败的fp8配置项,这是实现测试计划的关键步骤。

# TODO: re-enable after testing log analyzer (see follow-up PR)
# dsr1-fp8-gb200-dynamo-sglang:
#   model: deepseek-ai/DeepSeek-R1-0528
#   model-prefix: dsr1
#   runner: gb200
#   precision: fp8
#   framework: dynamo-sglang
#   multinode: true
#   disagg: true
#   seq-len-configs:
#     - isl: 1024
#       osl: 1024
#       search-space:
#         - conc-list: [1024, 2048, 4096, 6144]
#           config_file: recipes/gb200-fp8/1k1k/max-tpt.yaml
#         - conc-list: [4096]
#           config_file: recipes/gb200-fp8/1k1k/ultra-tpt.yamldsr1-fp4-gb200-dynamo-sglang:
  model: nvidia/DeepSeek-R1-0528-NVFP4-v2
  # ... 其他配置保持不变

评论区精华

本次PR没有review评论,所有变更由作者直接合并。从提交历史看,有三个提交,表明实现过程有小的迭代:先更新核心逻辑,再临时禁用配置以方便测试,最后调整脚本权限。

  • 暂无高价值评论线程

风险与影响

  • 风险:1. 配置风险:临时禁用 dsr1-fp8-gb200-dynamo-sglang 配置可能导致相关测试在CI中暂时缺失,需确保后续PR及时重新启用。
    2. 自动化误判风险:新增的自动提Issue和可疑PR识别逻辑依赖于AI分析器的准确判断。如果规则定义不清或AI误判,可能导致向错误仓库提交Issue或遗漏真正的问题PR。
    3. 依赖工具风险:实现依赖于 gh (GitHub CLI) 工具的正常工作,如果环境缺少该工具或版本不兼容,自动化流程会失败。
  • 影响:1. 对团队的影响:显著提升CI故障处理效率。运维和开发人员无需手动分析日志和提Issue,AI分析器能自动归类并给出初步结论(直接提Issue或列出可疑PR),减少了人工介入的工作量。
    2. 对系统的影响:改进了CI/CD流水线的可观测性和问题追踪能力。故障根因能更快速、准确地被记录和分配,有助于加速问题修复周期。
    3. 影响范围:主要影响使用Slurm进行夜间测试的CI流程,以及负责处理相关故障的运维和开发人员。不影响核心的sglang运行时或模型推理逻辑。
  • 风险标记:自动化误判风险, 临时配置缺失

关联脉络

  • 暂无明显关联 PR

参与讨论