THE BIG PICTURE
把机制,放回系统里。
从四个协作层次,理解 DeepInfer 的职责与状态边界。
03
批处理与调度
在请求、token 预算和执行依赖之间安排每一轮工作。
FOLLOW THE SOURCE
沿着一条请求,读 DeepInfer。
01
LLM.generate02
LLMEngine.step03
Scheduler04
Worker05
ModelRunner06
Sampling07
State updates按职责追踪请求:入口、调度、执行、采样,再回到状态更新。一次 step 可能涉及多请求与多个 token;ZOS 后处理还可延迟到下一轮。下方链接固定到上游版本。
LLM / request entry
deepinfer/entrypoints/llm.pyEngine / coordination
deepinfer/engine/llm_engine.pyScheduler / batch planning
csrc/engine/scheduler.hppWorker / pipelined execution
deepinfer/worker/worker.pyModel runner / execution boundary
deepinfer/worker/model_runner.pySampler / selection and verification
deepinfer/model_executor/layers/sampler.pyOFFICIAL DESIGN / FIVE QUESTIONS
阅读官方文章从官方设计,理解系统取舍。
DeepSeek 官方文章《DeepSeek V4.1 Flash 大规模推理部署实践》介绍了 DeepInfer 背后的系统设计。用五个问题,把生产设计与课程中的框架机制连起来。
这一节回答
为什么把 Prefill 与 Decode 分开?
Prefill 处理输入上下文,Decode 持续生成后续 token。PD 分离为两类工作设置独立的资源与调度边界,并通过状态交接连接起来。读源码时,先分清请求当前处于哪个阶段,以及进入下一阶段需要什么状态。
阶段可以独立调度,状态交接仍是明确的依赖。
同一请求,不同阶段概念流程
01入口接入请求
02Prefill处理输入上下文
03状态交接准备下一阶段状态
04Decode推进后续生成
05输出汇集就绪结果
独立资源与调度边界,由状态交接连接。
概念关系
request → prefill → state_handoff → decode → output接着读源码课程
阅读边界生产设计;缓存服务与负载均衡基础设施未完整开源,源码入口以课程固定版本为准。8b16149