推测解码在降低目标模型串行调用次数的同时,显存开销往往会明显上升。这种上升并非来自算法对目标模型权重的直接改变,而是因为推理服务需要同时维持两套模型和两套上下文状态:目标模型照常驻留,草稿模型则额外载入。草稿模型虽然通常规模更小,但权重本身仍会占用不可忽视的显存,并且草拟阶段还要产生自己的键值缓存与激活。
在草拟阶段,草稿模型根据已确认前缀连续生成候选词元,每生成一个位置都会积累对应的键值缓存。目标模型的原有前缀缓存并不能替代草稿模型的状态,因为两者的词元表示、层结构和概率输出通常不同。系统必须分别保存草稿模型与目标模型各自处理上下文时产生的缓存;在候选尚未完成验证前,这两套状态会同时存在。
验证阶段又带来第二层压力。目标模型不再逐步生成,而是在一次前向中计算整段候选序列。为了让每个候选位置都能基于对应的前缀做因果注意力,目标模型需要为候选序列中的多个位置同时分配键值缓存。候选越长,这一波验证缓存的峰值越高。更重要的是,标准随机采样验证在遇到拒绝时,还要利用修正后的分布继续采样,因此已确认前缀与部分候选位置的状态不能立刻释放。服务框架若为了回退而保留额外的缓存快照,峰值占用还会进一步增加。
高并发场景会放大上述叠加效应。每个请求都可能同时携带草稿模型的状态、目标模型已确认前缀的缓存以及候选验证缓存,显存压力会随批量请求上升。即使单个请求的额外占用有限,在多路并发下,两套模型与两套缓存同时常驻可能成为显存容量的实际瓶颈。
因此,判断推测解码是否适合某个部署,不能只比较词元生成速度。更现实的评估指标是目标硬件上的显存峰值与吞吐变化:草稿模型规模、候选长度、接受率、并发数以及回退策略都会影响最终占用。只有加速收益能够覆盖额外的显存与管理成本时,推测解码才是一项合理的取舍。
文章版权归作者所有,未经允许请勿转载。
本文链接:https://www.chatcpt.com.cn/thread/speculative-decoding-memory/
参与讨论
暂无评论,快来发表你的观点吧!