vllm-project/vllm-ascend

[Contribution] 任务 #2:[Arch/Perf] 传输路径改 IPC,消除 GIL 瓶颈

Ouverte

#14 143 ouverte le 13 août 2026

 (2 commentaires) (0 réaction) (0 personne assignée)C++ (2 048 forks)github user discovery
help wanted

Métriques du dépôt

Stars
 (2 637 étoiles)
Métriques de merge PR
 (Merge moyen 4j 5h) (559 PRs mergées en 30 j)

Description

背景

ascend_store 的 save/load 当前通过进程内 daemon 线程完成(KVCacheStore*Sending/RecvingThread),主线程与 send/recv 线程之间用 queue.Queue + threading.Event 协作。每进程最多 1 个 send 线程 + 1 个 recv 线程(_start_kv_transfer_threads 在三种模式间二选一)。部分热路径在 Python 层执行:PoolKey.to_string_handle_stored_request 内 addrs/sizes 构建、key 生成器循环,与 forward 的 Python 层代码共享同一进程的 GIL。

随着多 rank 并行传输、独立崩溃隔离、NPU stream/event 跨进程协作等需求出现,单进程多线程架构在扩展性上存在瓶颈。

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

任务

将传输路径由"进程内多线程 + queue.Queue"改造为"独立传输子进程 + IPC",使 key 构建、buffer 调度、I/O 提交在独立子进程执行,不再与 worker 主进程共享 GIL。

  • 范围:三种传输模式(非 layerwise / key layerwise / GVA layerwise)
  • 改造范围较大,建议分阶段推进,阶段划分与方法由开发者自定

验收标准

1. 功能正确性

  • 三种传输模式功能与改造前一致
  • greedy / non-greedy 输出一致(精度无回归)
  • 子进程异常不拖垮 worker 主进程,且能被重启或降级回进程内线程模式

2. 性能验证

  • 附改造前后对比数据:吞吐 / 延迟 / key 构建 CPU 占比 / IPC 开销

3. 交付件

  • 设计文档(含方案选型、风险清单、回退预案)
  • 原型对比报告
  • PR + 设计说明 + 单测(覆盖子进程启停、异常恢复、跨进程 buffer 共享、IPC 通道断连)

环境约定

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

重点关注

  • NPU KV cache buffer 跨进程共享是核心难点
  • layerwise 模式的 NPU Event 跨进程语义需重新设计(AttentionComputeStartGate
  • 需保留降级路径,平台不支持或子进程启动失败时能回退到进程内线程模式

任务周期

  • 发布:2026-08-12
  • 回收:2026-10-31(长线任务,分阶段交付)

Guide contributeur