Mistral AI:探索LLM推理的吞吐、时延及成本空间

💡 原文中文,约6900字,阅读约需17分钟。
📝

内容提要

本文强调了选择正确的LLM推理栈的重要性,以及如何选择适合任务的模型和推理代码。作者提出了改善性能的技巧,如分组查询注意力、量化、分页注意力、滑动窗口注意力和连续批处理。还讨论了吞吐量、时延和成本,并提到了开源部署解决方案。最后,作者回答了听众提出的问题。

🔎

延伸解读

推理性能的关键:批大小与硬件平衡

文章指出,LLM推理中,批大小B*是平衡吞吐和时延的关键点。低于B*时,计算受内存带宽限制,时延恒定但浪费算力;高于B*时,时延增加。B*主要由硬件决定,如A10G和A100上约为400。然而,由于内存限制,实际最大批大小远低于理想值,例如7B模型在A10上最大批大小仅5,导致推理严重受限于内存带宽。因此,选择硬件时需考虑其浮点运算与内存带宽的比率。

优化技巧:从注意力到量化

文章介绍了多种优化技巧:分组查询注意力减少KV缓存内存;量化(int8/int4)可减半或四分之一模型大小,但速度提升有限;分页注意力通过块分配内存,提高吞吐量约20倍;滑动窗口注意力使用固定缓存,支持更长上下文;连续批处理建议对预填充分块,以降低时延。这些技巧可组合使用,但需注意量化可能带来精度损失,而分页注意力等尚未广泛实现。

成本与部署:从硬件选择到开源方案

文章强调,在A10上部署Mistral-7B模型处理百万请求每天仅需约15美元,成本低廉。选择处理器时,建议从便宜硬件开始测试,根据成本和可用性逐步升级。开源部署方案易用,但模型代码部分仍有改进空间,如减少Python开销。CUDA图是降低开销的有效方法,未来可能有更多优化工具。总体而言,开源工具使小型模型部署变得简单经济。

❓

Q&A

LLM推理中需要关注哪些关键指标?

吞吐量(每秒查询数)、时延(每词元秒数)和成本。吞吐量希望在批处理作业中最大化,时延希望最小化以提升用户体验,成本越低越好。

有哪些技巧可以改善LLM推理性能?

分组查询注意力、量化、分页注意力、滑动窗口注意力和连续批处理。这些技巧可以减少内存使用、提高吞吐量并降低时延。

如何选择适合特定模型的处理器?

建议从便宜的硬件开始测试,如果未达到所需吞吐量或速度再升级。考虑成本和可用性,按顺序尝试不同处理器。例如,A10适合每天百万请求,H100性能更好但更贵。

什么是分组查询注意力,它有什么好处?

分组查询注意力通过让多个查询共享同一组键和值来减少KV缓存大小。在Mistral中,每个键值对应四个查询,内存开销减少到四分之一,而浮点运算量不变,性能损失很小。

如何降低LLM推理中的Python开销?

推荐使用CUDA图,如xFormers库实现的零开销。也可以使用NVIDIA TensorRT或自定义内核(如融合)来减少内存带宽。未来torch.compile可能有效。

部署开源LLM推理栈的现状如何?

开源部署解决方案易于使用,在小型实例上部署小型模型效果良好。例如,在A10上使用Mistral-7B每天约15美元可处理百万请求。但模型代码部分仍需改进,未来模型速度会更快。

🏷️

标签

➡️

继续阅读