EMS以存代算
以存代算产生的背景
在AI推理过程中,Transformer模型接收用户的问题输入,并通过迭代方式生成相应的回答。每个Transformer层由自注意力模块和前馈网络模块组成。
在自注意力模块中,上下文词元(token)与模型参数结合,生成中间数据K(键)和V(值),并进行注意力计算。为避免在迭代生成过程中重复计算KV,生成的KV中间数据被存储在AI服务器的显存中,形成KV缓存。每个词元的KV缓存大小取决于模型的维度、层数以及数据精度,计算公式为:单个词元的KV缓存大小 = 模型维度 * 模型层数 * 数据精度 * 2。例如:GPT3模型的数据维度和层数分别为12288和96,在双字节精度下,单个词元的KV缓存大小为12288 * 96 * 2 * 2字节 = 4.5MB。
在推理过程中,每个推理请求所需的KV缓存大小与上下文长度成线性关系。例如:在GPT3模型的推理中,长度为2048的上下文将占用约4.5MB * 2048 = 10GB的AI服务器显存空间。
然而,AI服务器通常只能提供几十GB的显存容量,其中一部分还要用于存储模型参数,仅剩余部分空间用于KVCache缓存。例如:使用8张64GB的AI服务器部署GPT3模型,系统显存总容量为512GB(8 * 64GB),其中350GB用于模型参数,剩余162GB仅能支持16个(162GB / 10GB)2048上下文长度的推理请求缓存KV值。
因此,AI服务器能够同时处理的请求数量受限于显存容量。
综上所述,Transformer模型推理中存在严重的AI显存内存墙问题。为解决这一问题,EMS通过以存代算技术加速AI推理。
以存代算原理
在Transformer模型的推理过程中,由于AI服务器的显存容量限制,现有的推理系统无法在AI服务器的显存中持续保存多轮对话的KVCache缓存。为了应对这一问题,系统通常会丢弃已处理对话的KV缓存,以腾出显存空间来服务新的请求。然而,当这些被丢弃的KV缓存对应的对话再次出现时,系统必须重新计算这些KV缓存,如图1 中的(a)所示。这种重复计算不仅浪费了计算资源,还增加了推理成本。
为了减少成本并提升推理性能,EMS服务引入了以存代算技术CachedAttention,如图1 中的(b)所示。该技术利用EMS中的大容量分布式内存池来存储和复用多轮对话中产生的KVCache缓存,而不是直接丢弃它们。具体操作是,将一个会话对应的历史KV缓存保存到EMS中,当该对话重新激活时,再从EMS中加载并复用这些KV缓存,从而避免了重复计算。
通过以存代算技术,EMS有效地避免了多轮对话中的重复计算,显著降低了首字时延,提高了推理预填充阶段(Prefill阶段)的吞吐量,并降低了端到端的推理成本。
缓存系统性能优化
EMS还采用了以下技术来优化缓存系统性能,如图2所示:
- 采用异步保存和读取策略,以减少加载和保存KV缓存的时间。
- 利用多级缓存和分布式缓存架构,通过更大容量的存储介质提供充足的缓存空间。
- 通过自动感知调度器中的任务队列信息,实现多层次存储介质间的缓存调度,以提高访问效率。