执行摘要
- 一句话:拆分disaggregated CI测试到独立测试区域
- 推荐动作:建议在合并后立即跟进一个修复PR:添加设置
SW_ATTN=1的CI步骤,或将gemma-3配置移回tp_configs并增加FlashInfer兼容性检查。同时考虑采纳gemini-code-assist的依赖文件建议。
功能与动机
PR发起人指出PD disaggregation代码和相关性在过去一年中已增长到需要独立测试框架的程度。参考了此前PR #36945的做法,使分布式任务更小、更独立运行,同时为PD设置分配更多预算(因为这些测试本来就成本高昂)。另外补充了之前缺失的FlashInfer评估运行,这对Blackwell+开发至关重要。
实现拆解
-
创建新测试区域文件:在.buildkite/test_areas/下新建disaggregated.yaml,包含所有原distributed.yaml中与PD disaggregation相关的测试步骤(共8个步骤),包括NixlConnector精度、DP/EP、CrossLayer、Hybrid SSM、MultiConnector、Spec Decode等配置,并新增一个Distributed FlashInfer NixlConnector PD accuracy步骤。
-
从distributed.yaml移除旧步骤:删除distributed.yaml中对应的7个测试步骤(约85行),替换为一个新的Pipeline + Context Parallelism步骤和一个RayExecutorV2步骤,保持文件结构。
-
调整gemma-3测试配置:在tests/v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh中,将gemma-3滑动窗口测试从tp_configs数组移到新创建的sw_attn_configs数组,并添加注释说明gemma3不兼容FlashInfer。这样确保了gemma-3只在SW_ATTN环境变量设置时运行(如CI中),而不是在默认路径下。
关键文件:
.buildkite/test_areas/disaggregated.yaml(模块 测试配置;类别 config;类型 configuration): 新创建的disaggregated测试区域文件,包含了所有PD disaggregation相关的CI步骤,是本次PR的核心变更。
.buildkite/test_areas/distributed.yaml(模块 测试配置;类别 config;类型 configuration): 原始distributed.yaml中移除了PD disaggregation相关的7个测试步骤(约85行),并新增了Pipeline+Context Parallelism和RayExecutorV2步骤。
tests/v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh(模块 测试脚本;类别 test;类型 test-coverage): 调整了gemma-3滑动窗口测试的配置归属,从tp_configs移到sw_attn_configs,并添加了兼容性注释。
关键符号:未识别
关键源码片段
tests/v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh
调整了gemma-3滑动窗口测试的配置归属,从tp_configs移到sw_attn_configs,并添加了兼容性注释。
# config_sweep_accuracy_test.sh 部分片段
# 原 tp_configs 中删除了 gemma-3 项(第 15 行被移除)
tp_configs=(
"GPU_MEMORY_UTILIZATION=0.6 PREFILLER_TP_SIZE=2 DECODER_TP_SIZE=2"
...
# 移除了 "GPU_MEMORY_UTILIZATION=0.8 MODEL_NAMES=google/gemma-3-4b-it VLLM_SERVE_EXTRA_ARGS=--max-model-len,8192" # SW model
)
# 新增 sw_attn_configs 数组,包含 gemma-3 测试及 HMA 变体
sw_attn_configs=(
# NOTE: gemma3 does not work with FlashInfer
"GPU_MEMORY_UTILIZATION=0.8 MODEL_NAMES=google/gemma-3-4b-it VLLM_SERVE_EXTRA_ARGS=--max-model-len,8192" # SW model
"ENABLE_HMA_FLAG=1 GPU_MEMORY_UTILIZATION=0.8 MODEL_NAMES=google/gemma-3-4b-it PREFILLER_TP_SIZE=1 DECODER_TP_SIZE=2 VLLM_SERVE_EXTRA_ARGS=--max-model-len,8192"
"ENABLE_HMA_FLAG=1 GPU_MEMORY_UTILIZATION=0.8 MODEL_NAMES=google/gemma-3-4b-it PREFILLER_TP_SIZE=2 DECODER_TP_SIZE=1 VLLM_SERVE_EXTRA_ARGS=--max-model-len,8192"
)
评论区精华
-
gemini-code-assist机器人提出的改进建议(未解决):
- 建议为所有测试步骤添加
vllm/v1/worker/kv_connector_model_runner_mixin.py到source_file_dependencies,以确保模型运行器变更时能触发这些测试。
- 建议为FlashInfer测试步骤指定
device: h100以运行在适当硬件上。
- 指出
CROSS_LAYERS_BLOCKS=True与其他步骤使用1不一致,建议统一改为CROSS_LAYERS_BLOCKS=1。
- 这些建议未被采纳或回复,但PR仍被批准合并。
-
orozery的Issue评论(关键问题):指出gemma-3配置被从tp_configs移到了sw_attn_configs,但CI的disaggregated.yaml中没有设置SW_ATTN=1的步骤,导致gemma-3测试实际上不再在CI中运行。这是一个回归。建议要么添加SW_ATTN=1的步骤,要么保持gemma-3在tp_configs中并只在不使用FlashInfer时排除。
- gemma-3测试配置移动导致CI覆盖丢失 (correctness): 此问题未在PR中得到解决,但PR仍被批准合并。这是明显的回归风险。
- source_file_dependencies不完整 (other): 建议未被采纳,但已被记录。
- FlashInfer测试未指定目标设备 (other): 未采纳,风险较低但可能影响测试覆盖率。
- 环境变量值不一致 (style): 未采纳,但建议改为1。
风险与影响
- 风险:
- gemma-3测试可能完全丢失:如orozery所指出,将gemma-3移到
sw_attn_configs后,由于CI中没有设置SW_ATTN环境变量的步骤,gemma-3测试将不再自动运行。这可能导致滑动窗口注意力相关的回归无法被捕获。
- 依赖文件列表可能不完整:gemini-code-assist指出
source_file_dependencies遗漏了关键的kv_connector_model_runner_mixin.py,可能导致部分变更无法触发相关测试。
- 环境变量值不统一:
CROSS_LAYERS_BLOCKS=True与其他步骤的=1格式不一致,可能对某些解析逻辑造成问题。
- 影响:
- 对用户:无直接影响,纯CI重构。
- 对系统:CI配置更清晰,disaggregated测试独立运行,缩减了distributed测试的总执行时间,同时新增了FlashInfer专用测试步骤,提升了对Blackwell+硬件的覆盖。
- 对团队:需要维护两个测试区域文件,但提高了CI的可扩展性和可维护性。gemma-3测试的遗漏需尽快修复。
- 风险标记:gemma-3测试完全丢失(CI覆盖回归), source_file_dependencies不完整, 环境变量值不统一
关联脉络
- PR #36945 类似拆分的前例: PR body中引用该PR作为拆分测试区域的先例。
参与讨论