DPLB Simulator

演示 HTTP 请求选哪个 DP rank(vLLM DPLB、SGLang DataParallelController)。

数据流架构图

HTTP Requestseq_len;PD 时才有 bootstrap_room(会话配对 ID)
External LB / SMG 多实例时先做 cache-aware 路由;框架内 DP LB 只管本实例/本 node。
→HTTP
vLLM API Server / DPLBAsyncMPClient vLLM Internal:DPLBAsyncMPClient 用 waiting/running 选 rank。
→argmin(score)
→ZMQ / worker
EngineCore(rank k) 进入 waiting queue,随后 prefill / decode,KV cache 留在该 DP rank。
KV Cache 长上下文和 cache affinity 会让 token 负载比请求数更不均。
rank0 [waiting, running, kv]
rank1 [waiting, running, kv]
rank2 [waiting, running, kv]
rank3 [waiting, running, kv]
↺~100ms stats
DPCoordinator(vLLM) 汇聚各 EngineCore 的 waiting/running 并发布给 API;另管 MoE wave。不负责选 rank。
Internal请求进 node0 API,全局 rank 一起比。
Hybrid跨 node 靠外部 LB,节点内比 local ranks。
ExternalIstio / Nginx / SMG 自行决定入口。
SGLanground_robin / total_requests / total_tokens / follow_bootstrap_room。

对照 CLI:vLLM 三种 --data-parallel-* 模式(三选一)决定入口与选 rank 范围;SGLang 用 --load-balance-method 决定算法(DP 规模由 --dp-size 等单独配置)。

MoE 控制路径:wave / dummy forward

这里只演示 MoE 的“同步节拍(wave)”:HTTP 请求还是由 API 直发某个 Engine(不会经过 Coordinator 转发)。Coordinator 负责把所有 DP rank 拉到同一个 wave;没分到请求的 rank 也要跟着跑 dummy forward,才能把 EP 的同步通信走完。

API / DPLBAsyncMPClient score 选中 rank2,请求 ZMQ 直发 Engine。
→FIRST_REQ 控制
DPCoordinator 收到 FIRST_REQ 后广播 START_DP_WAVE;不算 score,不转发 HTTP 请求。
⇢START_DP_WAVE

调度状态

0请求数
1.00倾斜度 max/mean
-下一 rank
0tokens
绿框(仅演示):用当前算法预览下一笔会派到哪个 rank 红框(仅演示):模拟负载达峰值的 ≥85%,标出偏热 rank;非框架指标 倾斜度(仅演示)= max(load)÷mean(load),1.0 越均衡;框架无此字段名