Appearance
会话批处理(Session Batching)——
ds4-server预分配 N 个独立的常驻 KV session,把多个并发请求里"已就绪的 decode 步"打包到一次内核调用里一起算,提升聚合吞吐。有原生批处理内核时直接用,没有时退化成有序精确兜底,保证结果与逐 session 单跑完全一致。
为什么需要它
ds4-server 原本是"一个 GPU 同时只跑一个请求":推理串行,HTTP 并发用队列解耦(见 Part 5)。这对单用户够了,但多用户服务时,decode 阶段每个 token 只读一个 token 的权重,GPU 算力大量闲置——多个 session 的 decode 步本可以塞进同一个 batch kernel 一起算。
--batched-session N 预分配 N 个独立常驻 KV session:
- 就绪的 decode 步一起评估(同一个 batch kernel)
- 长 prefill 交替进有限大小的 chunk,避免一个 prefill 堵死所有 decoder
- 超过 N 的请求等空位;启用了磁盘 KV 缓存时,空闲槽位被持久化、对话回来时再恢复,活跃请求永不被驱逐
- 选 N 和
--ctx让所有常驻 KV 分配都能装进显存
精确性保证:有序兜底
批处理是精确的:当没有原生批处理内核时,ds4 按固定顺序跑受影响的行,返回与"逐 session 单独评估"完全相同的完整 logits。每个后端/模型的行为:
| 后端 / 模型 | session 执行方式 |
|---|---|
| Metal,常驻 DeepSeek Flash | 支持时从两行起原生共享专家 + QKV 批处理;否则有序兜底 |
| Metal,常驻 V4.1 Flash(2026-09) | 2–8 session 原生解码(逐位对齐标量);含图像的 session 走有序兜底 |
| Metal RDMA TP,V4.1 Flash(2026-09) | 3–8 session 原生解码;两路有序兜底(两行摊不平批量交换的固定开销) |
| Metal SSD streaming,V4.1 Flash(2026-09) | 有序兜底 |
| Metal,GLM 5.2 | 有序精确兜底 |
| Metal,GLM 5.3 | 可见 token ≤2051 时原生批处理,超出走有序兜底 |
| Metal,Qwen3.8 Flash Next(2026-09 中旬) | 原生批处理:读权重的 dense 工作整批一次,GDN 递归状态/注意力缓存/PLE 历史每 session 一份;槽共享一个 prefill 工作区(每 session 内存 ÷3.6 @ctx4096;C=16 聚合 ~50→~143 t/s @M5 Max);--mtp 时批处理推测解码(贪心组,≤16 session) |
| CUDA,DeepSeek Flash(受支持的 TP/EP 多卡布局) | 原生 decode + 混合 prefill/decode,不支持的 kernel 形状走精确兜底 |
| CUDA,V4.1 Q2 SSD(2026-09 中旬) | 最多 8 行 decode 批处理;更大混合 prefill 有序 |
| 双 Spark 网络 TP,V4.1(2026-09 中旬) | ≥5 个就绪 session 才批,小组有序更快 |
| CUDA 单卡(含 DGX Spark,Qwen) | 有序执行 |
N 个常驻 session 分配 N 份 KV 状态,所以"能装一次的上下文"未必能装 N 次。原生批处理提升聚合吞吐;有序兜底提供并发和公平性,但没有同样的加速。V4.1 的原生解码(ds41_sessions_batch_supported)要求各 session 有有效检查点、pos == checkpoint.len、非 SSD streaming、非质量采集,且 image_count == 0——原生批处理图没有逐行 Engram/图像抑制逻辑(见 engram)。Qwen 的原生批处理(qwen4_graph_native_session_batch_check)要求非图像、非 steering、非分布式、无待决快照。
注意:原生会话批处理激活时,MTP 推测解码被禁用——唯一例外是 Qwen3.8 on Metal(--mtp 批处理推测,逐周期"整批同进退"的起草决策)。批处理槽位路由(复用阶梯探测 + 陈旧度驱逐分层)2026-09 中旬重构,详见 Part 5 §6。
相关概念
- distributed-inference / tensor-parallelism — 常和批处理叠加做多用户服务(如 8×L40S +
--batched-session 16) - kv-cache — 每个 session 一份独立 KV,N 份常驻
- ssd-streaming — 闲置槽位可持久化到磁盘 KV 缓存后复用
详见 Part 5 — 会话批处理。