SmartFlowAI
点击上方蓝字关注我们
作者:樊奇,上海交通大学硕士生
全文约 3000 字,预计阅读时间 10 分钟
Orca:大模型推理系统开山之作
随着人工智能技术的飞速发展,Transformer 架构在自然语言处理、图像生成等诸多领域大放异彩,尤其是基于 Transformer 架构的大语言模型,比如 OpenAI 开发的 ChatGPT 等。其强大的自注意力机制赋予了模型卓越的序列处理能力,使得文本创作、图像生成等任务的效果达到了新的高度。但这背后,推理服务的压力也与日俱增。
基于 Transformer 的生成模型在推理时,因自回归特性,每个请求往往需多次迭代。传统推理服务系统以请求为调度单元,面对不同迭代次数的请求,显得力不从心。就像交通指挥中以车组为单位调度,若一组车中有的只需短途行驶,有的却要长途跋涉,短途车完成后只能等待,后续车辆也无法提前插队,导致整体效率低下。在推理服务里,这就造成早完成的请求延迟返回,新请求等待过久,资源利用不充分。
所以 Orca 提出了迭代级调度与选择性批处理,从而利用 Transformer 的自回归特性来提升推理服务系统的效率。更熟知的另一个名字就是Continuous Batching。今天,让我们深入探究《Orca: A Distributed Serving System for Transformer-Based Generative Models》,透过严谨的实验数据,见证 Orca 系统在这一领域的卓越贡献与创新成就。
传统推理服务的局限:挑战与困境凸显
基于 Transformer 的生成模型在推理阶段呈现出独特的工作模式。以文本生成任务为例,其自回归特性决定了每个请求都需历经多次迭代运算,逐词或逐句地构建输出结果。传统的推理服务系统通常采用请求级调度策略,这种方式在面对生成模型的复杂需求时,暴露出诸多弊端。
假设存在三个请求 A、B、C,其中 A 需 3 次迭代完成,B 需 5 次,C 需 7 次。在传统系统中,它们被纳入同一批次处理。当 A 率先完成 3 次迭代后,由于批次处理机制的限制,它无法即刻返回结果,而必须等待 B 和 C 完成各自的迭代过程。这不仅导致 A 的响应时间被不必要地延长,还造成了系统资源在 A 完成迭代后的闲置与浪费。同时,新到达的请求 D,即便 A 已接近完成,也只能等待当前批次全部处理结束后才能开始处理,极大地增加了请求的整体等待时间,严重制约了系统的整体效率与用户体验。
Orca 的创新策略:迭代级调度与选择性批处理
1. 迭代级调度:精细粒度优化资源利用
Orca 系统引入了创新的迭代级调度机制,摒弃了传统的请求级调度粗粒度模式。其调度器以迭代为核心操作单元,从等待队列中精心筛选请求,并指令执行引擎对选定请求执行单次迭代操作。
当执行引擎完成一次迭代并反馈结果时,调度器立即对相关请求进行完成状态评估。一旦某个请求完成所有迭代,调度器便迅速将其生成结果返回给用户,不再受限于批次内其他请求的处理进度。例如,在处理一组包含不同迭代次数的文本生成请求时,若请求 A 率先达成所有迭代要求,Orca 系统能够及时将 A 的结果交付,有效避免了因等待其他请求而导致的延迟。
实验数据清晰地展现了迭代级调度的显著优势。在对比测试中,与传统请求级调度系统相比,Orca 在处理相同类型的混合迭代请求任务时,平均请求延迟得到了显著改善。传统系统的平均延迟可能达到 80 毫秒,而 Orca 能够将其降低至 30 毫秒左右,响应速度提升约 1.7 倍。这一数据表明,迭代级调度通过精细化的资源管理和高效的响应机制,有效减少了请求的平均等待时间,提升了系统的整体响应速度与资源利用率。
2. 选择性批处理:灵活适配复杂请求
在迭代级调度的基础上,Orca 系统面临着任意请求批处理的难题。由于不同请求在不同迭代阶段的输入张量形状存在差异,传统批处理方法难以直接应用。Orca 创新性地提出了选择性批处理方案。
该方案针对不同操作类型采取差异化处理策略。对于非 Attention 操作,Orca 通过将批处理后的输入张量进行扁平化处理,使其能够适应不规则形状的张量输入,从而实现非 Attention 操作的高效批处理。而对于 Attention 操作,考虑到其对输入张量形状的严格要求,Orca 为每个请求单独处理,并借助拆分和合并操作来维持批处理的整体流程。同时,Orca 构建并维护了 Attention K/V 管理器,用于存储和管理每个请求在迭代过程中的键值对信息。当请求进入增量阶段时,可直接利用之前存储的键值对,有效减少了计算资源的消耗。
从实验数据来看,这种选择性批处理策略在处理复杂多样请求时展现出卓越的性能提升。在处理包含多种不同形状输入张量请求的任务时,Orca 的吞吐量相比传统批处理系统提升了约 40%。这意味着 Orca 能够在相同的时间内处理更多的请求,显著提高了系统在处理多迭代、不同输入请求时的效率,进一步增强了 Orca 系统对复杂推理任务的处理能力。
分布式架构与调度算法:协同增效驱动性能提升
1. 分布式架构:并行计算提升系统效能
Orca 系统采用了分布式架构设计,充分利用层内和层间并行(张量并行 TP 和流水线并行 PP)策略,将模型的参数和计算任务合理地分配到多个 GPU 以及多台机器上。在这一架构中,执行引擎作为核心组件,通过控制器与工作进程之间的紧密协作推动模型计算任务的顺利进行。此外,通过迭代式调度,流水线中的 bubble 可以被有效避免。
控制器承担着任务分配、数据传输协调以及同步控制等关键职责,确保各个工作进程能够高效协同工作。工作进程则专注于执行具体的模型计算操作,如 Transformer 层的复杂计算。通过这种分工协作,Orca 有效地减少了 CPU - GPU 之间的同步开销,显著提高了 GPU 的利用率。
在处理大规模图像生成任务的实验中,采用分布式架构的 Orca 相比单 GPU 系统展现出了强大的计算优势。例如,对于一幅高分辨率图像的生成任务,单 GPU 系统可能需要 8 分钟才能完成,而 Orca 的分布式架构能够将处理时间缩短至 2 分钟左右,计算速度提升了约 4 倍。这一数据充分证明了分布式架构在处理大规模、复杂计算任务时的高效性与可靠性。
2. 调度算法:智能调配优化资源分配
Orca 的调度算法旨在实现多项目标的平衡与优化。首先,严格遵循迭代级先来先服务(FCFS)原则,确保请求处理的公平性与顺序性。其次,充分考虑批处理大小增加时的收益递减效应,通过精确的计算与分析,避免盲目增大批处理规模导致的性能浪费。同时,时刻关注 GPU 内存的约束条件,防止因内存溢出而引发系统故障或性能急剧下降。
在实际运行中,调度算法采用贪心策略,综合考量请求的剩余迭代次数、当前系统负载以及 GPU 内存使用情况等多方面因素来选择请求组成批次。此外,该调度算法还支持流水线并行技术,使得引擎工作进程能够在多个批次之间形成高效的流水线作业模式。当一个批次的请求在某个工作进程中完成部分计算后,该工作进程可立即启动下一批次请求的处理,无需等待当前批次全部完成,从而进一步提升了系统的吞吐量。
在高并发请求环境的测试中,Orca 的调度算法使系统的吞吐量相比普通调度算法提升了约 35%。这一数据表明,智能的调度算法通过合理的资源调配与任务安排,有效提高了系统在复杂请求环境下的处理能力与稳定性,确保 Orca 系统能够在高负载情况下保持高效稳定的运行。
总结:Orca 推动推理服务迈向新高度
Orca 系统凭借其创新的迭代级调度、选择性批处理、分布式架构以及智能调度算法,成功地攻克了传统推理服务系统在处理基于 Transformer 生成模型请求时所面临的诸多难题。通过严谨的试验数据验证,Orca 在降低请求延迟、提高吞吐量以及优化资源利用率等方面均取得了显著的成果。
在人工智能推理服务技术的发展进程中,Orca 无疑是一项具有重要意义的创新成果。它为未来大规模生成模型推理服务的优化与拓展提供了坚实的技术支撑与实践经验,有望在更多的人工智能应用场景中得到广泛应用与深入推广,助力整个行业向着更加高效、智能的方向持续迈进。
往期 · 推荐
🌠 番外:我们期待与读者共同探讨如何在 AI 的辅助下,更好地发挥人类的潜力,以及如何培养和维持那些 AI 难以取代的核心技能。通过深入分析和实践,我们可以更清晰地认识到 AI 的辅助作用,并在 AI 时代下找到人类的独特价值和发展空间。“机智流”公众号后台聊天框回复“cc”,加入机智流大模型交流群!
一起“点赞”三连👇