Press "Enter" to skip to content

北京大学研究人员推出FastServe:用于大型语言模型(LLMs)的分布式推理服务系统

北京大学研究人员推出FastServe:用于大型语言模型(LLMs)的分布式推理服务系统 四海 第1张北京大学研究人员推出FastServe:用于大型语言模型(LLMs)的分布式推理服务系统 四海 第2张

大型语言模型(LLM)的改进在各个领域创造了机遇,并激发了一波新的交互式人工智能应用的浪潮。其中最值得注意的是ChatGPT,它使人们能够与AI代理进行非正式的交流,解决从软件工程到语言翻译的问题。由于其出色的能力,ChatGPT是历史上增长最快的项目之一。许多公司都追随这一趋势发布了类似LLM和ChatGPT的产品,包括微软的新Bing、谷歌的Bard、Meta的LLaMa、斯坦福大学的Alpaca、Databricks的Dolly和加州大学伯克利分校的Vicuna。

LLM推理与其他深度神经网络(DNN)模型推理(例如ResNet)不同,因为它具有特殊的特点。建立在LLM上的交互式人工智能应用必须提供推理功能。这些应用的交互设计要求LLM推理具有快速的作业完成时间(JCT),以提供引人入胜的用户体验。例如,当用户将数据提交到ChatGPT时,他们期望立即得到回应。然而,由于LLM的数量和复杂性,推理服务基础设施面临巨大压力。企业建立昂贵的集群,并配备了GPU和TPU等加速器来处理LLM推理操作。

DNN推理任务通常是确定性的,高度可预测的,即模型和硬件在很大程度上决定了推理任务的执行时间。例如,使用同一ResNet模型在某个GPU上处理不同的输入照片,其执行时间会有所变化。相反,LLM推理具有独特的自回归模式。LLM推理工作经过多轮迭代。每次迭代产生一个输出标记,然后将其添加到输入中,以在下一轮迭代中生成后续标记。输出长度在开始时是未知的,它既影响执行时间,也影响输入长度。大多数确定性模型推理任务(例如ResNet执行的任务)都可以通过现有的推理服务系统(如Clockwork和Shepherd)来处理。

这些系统基于精确的执行时间分析进行调度决策,但对于具有可变执行时间的LLM推理来说是无效的。LLM推理的最先进方法是Orca。它建议在每次迭代后将新任务添加到当前处理批处理中,或者删除已完成的任务。然而,它使用先来先服务(FCFS)的方式处理推理任务。调度的任务将持续运行,直到完成。由于受限的GPU内存容量和推理任务的低JCT要求,处理批处理不能随着任意数量的传入函数而增加。完成运行的处理中的先行阻塞是众所周知的问题。

由于LLM庞大且执行时间较长,这个问题对LLM推理操作尤为严重。大型LLM推理任务,特别是输出长度较长的任务,将花费很长时间才能完成,并阻塞后续的短任务。北京大学的研究人员开发了一种名为FastServe的分布式推理服务解决方案,用于LLM。为了实现每个输出标记级别的抢占,FastServe使用了迭代级别的调度和LLM推理的自回归模式。FastServe可以选择在生成输出标记后继续进行计划任务,或者通过排队中的其他任务来抢占它。这使得FastServe可以通过抢占式调度来减少JCT和先行阻塞。

独特的跳过连接多级反馈队列(MLFQ)调度器是FastServe的基础。MLFQ是一种在无信息环境下最小化平均JCT的著名方法。每个任务在最高优先级队列中开始,如果在一定时间内未完成,则降级到下一个优先级队列。LLM推理是半信息不可知的,这意味着虽然不知道输出长度,但知道输入长度。这是LLM推理与传统情况之间的主要区别。输入长度决定了创建初始输出标记的执行时间,由于LLM推理的自回归模式,这可能比后续标记的执行时间要长得多。

当输入较长且输出较短时,初始输出标记的执行时间占据了大部分工作量。他们将这一特性用于将跳过连接添加到传统的MLFQ中。每个到达的任务通过将第一个输出标记的执行时间与队列的降级阈值进行比较,而不总是进入最高优先级队列中的适当队列。绕过高优先级队列以最小化降级。使用MLFQ进行抢占式调度会增加额外的内存开销,以保持已开始但未完成的作业处于中间状态。LLM为每个Transformer层维护一个键值缓存,用于存储中间状态。只要批处理大小未超过,FCFS缓存需要存储计划任务的中间状态。然而,可能已经开始了MLFQ中的其他任务,但它们被降级到优先级较低的队列中。MLFQ中的所有已开始但未完成的作业都必须由缓存维护中间状态。考虑到LLM的大小和GPU的受限内存空间,缓存可能会溢出。当缓存已满时,调度器可能会简单地延迟启动新的作业,但这又会导致先行阻塞。

相反,他们开发了一种高效的GPU内存管理系统,当低优先级队列中的进程被调度并且缓存快满时,主动将进程状态上传,并在缓存快满时卸载状态。为了提高效率,他们采用了流水线和异步内存操作。FastServe使用张量和流水线并行等并行化技术,为无法放入一个GPU中的大型模型提供分布式推理服务。为了减少流水线冒泡,调度程序同时执行多个批次的作业。键值缓存由键值缓存管理器组织,并且管理GPU和主机内存之间的内存交换。他们基于NVIDIA FasterTransformer实现了FastServe系统原型。结果表明,与最先进的解决方案Orca相比,FastServe平均和尾部JCT分别提高了5.1和6.4。

Leave a Reply

Your email address will not be published. Required fields are marked *