今天在跑Llama 3.1-70B的线上服务时,又遇到一个典型痛点:显存爆炸、首token延迟高。刚好聊聊最近社区里讨论最热的两项技术组合拳——KV Cache INT8量化 + 投机解码(Speculative Decoding)。
先说KV Cache量化。默认FP16存的KV Cache在长上下文场景下,70B模型单序列就要占掉近40GB显存(以128K上下文计算)。改用W8A8量化后,VLLM最新版实测显存占用下降约55%,而且精度损失在0.3%以内(MMLU评测)。注意这里要选对量化策略:针对attention层的KV Cache做per-token动态量化,避免静态校准导致的分布偏移。
另一个重头是投机解码。我们团队之前用“草稿模型+目标模型”框架,选了一个1.1B的StableLM-3B做draft,配合主模型做并行验证。在A100上测试,batch size=1时TTFT(首token生成时间)从340ms降到127ms,吞吐量直接翻倍。关键是选draft模型时要匹配vocab size,否则验证阶段频繁reject反而拖慢。
建议架构:KV Cache量化保显存,投机解码压延迟,两条线并行。先在这周代码审查里把量化回退机制加上,防止长尾case崩掉。有踩过拼写错误的同学欢迎跟帖讨论。 |