vllm-project/vllm-ascend

[Contribution] 任务 #8:[Perf] layerwise gate 对非复用层过度同步

開放

#14,149 建立於 2026年8月13日

 (4 則留言) (0 個反應) (0 位負責人)C++ (2,048 個分叉)github user discovery
help wanted

倉庫指標

星標
 (2,637 顆星)
PR 合併指標
 (平均合併 4天 5小時) (30 天內合併 559 個 PR)

描述

背景

layerwise 预取层(layer_id != current_layer)的 load task 一律携带 attention_start_gate,recv 线程在 _handle_requestgate.wait() 阻塞直到计算流到达 attention 边界。prefetch_layer_map 定义了预取层与计算层之间的 buffer 复用关系(某预取层会覆盖某计算层正在使用的 buffer 时,需 gate 同步)。但当前 gate 附着不看 prefetch_layer_map,对所有预取层一律加 gate——对不在 map 中的预取层(无 buffer 复用),gate 是多余的,load 本可立即开始。单 recv 线程被这种多余 gate 阻塞会卡住后续所有层的 load(recv 线程串行处理队列)。

相关代码:_submit_ready_layer_loadssubmit_layer_load 的 gate 附着条件、layerwise _handle_requestgate.wait()AttentionComputeStartGate.wait(硬阻塞)、prefetch_layer_map(buffer 复用关系定义)。

相关代码路径:vllm_ascend/distributed/kv_transfer/kv_pool/ascend_store

任务

让 gate 仅在确有数据竞争时生效,非复用层不阻塞。

  • 路径:layerwise recv 线程的 gate 附着与等待
  • 目标:非复用预取层立即 load,复用层保留 gate

验收标准

1. 功能正确性

  • 复用层 gate 行为不变(buffer 数据安全)
  • 非复用层 load 立即开始,无数据竞争
  • 现有单测全绿

2. 性能验证

  • recv 线程被 gate 阻塞时间下降(profiler 时间线)
  • 预取层就绪更早,attention 前等待减少

3. 交付件

  • PR + 设计说明 + 性能数据 + 单测

环境约定

  • vllm-ascend:最新 main
  • 硬件:Ascend NPU(注明型号 + 卡数 + TP/CP/PP 配置)
  • 关联任务池:#9079
  • 验收人:@赵鹏博

重点关注

  • GVA 复用场景 gate 是正确性需要,不能去掉

任务周期

  • 发布:2026-08-12
  • 回收:2026-10-31

貢獻者指南