执行摘要
- 一句话:为 Intel GPU CI 添加 agent_tags 资源调度
- 推荐动作:此 PR 对普通开发者阅读价值不高,但 CI 维护者应关注其 agent_tags 设计模式,特别是如何根据测试负载划分 GPU 和内存需求。对 vllm 的 CI 基础设施演进有一定参考意义。
功能与动机
Intel GPU CI 中缺乏显式的节点资源约束,可能导致大作业(如多 GPU 测试)被调度到单 GPU 或内存不足的实例上,造成失败或性能下降。从 review 评论 jikunshang 的担忧(“如果 YAML 中缺少此参数会怎样?”)可以看出这一必要性。
实现拆解
-
主 CI 配置调整:在 .buildkite/intel_jobs/ 目录下的 9 个 YAML 文件中(如 models_multimodal_intel.yaml、lora_intel.yaml、misc_intel.yaml 等)为每个测试步骤添加 agent_tags 字段。字段包含 label: production、gpu: 1+ 或 2+、mem: 16+ 或 24+,根据测试负载调整:多 GPU 测试要求 gpu: 2+,大模型测试要求 mem: 24+。
-
Nightly CI 配置同步:在 .buildkite/hardware_tests/intel_xpu_ci/test-intel.yaml 中添加同样的 agent_tags,确保夜间 CI 也受资源约束。
-
调优与验证:通过多次提交迭代(如使用 VLLM_USE_SINGLE_GPU 模拟单卡环境、调整标签取值)最终确定合理配置,并合入 main 分支。
整个变更为纯 CI 配置,无需单元测试,集成验证由 CI 自身保证。
关键文件:
.buildkite/intel_jobs/models_multimodal_intel.yaml(模块 CI配置;类别 config;类型 configuration): 主要 CI 配置,为多模态模型测试添加 agent_tags
.buildkite/hardware_tests/intel_xpu_ci/test-intel.yaml(模块 CI配置;类别 test;类型 test-coverage): Nightly CI 配置,同步资源约束确保夜间测试可靠性
.buildkite/intel_jobs/lora_intel.yaml(模块 CI配置;类别 config;类型 configuration): LoRA 测试配置,需按不同子任务资源需求设置标签
关键符号:未识别
评论区精华
在 review 中,jikunshang 提问:“如果 YAML 中缺少此参数会怎样?” wendyliu235 回答:“会使用所有 intel_gpu 队列设备,即随机分配,可能导致大作业使用小实例。” jikunshang 进一步确认了风险(“将随机选取,大作业可能被分配到小实例”)。最终决定添加 agent_tags 以显式控制资源匹配,所有评论已解决并获批准。
- agent_tags 缺失时的默认行为 (question): 必须显式添加 agent_tags 以避免调度不匹配。所有担忧已通过添加字段解决,PR 获得批准。
风险与影响
- 风险:风险极低。唯一风险是标签设置不合理(如要求过高导致作业无法调度或过低导致资源不足),但 CI 会自动重试并可通过调整标签快速修复。没有回归或安全风险。
- 影响:直接影响 Intel GPU CI 的作业调度,使每个测试步骤运行在指定资源上,减少不可预期的失败。对其他平台(AMD、NVIDIA)无影响。对开发者的影响:CI 更稳定,但引入新的约束,如果本地环境标签不一致可能需要调整。
- 风险标记:暂无
关联脉络
参与讨论