Multi-Bin Batching for Increasing LLM Inference Throughput
本文提出了多桶批处理(Multi-Bin Batching),这是一种将预测执行时间相似的 LLM 请求归入预设桶中的控制策略,旨在证明在静态批处理下能最大化推理吞吐量,从而显著减少由生成长度差异导致的资源利用不足问题。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
在数字时代,大语言模型已成为新一波智能工具背后的引擎,能够编写故事、调试代码并回答复杂问题。这些系统通过逐个预测序列中的下一个词(即一个 token)来工作,这一过程需要巨大的计算能力。为了让这些系统能同时为许多人提供服务,服务器必须能够同时处理数千个请求。实现这一目标的标准方法是一种称为“批处理”(batching)的技术,即计算机将多个请求组合在一起并同时处理它们,就像一辆巴士载着多名乘客前往同一个目的地一样。这种并行处理对于提高速度至关重要,但也引入了一种微妙的低效:整个小组必须等待最慢的乘客准备就绪后,巴士才能出发进行下一次行程。如果十个人中的某一个人需要很长时间才能准备好,而其他人则能瞬间准备就绪,那么计算机就会处于闲置状态,等待那个缓慢的请求,从而浪费宝贵的时间和能源。
研究人员长期以来一直在寻求一种既不放弃批处理效率,又能解决这种“等待游戏”的方法。一项新研究提出了一种名为“多箱批处理”(multi-bin batching)的解决方案,该方法根据预期完成时间的长短,将传入的请求组织到不同的等待队列中。系统不再将每个请求都扔进一个混合队列,而是预测每个用户想要答案的长度,并将它们分类到不同的“箱子”(bins)中。可能较短的请求进入一个箱子,而可能较长的请求进入另一个箱子。随后在这些箱子内形成批次,确保任何单一组内的请求在持续时间上尽可能接近。这防止了快速请求被缓慢请求所耽搁,使得计算机能够更快地完成一组任务的工作并开始下一组任务。
研究人员使用一个数学框架对这一想法进行了测试,该框架将服务器视为处理稳定请求流的单台机器。他们证明,通过增加箱子的数量,系统可以越来越接近一个理论上的最大速度,即不因等待落后者而浪费任何时间。在分析中,他们表明如果箱子的设置得当,计算机等待一组任务完成的时间将显著减少。研究还探讨了当生成答案所需的时间遵循特定的统计模式时的情况,证实了即使在时间不可预测的情况下,该逻辑依然成立。其核心发现是,仅仅将相似的任务聚集在一起,而不是按到达顺序进行处理,就可以大幅减少困扰当前系统的闲置时间。
为了验证这一理论在现实世界中是否可行,团队使用一种流行的开源模型在一块高端显卡上进行了实验。他们将这种新方法与标准的批处理方式,以及一种允许新请求在空位出现时立即加入组的更先进系统——“连续批处理”(continuous batching)进行了对比。在研究人员确切知道每个答案将持续多久的受控测试中,他们的多箱方法(使用十六个箱子)比标准方法提高了 150% 以上。在这种特定场景下,它甚至略微超过了连续批处理系统,这表明如果你能完美预测任务将持续多久,将它们进行分类分组是一种非常有效的策略。
然而,现实世界很少如此可预测。当研究人员将该方法应用于真实的用户问题数据集时(在这种情况下,他们必须估算答案的长度而非确切知晓),结果虽然依然令人印象深刻,但却较为平庸。使用一种轻量级工具来猜测响应长度,多箱系统比标准方法提高了 150% 的吞吐量,这是一个巨大的提升。然而,它仍然逊色于连续批处理系统,后者依然是最快的。估算结果与“完美知识”结果之间的差距表明,预测的准确性至关重要:当系统正确猜测长度时,性能会大幅跃升。这表明,虽然排序策略非常强大,但其全部潜力取决于是否拥有一种非常好的预测任务开始前持续时间的方法。
研究结论指出,这种分箱方法并非要取代现有的复杂系统,而是一个可以添加到其中的强大工具。通过在请求进入主处理队列之前充当智能排序机制,它可以帮助现代服务器更高效地处理流量。研究人员发现,箱子的数量就像一个调节旋钮:箱子太少,系统仍会受到速度不匹配的影响;箱子太多,排序请求所花费的时间可能会拖慢速度。最佳平衡点取决于特定的工作负载以及系统预测任务长度的准确程度。最终,这项工作表明,仅仅改变请求分组的方式——将相似的任务视为邻居而非陌生人——就能为驱动我们日常数字生活的人工智能系统解锁显著的速度提升。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。