【论文】略读笔记58-前沿-大模型抢占式调度
📖《SpotServe: Serving Generative Large Language Models on Preemptible Instances》
2024 年发表于 CCF-A 类会议 ASPLOS,获 Distinguished Artifact Award 奖。
🎯需求
- 生成式大型语言模型(LLM)对计算和内存的要求很高,因此以低廉的价格为其提供服务具有挑战性。
- 生成式大型语言模型(LLM),如 ChatGPT 和 GPT-4,已在各种应用领域展示出创建自然语言文本的卓越能力,包括摘要、指令跟踪和问题解答。
- 然而,LLM 对计算和内存的要求很高,因此要在现代硬件平台上高效地为它们提供服务具有挑战性。
- 例如,GPT-3 包含 1750 亿个参数,需要超过 16 个英伟达 A100-40GB GPU 以单精度浮点方式存储模型参数,在 AWS 上为 GPT3 提供单个推理流水线服务的成本超过每小时 66 美元。随着 LLM 的规模逐渐增大,在普通云 GPU 实例上为其提供服务的成本会让大多数企业望而却步,尤其是那些预算有限的企业。
- 本论文旨在利用现代云上的可抢占式 GPU 实例来降低为 LLM 服务的货币成本,这些实例以比普通实例便宜得多的价格提供对空闲 GPU 资源的访问,但随时可能被云提供商抢占。在可抢占实例上服务 LLM 需要解决实例频繁被抢占所带来的挑战,以及迁移实例以处理这些抢占的必要性。
- 现代云提供了各种可抢占的 GPU 实例(例如 AWS spot instances 和 Azure spot VM),这为服务 LLM 提供了一种更经济实惠的方法。这些实例在现代云的空余容量上运行,**价格比按需实例低90%**。
- 然而,与按需实例不同的是,当其他实例需要容量时,现货实例可能随时被抢占。当现货实例被抢占时,现代云会提供一个宽限期(例如 AWS 现货实例的宽限期为 30 秒),允许实例完成运行任务并优雅地停止。
🚧现状
- 为了应对这一挑战,最近的研究引入了多种方法,通过将 LLM 分成多个子模型(每个子模型都部署在专用 GPU 上)来并行化 LLM 推断。
- 之前的研究已经推出了几种 DNN 服务系统,它们利用现货实例来降低 DNN 推断的货币成本。
- 这些系统(如 MArk、Cocktail)大多以小型 DNN 模型为目标,这些模型可以安装在一个或多个 GPU 的现货实例上,并使用请求重路由或冗余计算处理抢占。
- 虽然这些方法可以有效地利用数据并行性为小型模型提供服务,但它们无法扩展到 LLM,而 LLM 的服务需要结合数据、张量模型和管道模型并行性。
- 模型并行将最小推理粒度从单个 GPU 实例扩大到一组实例(即推理流水线),这就需要比重定向和冗余计算更有效的方法来处理抢占,因为抢占不再是独立的, 每次抢占都会影响同一推理流水线中的所有其他实例 。
- 之前的研究已经推出了几种 DNN 服务系统,它们利用现货实例来降低 DNN 推断的货币成本。
🤺挑战
- 本文介绍了 SpotServe,这是首个在现货实例上提供 LLM 服务的分布式生成系统。SpotServe 通过结合数据、张量模型和流水线模型并行性,在多个现场 GPU 实例上并行 LLM 推断,并产生与使用按需实例提供 LLM 完全相同的结果。
- 在现货 GPU 实例上提供 LLM 服务需要应对三大挑战:**(1)动态重并行化LLM推断;(2)低成本迁移实例;(3)有效利用宽限期**。我们将详细阐述这些挑战以及 SpotServe 用来克服这些挑战的关键理念。
- (1)挑战一:动态再并行化。要为 LLM 提供服务,就需要在多个 GPU 上并行处理模型参数和计算,同时使用操作器内(如数据和张量模型)和操作器间(如流水线模型)并行化策略。SpotServe 必须应对的第一个挑战是,由于实例抢占和收购,可用的 Spot 实例数量经常变化,这就需要动态调整并行化配置,以实现优化的 LLM 服务性能,我们将这一问题称为动态再并行化。
- 解决方案:为应对这一挑战,SpotServe 的并行化控制器可根据现货实例可用性的变化,动态调整为 LLM 服务的并行化策略。SpotServe 同时考虑了并行化策略的推理延迟和服务吞吐量,并使用混合优化算法来平衡吞吐量和延迟之间的权衡。动态重新并行化 LLM 推理使 SpotServe 能够快速适应现货实例可用性和请求到达率的变化。
- (2)挑战二:实例迁移。SpotServe 必须应对的第二个挑战是最大限度地降低为重新并行化而迁移 GPU 实例的成本。特别是在过渡到不同的并行化策略时,SpotServe 必须重新初始化所有现货实例,以纳入新的模型参数并建立新的通信组。之前在 Spot 实例上提供小型 DNN 模型的工作假定,重新初始化 Spot 实例的开销可以忽略不计。然而,我们发现这一假设对 LLM 并不成立,因为从头开始重启 LLM 服务会产生大量开销。例如,在 AWS 上,从持久存储中加载一个包含 1200 亿个参数的 GPT 模型需要 2 分钟以上的时间。
- 解决方案:为了最大限度地降低重新并行化的迁移成本,SpotServe 伺机重用模型参数和中间结果,如推理请求的键/值缓存(见第 2 节),以避免实例之间不必要的通信。在 SpotServe 中,将可用的现货实例映射到并行化策略的设备网格的任务被形式化为一个双方图匹配问题,该问题利用 Kuhn-Munkres(KM)算法来确定最佳设备映射,从而最大限度地降低为重新并行化而迁移现货实例的成本。此外,为了决定迁移实例的顺序,SpotServe 的迁移规划器利用管道阶段的顺序执行顺序,将实例迁移与推理计算重叠。
- (3)挑战三:宽限期。利用现代云提供的宽限期会带来另一个挑战,因为 LLM 的推理时间可能会超过宽限期,从而导致请求未完成。在现有的现货实例服务系统中,这些未完成的请求通常会被转发到其他推理管道,这些请求的推理计算会从头开始。这种方法不能有效利用宽限期,并导致冗余计算。
- 解决方案:为了利用宽限期,SpotServe 利用了 LLM 的自回归特性,并引入了有状态的推理恢复,这使得 SpotServe 中的推理引擎能够在令牌级而非之前工作中的请求级提交其进度。SpotServe 的推理引擎使用即时 (JIT) 安排来决定何时将已提交标记的键/值缓存迁移到其他可用实例,这些实例使用缓存结果来恢复推理。
- (1)挑战一:动态再并行化。要为 LLM 提供服务,就需要在多个 GPU 上并行处理模型参数和计算,同时使用操作器内(如数据和张量模型)和操作器间(如流水线模型)并行化策略。SpotServe 必须应对的第一个挑战是,由于实例抢占和收购,可用的 Spot 实例数量经常变化,这就需要动态调整并行化配置,以实现优化的 LLM 服务性能,我们将这一问题称为动态再并行化。
🛩创新
- 本文介绍了 SpotServe,它是第一个在可抢占实例上的分布式 LLM 服务系统。
- SpotServe 中的几项关键技术实现了在廉价的可抢占实例上快速、可靠地提供生成式 LLM 服务。
- 首先,SpotServe针对动态实例可用性和波动的工作量动态调整LLM并行化配置,同时平衡整体吞吐量、推理延迟和货币成本之间的权衡。
- 其次,为使动态并行化迁移实例的成本最小化,SpotServe 将迁移实例的任务表述为一个双方图匹配问题,并使用 KuhnMunkres 算法确定一个能使通信成本最小化的最佳迁移计划。
- 最后,为了利用现代云平台提供的宽限期,我们引入了有状态推理恢复,这是一种新的推理机制,能以更精细的粒度提交推理进度,并允许SpotServe在抢占时以低成本恢复推理。
📊效果
- 通过上述技术,SpotServe的性能明显优于现有方法。我们在真实轨迹和各种 LLM 上对 SpotServe 进行了评估,结果表明,与现有的 LLM 服务系统相比,SpotServe 可将 P99 尾部延迟降低 2.4 - 9.1 倍。此外,与按需实例相比,SpotServe 还能在保持接近的平均推理延迟的情况下,利用现货实例将 LLM 服务的货币成本最多降低 54%。代码开源于:https://github.com/Hsword/SpotServe。
⛳️未来机会
- 方法有一定的局限性,因此有一些未来的研究方向:
- 1)首先,SpotServe 的关键理念是主动处理实例可用性变化,这在很大程度上依赖于宽限期。虽然目前所有云提供商都提供了这一功能,但仍值得探索更有远见的解决方案来提高系统性能,例如与推理工作量预测或实例可用性预测相结合。
- 2)其次,我们的方法主要针对单一GPU实例类型。也有可能整合异构现货实例,甚至整合来自不同云的实例(如 SkyPilot ),以获得金钱上的优势。这些场景也为 SpotServe 中的上下文迁移带来了新的挑战。
- 3)最后,我们的方法目前将推理延迟最小化作为优化目标。正如我们在第 3.2 节中提到的,探索其他目标(如严格的 SLO、高吞吐量)以满足不同推理场景的需求仍然很有意义。
- 4)此外,并行化配置的探索空间还可以扩大,以支持未来新出现的大模型变体(如混合专家)。
- 5)虽然 SpotServe 专注于现货实例,但我们的技术可以很容易地推广到其他可抢占的资源,例如,资源调度器可以为紧急作业抢占资源,并产生切换开销。我们相信,我们的方法为可抢占实例的分布式推理提供了一个新范例,从 SpotServe 的设计中获得的启示可以激励沿着这个方向开展各种后续研究。
🧠疑问
- 最大的亮点在于发现问题并用于实际系统,那么一个算法的新颖性该如何体现?如果审稿人说“我看不出你的创新点”又该如何回答?
- 为什么场景定位在推理任务?如果放在训练任务场景下故事是否能说得通?如果不能,说不通的原因是什么?隐含的推理作业的特点是什么?
- 希望这篇博客对你有帮助!如果你有任何问题或需要进一步的帮助,请随时提问。
- 如果你喜欢这篇文章,欢迎动动小手 给我一个follow或star。
🗺参考文献
- 标题: 【论文】略读笔记58-前沿-大模型抢占式调度
- 作者: Fre5h1nd
- 创建于 : 2024-09-10 20:58:20
- 更新于 : 2024-09-12 15:38:51
- 链接: https://freshwlnd.github.io/2024/09/10/literature/literatureNotes58/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论