执行摘要
为 FlashMLA H100 测试修复并添加 CI
作者发现本地 H100 上 FlashMLA 测试因 #32810 接口变更而损坏,且未被 CI 覆盖,因此修复测试并加入 CI,以预防回归。
此 PR 属于常规测试维护,不需要精读,但值得关注其 CI 配置模式,以便在类似场景中复用。
只有一个评论:作者担心新 CI 步骤的 timeout_in_minutes: 25 可能过于宽松,因为测试本地运行不到 5 分钟。未引起进一步讨论,已合并。
作者发现本地 H100 上 FlashMLA 测试因 #32810 接口变更而损坏,且未被 CI 覆盖,因此修复测试并加入 CI,以预防回归。
此 PR 属于常规测试维护,不需要精读,但值得关注其 CI 配置模式,以便在类似场景中复用。
只有一个评论:作者担心新 CI 步骤的 timeout_in_minutes: 25 可能过于宽松,因为测试本地运行不到 5 分钟。未引起进一步讨论,已合并。
tests/kernels/attention/test_flashmla.py:更新 import 语句以添加新函数 flash_mla_with_kvcache_fp8 和 get_mla_metadata_dense_fp8;调整测试逻辑,在 FP8 路径中使用新的 API 调用,并将 descale_q/descale_k 参数仅传递给 FP8 分支。tests/kernels/attention/test_mla_cross_layer_kernel_equivalence.py:将 test_flashmla_dense_fp8_decode_unified_slot_view 测试中的 query 初始化改为 torch.float8_e4m3fn,以匹配量化 KV 缓存场景下 FP8 密集 MLA 核心对输入 dtype 的要求。.buildkite/test_areas/kernels.yaml 中添加 Kernels FlashMLA Test (H100) 步骤,设置超时 25 分钟,指定 H100 设备,配置源文件依赖关系,并运行三个测试文件。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
tests/kernels/attention/test_flashmla.py |
内核测试 | modified | 5.57 |
.buildkite/test_areas/kernels.yaml |
CI 配置 | modified | 4.11 |
tests/kernels/attention/test_mla_cross_layer_kernel_equivalence.py |
内核测试 | modified | 3.83 |
tests/kernels/attention/test_flashmla.py
test-coverage
核心测试文件,修复了因 #32810 接口变更导致的 FP8 路径问题,并调整了 import 和调用逻辑。
# 新增导入:flash_mla_with_kvcache_fp8 和 get_mla_metadata_dense_fp8
from vllm.v1.attention.ops.flashmla import (
flash_mla_with_kvcache,
flash_mla_with_kvcache_fp8, # 新增
get_mla_metadata,
get_mla_metadata_dense_fp8, # 新增
is_flashmla_dense_supported,
)
# 在 test_flash_mla 函数中,根据 use_fp8 分支调用不同 API
if use_fp8:
tile_scheduler_metadata, num_splits = get_mla_metadata_dense_fp8(
cache_seqlens, s_q * h_q // h_kv, h_kv
)
else:
tile_scheduler_metadata, num_splits = get_mla_metadata(
cache_seqlens, s_q * h_q // h_kv, h_kv
)
# 并在 flash_mla 内部函数中同样区分
if use_fp8:
return flash_mla_with_kvcache_fp8(
q, blocked_k, block_table, cache_seqlens, dv,
tile_scheduler_metadata, num_splits,
causal=causal, descale_q=descale_q, descale_k=descale_k,
)
return flash_mla_with_kvcache(
q, blocked_k, block_table, cache_seqlens, dv,
tile_scheduler_metadata, num_splits,
causal=causal,
# 注意:descale_q/descale_k 不再传入原始函数
)
作者评论:'this could be too generous, the tests take under 5m locally.'
结论:未修改,保留 25 分钟作为安全余量。 · 已解决
风险极低。仅修改了测试文件和 CI 配置,不影响核心运行时逻辑。新增 CI 步骤可能增加少量排队时间,但影响可控。
对用户无直接影响。对开发者:FlashMLA 相关代码在 H100 上的回归将被 CI 捕获,提高代码质量。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论