Prhub

#56934 [XPU][CI]Skip test_chat_completion_with_tools in Intel GPU CI

原始 PR 作者 zxd1997066 合并时间 2026-09-15 22:04 文件变更 1 提交数 4 评论 4 代码增减 +2 / -1

执行摘要

XPU CI 追加 deselect,摘除 llama3.2 工具调用用例

PR body 只有一句 “## Purpose Skip test_chat_completion_with_tools in Intel GPU CI”,没有关联 Issue、没有贴失败日志或错误栈,也没有说明是模型下载失败、xgrammar/tool parser 行为差异还是 XPU kernel 不支持。从既有配置可以推断:同一作业此前已对 granite-3.0-8b 与 ministral-3b 做过同类 deselect,本次只是把同一测试的 llama3.2 参数也加入排除列表,即 Intel GPU 侧该用例持续不可用,需要通过 CI 配置临时绕过以保持流水线可用。

不建议精读源码(本 PR 无源码),但值得花 1 分钟了解“CI 豁免如何被记录”的反面案例:本次跳过既没写失败原因、也没留恢复条件,是典型的可维护性折损。建议关注三点:(1)由 Intel 侧补一个 tracking issue,写清 llama3.2 在 XPU 上的具体失败模式与预期恢复条件;(2)考虑把多处 --deselect 抽成 job 级别的变量或 quarantine 列表,便于批量回滚与审计;(3)对 optional: true 的作业建立定期 review 机制,避免 deselect 列表无限增长。

讨论亮点

本 PR 没有任何 review 评论(review_comments_count = 0),唯一可见的交互是 CI 触发流程:jikunshang 第一次 /ci run 被机器人以 “This PR is 23 commits behind upstream main” 拒绝,第二次 /ci run 才成功触发 Buildkite #89075。审查侧由 zhenwei-intel 与 jikunshang 两人 APPROVED,均未留文字意见;claude[bot] 因 PR 来自 fork 而自动禁用审查,提示 “A repository maintainer can comment @claude review to run a one-time review”。换言之,这次“跳过测试”的决定没有留下任何技术论证记录,是否属于合理的临时豁免无法从讨论中判断。

实现拆解

  1. 变更入口:唯一改动文件是 .buildkite/intel_jobs/entrypoints_intel.yaml,命中 job key entrypoints-integration-api-server-generate-intel(label :intel: (BMG) Entrypoints Integration (API Server Generate),timeout_in_minutes: 65,optional: true,VLLM_TEST_DEVICE: xpu)。

  2. 核心改动:该 job 的 commands 是一段折叠标量,先用 run-intel-test.sh 进入 tests/ 目录跑 pytest -v -s tool_use,随后串行执行 tool_parsers、generate、anthropic、cohere 四组用例。本次在原有两条 --deselect 之后追加第三条:--deselect="tests/tool_use/test_chat_completions.py::test_chat_completion_with_tools[llama3.2]"。变更位于 pytest 选择器层面,不会修改 tests/tool_use/test_chat_completions.py 本身,因此主干 CI(NVIDIA 等)仍会完整跑该参数。

  3. 影响链路:deselect 只影响 Intel GPU 作业中 tool_use 目录的用例集合,后续 entrypoints/tool_parsers、entrypoints/generate 等命令不受影响;source_file_dependencies(vllm/、tests/tool_use 等)未变,触发条件与作业粒度保持原样。

  4. 测试与配置配套:没有源码、单元测试或文档改动,只有这一处 CI 配置;作业本身是 optional: true,失败本不阻塞合并门禁,因此该改动更偏向“减少噪音失败/缩短流水线耗时”,而非修复硬性阻断。

  5. 提交与协作:4 个 commit 中包含两次 Merge branch 'main' into xiangdong/skip_chat'(其中一次由 maintainer jikunshang 完成),说明分支曾落后主干较多;期间机器人提示 “This PR is 23 commits behind upstream main”,需要 rebase 后才能重新触发 CI。

文件 模块 状态 重要度
.buildkite/intel_jobs/entrypoints_intel.yaml CI 配置 modified 3.0

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

评论区精华

CI 触发前的分支新鲜度要求 question

jikunshang 连续两次评论 `/ci run`;第一次被 github-actions[bot] 拒绝,理由是 “This PR is 23 commits behind upstream main. Your branch must contain every commit currently on upstream main. No new CI build was started.”,并提示需要 merge/rebase 主干或使用 `--allow-stale`。第二次 `/ci run` 返回成功,触发 Buildkite CI #89075(commit 5c7e67b144cf)。

结论:分支通过 merge main 追平主干后 CI 正常触发,本 PR 最终合入;也解释了提交历史中两次 Merge branch 'main' 的来源。 · 已解决

跳过测试缺少技术论证 测试

两位 maintainer(zhenwei-intel、jikunshang)直接 APPROVED,未留任何文字意见;claude[bot] 因 PR 来自 fork 自动关闭审查(“automated review is disabled”),且无人评论 `@claude review` 触发人工审查。

结论:以静默批准收尾,deselect 的原因、影响范围与恢复条件均未被记录。 · unresolved

风险与影响

  1. 测试覆盖缺口:test_chat_completion_with_tools[llama3.2] 在 Intel GPU 上的工具调用链路从此不再被验证,此前已被摘除的还有 granite-3.0-8b 与 ministral-3b 参数,XPU 上 test_chat_completions.py 的有效覆盖面持续收窄,工具调用回归可能在 XPU 侧静默通过。

  2. 豁免缺少闭环:没有关联 Issue、没有失败日志、也没有 TODO/到期时间,entrypoints_intel.yaml 里的 deselect 列表正在成为“只增不减”的清单,后续维护者难以判断这些用例是否已可恢复。

  3. 误伤范围:deselect 采用带参数 id 的精确 node id,只会摘掉 llama3.2 这一个参数,其他模型参数仍会执行,但若失败原因是 test_chat_completions.py 的公共 fixture 或工具调用通用逻辑,则同目录其他用例仍会以失败形式暴露,问题只是从“失败”变成“可能更晚才被发现”。

  4. 配置本身低风险:改动是 YAML 折叠标量中的字符串拼接,语法层面只需保证 --deselect= 与后续 && 的相对位置正确;新增行放在 --deselect 与 && pytest ... 之间,不会破坏 shell 连接符语义。

对用户与线上服务无直接影响:该文件只作用于 Buildkite 上的 Intel GPU 作业,不进镜像、不改运行时行为。对 Intel/XPU 团队影响最直接——BMG 作业的 tool_use 阶段少跑一个用例,失败噪音下降,但 XPU 上工具调用能力的可见性同时下降,问题会被推到下游用户或后续 P1 修复。对主干团队影响有限:作业是 optional: true,其他厂商与 NVIDIA 流水线的 test_chat_completion_with_tools 覆盖保持不变。

测试覆盖缺口 临时豁免无跟踪 Issue 跳过原因未记录 deselect 列表持续增长

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论