Prhub

#37616 [ROCm][CI] Fix flaky Cohere/OpenAI embedding parity test

原始 PR 作者 AndreasKaratzas 合并时间 2026-03-25 18:55 文件变更 4 提交数 4 评论 14 代码增减 +8 / -4

执行摘要

为 ROCm 平台添加 ROCM_EXTRA_ARGS 到两个测试文件并早期验证 pooling params,修复 flaky 的嵌入测试。

修复 ROCm 平台上的 flaky 测试,特别是在 'mi325_1: Entrypoints Integration (Pooling)' 中失败。PR body 中引用 buildkite 链接显示失败,并提及相关 issue #33123 和 PR #34839,以解决批量不变性问题。

建议关注测试设计的权衡,尤其是 ROCM_EXTRA_ARGS 的使用是否应更明确标注或跳过相关测试。同时,异常处理更改值得了解,可参考相关 issue 以跟踪批不变性问题进展。

讨论亮点

讨论主要集中在两个核心点:

  1. gemini-code-assist[bot] 担忧ROCM_EXTRA_ARGS 中的 --max-num-seqs 1 会禁用批处理,可能掩盖批不变性问题,建议明确跳过相关测试。作者回应已有 issue #27433 跟踪,但当前测试组焦点不在批处理机制,认为这适合上下文。
  2. DarkLight1337 和 noooop 的疑问:为什么需要在 serving.py 中添加验证?作者解释是为了防止异常传播导致 ASGI app 崩溃,特别是时序问题在 ROCm 上更明显。这揭示了潜在的竞争条件,但具体根因未解决。

实现拆解

实现分为三个关键部分:

  1. 测试文件修改:在 test_cohere_openai_parity.pytest_online_dimensions.pyserver() 函数中添加 ROCM_EXTRA_ARGS(包含 --max-num-seqs 1 等参数),以在 ROCm 上禁用批处理。
  2. 服务层优化:在 vllm/entrypoints/pooling/base/serving.py_prepare_generators 方法中添加 pooling_params.verify(self.model_config),早期验证参数避免后续异步异常传播导致崩溃。
  3. 调试增强:在 vllm/entrypoints/utils.pycreate_error_response 函数中添加调试日志,辅助错误处理。
文件 模块 状态 重要度
tests/entrypoints/pooling/embed/test_cohere_openai_parity.py tests modified 4.0
vllm/entrypoints/pooling/base/serving.py entrypoints/pooling modified 5.0
vllm/entrypoints/utils.py entrypoints modified 3.0
tests/entrypoints/pooling/embed/test_online_dimensions.py tests modified 4.0

关键符号

_prepare_generators create_error_response server

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

评论区精华

ROCM_EXTRA_ARGS 对批处理测试的影响 测试

gemini-code-assist[bot] 指出添加 --max-num-seqs 1 会禁用批处理,可能掩盖批不变性问题,建议明确跳过 test_batch_parity。作者回应有 issue #27433 跟踪,但测试组焦点不在批处理机制。

结论:作者认为这适合当前测试上下文,但批不变性问题仍有待解决。 · 已解决

为什么需要在 serving.py 中添加早期验证 设计

DarkLight1337 询问为什么添加 try-except 块来验证 pooling params,作者解释是为了防止异常传播导致 ASGI app 崩溃,特别是在时序问题下。

结论:已被采纳以修复特定错误,确保错误处理正确。 · 已解决

测试在不同平台上的时序差异 正确性

noooop 质疑测试在 NVIDIA GPU 上是否通过,作者解释是时序问题,更易在 ROCm 上触发,揭示潜在的竞争条件。

结论:没有明确解决方案,但提示了异步环境下的脆弱性。 · unresolved

风险与影响

主要风险在于测试修改:ROCM_EXTRA_ARGS 的添加可能导致 test_batch_parity 测试不再有效验证批处理,从而隐藏真正的批不变性问题(如 issue #27433)。此外,早期验证 pooling params 改变了错误处理流程,但已被确认修复特定崩溃问题,无重大兼容性或性能风险。调试日志添加无副作用。

对用户无直接影响,因为是内部测试修复。对系统影响:提高了 ROCm 平台的 CI 测试稳定性,减少了 flaky 失败。对团队影响:维护者需要关注批处理测试的覆盖完整性,以及异常处理逻辑在异步环境下的可靠性。

批处理测试覆盖不足 潜在竞争条件

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论