[Contribution] 任务 #8:[Perf] layerwise gate 对非复用层过度同步
#14.149 aberto em 13 de ago. de 2026
Métricas do repositório
- Stars
- (2.637 estrelas)
- Métricas de merge de PR
- (Mesclagem média 4d 5h) (559 fundiu PRs em 30d)
Description
背景
layerwise 预取层(layer_id != current_layer)的 load task 一律携带 attention_start_gate,recv 线程在 _handle_request 里 gate.wait() 阻塞直到计算流到达 attention 边界。prefetch_layer_map 定义了预取层与计算层之间的 buffer 复用关系(某预取层会覆盖某计算层正在使用的 buffer 时,需 gate 同步)。但当前 gate 附着不看 prefetch_layer_map,对所有预取层一律加 gate——对不在 map 中的预取层(无 buffer 复用),gate 是多余的,load 本可立即开始。单 recv 线程被这种多余 gate 阻塞会卡住后续所有层的 load(recv 线程串行处理队列)。
相关代码:_submit_ready_layer_loads 内 submit_layer_load 的 gate 附着条件、layerwise _handle_request 内 gate.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