在LLM的推理场景中,传统的Auto-Regressive Decoding慢,是因为step-by-step导致了并发性不够。推理阶段属于内存带宽受限而计算资源过剩的阶段。因此,并行解码特性就是采用处理器中常用的“Speculative Execution”优化技术,通过额外的计算资源完成推测执行,提升并发性。但是,由于开启并行解码会使用Prompt输入维护前缀树和草稿token map,所以会对首token时延有一定影响。
并行解码的优势:
针对足够长度的输入输出或代码生成等场景的小batch推理,并行解码特性可利用算力优势弥补访存带宽受限的影响,提升算力利用率。同时因为通过验证token的比率会直接影响到并行解码的收益,因此贪婪场景更能充分发挥并行解码的效果,而采样或惩罚类操作会影响并行解码的收益空间。
为了发挥并行解码的优势,需满足如下前提:
- 当前的并发数不高,属于内存带宽受限、计算资源有冗余的情况。
- 有较长的输入作为猜测token的初步来源。
- 并行解码主要通过减少推理步数获取增益,因此需要一定长度的输出才有性能提升效果。
目前支持两种并行解码算法,差异主要在于候选token生成的方式不同。如所示。
表 1 并行解码算法 [object Object][object Object]
- Atlas 800I A2 推理服务器和Atlas 300I Duo 推理卡支持此特性。
- LLaMA3系列、Qwen2系列、Qwen2.5系列、Qwen3-14B和Qwen3-32B模型支持对接此特性。
- 并行解码支持的量化特性:W8A8量化与稀疏量化,其他量化特性暂不支持。
- 该特性不能和PD分离、Multi-LoRA、SplitFuse、长序列、MTP、异步调度以及多机推理特性同时使用。
- 该特性暂不支持n、best_of、use_beam_search、logprobs、top_logprobs等与多序列推理相关的后处理参数。
- 并行解码场景暂不支持流式推理。
- 并行解码惩罚类后处理仅支持重复惩罚。
- 并行解码场景暂不支持开启健康检查HealthCheck。
- lookahead和memory_decoding算法不可同时使能。
表 2 memory_decoding补充参数1:ModelDeployConfig中的ModelConfig参数 [object Object][object Object]
表 3 memory_decoding补充参数2:ModelDeployConfig的参数
表 4 memory_decoding补充参数3:ScheduleConfig的参数
表 5 lookahead补充参数1:ModelDeployConfig中的ModelConfig参数
表 6 lookahead补充参数2:ModelDeployConfig的参数 [object Object][object Object]