10月28日,DeepSeek在GitHub上开源了一个叫DeepInfer的项目。这次没有发新模型,放出来的是DeepSeek-V4.1-Flash背后的推理引擎,涵盖MoE专家并行、异步批调度、定制Kernel和推测解码。官方同时披露了一组规模数据:单个集群每天需要处理约155万亿个词元。同批还开源了生产级的词元编解码组件deepseek-recipe。
在一个每天跑155万亿词元的系统里,成本结构非常集中:GPU时间是绝对主项,任何一点浪费都会乘以所有轮次、所有小时、所有卡。这也解释了为什么这个量级的团队不会去追单点指标的漂亮,而是盯着每轮计算里的空转。
空转来自分工。传统的解码循环里,CPU先选请求、组批、准备KV缓存元数据,GPU跑前向与采样,CPU再把结果读回来、更新序列长度与请求状态,然后下一轮才开始。随着DeepGEMM、FlashMLA这类底层算子越做越快,GPU占每轮的时间变短,CPU调度与结果处理的占比反而上升。
解码阶段尤其明显。每轮只产出少量词元,CPU与GPU之间的交接极其频繁,空档一次次累积。这个瓶颈不在模型,也不在显卡,而在两者之间的配合方式上,属于典型的系统问题。
换个角度看,这类优化之所以重要,是因为推理成本的分母已经大到无法用别的方式解决。降低单位成本有两条路:换更便宜的硬件,或者让同样的硬件少空转。前者受制于供给与出口管制,后者完全取决于软件。当一家公司每天要处理155万亿词元,把GPU利用率从七成提到八成,省下的钱比一次架构升级更可观,而且不需要等下一代芯片。
这也是近一年推理框架竞争突然激烈的原因。各家都在同一个方向上做文章:把调度与计算重叠、把批处理做细、把显存管理做成流水线。差异不在思路,而在工程细节能不能扛住真实流量的抖动。
DeepInfer的核心机制叫Zero-Overhead Batch Scheduler。做法是把原本串行的调度与前向重叠起来:GPU在跑第N轮时,CPU已经在准备第N+1轮的批,并利用设备计算的空档处理更早一轮的采样结果。部分工作可以提前提交到GPU队列,依赖关系由CUDA Stream和Event维护。
难的从来不是流水线本身,而是跨轮次的状态一致性。CPU提前排程时,并不知道上一轮的推测解码实际接受了多少词元,于是查询长度、键长度、旋转位置编码都可能算错。
它的解法是记账加预占。系统维护total_inflight_tokens记录已下发但尚未落定的词元量,把这个在途量折进容量校验,提前预留KV缓存空间;用Remap把当前轮的请求顺序映射到上一轮保存的执行状态;再由设备侧Kernel修正长度参数,让注意力计算访问正确的上下文。WorkerStepState负责保存跨轮次的状态,包括序列元数据、调度输出、采样输出和对应的CUDA Event。
内存的生命周期要反向处理。同步循环里,一个请求结束后它的元数据可以立刻释放;异步流水线里GPU可能还持有引用。DeepInfer把这些释放排进队列,等到下一个同步点、用CUDA Event确认操作完成之后再解除引用。这段代码不产生任何可见的功能,但它决定了系统在高负载下会不会因为缓存被提前占用而抖动。
DeepSeek-V4.1-Flash的部署参数是预填充阶段专家并行2到8路,解码阶段64到128路。解码用这么宽的并行,是为了把读取MoE权重的成本摊到多张卡上,但代价是通信组里的每一张卡必须执行同一种步骤,否则集合通信会对不上。
DeepInfer用组内投票在两种模式之间协调。一种要求所有参与的rank都就绪才切到预填充,避免有卡空转;另一种允许一部分rank先触发组级预填充,让小批量请求不必在队列里干等。因为请求进队不代表这个rank有缓存容量接住它,系统还要做第二次确认,如果只有部分rank能排上,其余的执行一个空预填充步,以保持通信顺序不乱。
另一个杠杆是专家负载。路由会把更多词元送给热门专家,几张卡忙、其余卡等,整轮的耗时由最慢的那张决定。DeepInfer在GPU上保留冗余的专家副本,按运行时统计重新分配,测量窗口1000步、每10000步重平衡一次。官方给出的实测结果是慢rank的负载约为平均值的1.090倍,也就是最慢的那张卡只比平均多扛9%。
这次开放的是离线推理能力。线上服务相关的组件,包括KV缓存存储与跨副本负载均衡,并没有完整公开。这条界线划得很清楚:放出来的代码展示了DeepSeek如何安排大规模推理中的计算、通信与调度,但把决定服务经济性的那部分留在手里。
对想复现的团队,这仍然有实用价值。异步调度的状态机、预占与延迟释放的写法、组内投票的协调逻辑,这些是自研推理服务时最容易踩坑的地方,能读到一份生产级实现,比自己摸索省几个月。
硬件支持清单里有一句话值得读两遍:同时支持NVIDIA SM100 GPU与华为昇腾950 NPU。一个引擎同时为两套硬件做优化,意味着服务规模化的约束从"芯片能不能用"变成了"芯片能造多少"。在出口管制长期化的背景下,这个区别决定了扩张速度的上限。
从更大的视角看,开源重心的迁移已经很明显。过去两年比的是谁的模型参数更大、榜单更高,现在比的是谁能把模型变成便宜稳定的服务。模型给的是权重,推理框架给的是把权重变成收入的能力,后者更难复制,也更接近真实的商业护城河。