PD Disaggregation 将 SGLang rollout 中的 Prefill worker 和 Decode worker 拆开部署。它特别适合 multi-turn、long-context 和 agentic RL:这些 workload 中,prompt processing 和 token generation 的计算/显存特征往往完全不同。
建议在以下场景使用 PD 分离:
- rollout context 很长,或会随着多轮交互持续增长;
- decode 阶段占据主要 rollout 时间;
- multi-turn session 需要更好的 prefix-cache locality;
- prefill 和 decode 需要不同 TP、显存或 runtime 设置;
- 希望 rollout topology 更接近生产 serving,而不是单一 uniform inference group。
对于短单轮任务,默认 regular SGLang engine layout 通常更简单。
slime 支持两种 PD 配置方式。
如果只有单个 actor model,并且只需要简单 PD layout,可以设置:
--prefill-num-servers 1这是轻量路径,适合只想拆开 prefill/decode、但不需要分别调每个 group 的场景。
生产级 rollout topology 推荐使用 SGLang Config。它可以独立配置 prefill 和 decode group,也能表达 EPD-style layout、heterogeneous server group、multi-model serving 和 per-group SGLang override。
示例:
sglang:
- name: actor
update_weights: true
server_groups:
- worker_type: prefill
num_gpus: 4
num_gpus_per_engine: 2
overrides:
chunked_prefill_size: 8192
- worker_type: decode
num_gpus: 12
num_gpus_per_engine: 4
overrides:
mem_fraction_static: 0.88启动:
python train.py \
--sglang-config sglang_pd.yaml \
--rollout-num-gpus 16 \
...RL rollout 往往不是一批短 completion。Agentic 和 verifier-based workload 常见特征包括:
- 来自 tool/environment history 的长 prompt;
- 每个 sample 多轮交互;
- decode latency long tail;
- session-local prefix cache 机会;
- actor、reference、reward、judge model 资源需求不同。
PD 让 slime 在不改变 training loop 的情况下,使用更贴合真实 serving workload 的 rollout topology。
- 新的复杂部署优先使用
--sglang-config,而不是--prefill-num-servers。 - multi-turn agent 建议开启 router session affinity,使同一 sample 的多轮请求可以复用 prefix cache。见 Session-Affinity Routing。
--rollout-num-gpus应等于 SGLang config 中描述的 GPU 总数。- 不要在同一个 model entry 中混用
regularworker 和prefill/decodeworker。 - 当 prompt processing 和 token generation 的瓶颈不同时,分别调 prefill 和 decode 的 TP。