Training Variable Long Sequences with Data-Centric Parallel
本文介绍了以数据为中心的并行(Data-Centric Parallel, DCP),这是一种简单且具有通用性的方法,它通过根据批次序列长度动态调整运行时设置,消除了在处理可变长序列时训练深度学习模型所面临的效率与易用性之间的权衡,在仅需极少代码集成的情况下实现了高达 2.88 倍的加速。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正试图教一个超级聪明的机器人如何理解世界。为了做到这一点,你向它输入海量的数据,比如数千小时的视频、数百万页的文本或复杂的科学模型。机器人通过观察这些信息的“序列”来学习。但问题在于:并非所有的序列长度都相同。有些很短,比如一条简短的推文;而有些则非常长,比如一部完整的电影或一整本书。
在训练这些机器人时,你通常会将工作分配给许多强大的计算机(称为 GPU)协同工作。这就像是在一个巨大的厨房里,由一群厨师组成的团队在协作。如果每位厨师拿到的食谱大小都一样,他们就会同时完成,然后一起开始下一道菜。但在现实世界中,食谱的大小差异巨大。一位厨师可能只拿到一份小巧的开胃菜,而另一位厨师则可能拿到了一场盛大的十道菜大餐。拿到大订单的厨师完成任务需要很长时间,而拿到小订单的厨师在几秒钟内就做完了,结果只能在那儿无所事事地等待。这被称为“工作负载不平衡”,它浪费了大量的资源和精力。科学家们面临的挑战是:如何在不让系统变得过于复杂、以至于无法使用的前提下,让厨房高效运转。
这正是由新加坡国立大学的研究人员提出的名为 数据中心并行 (Data-Centric Parallel, DCP) 的新方法所解决的问题。DCP 不再强迫所有数据进入一个僵化的、一刀切的系统,而是让数据本身来决定如何开展工作。想象一下一位聪明的厨房经理,他会观察每一个订单,并立即做出决定:“好吧,对于这个小小的开胃菜,我们只用一名厨师快速完成即可。对于这场盛大的宴席,我们要调动整个团队同时进行切配和烹饪。”
论文发现,通过为每一批数据动态调整团队规模和烹饪策略,可以使训练过程快得多。在他们使用 32 块强大的 H200 GPU 进行测试时,这种方法使训练速度比旧方法提高了高达 2.88 倍。他们还展示了该系统的极高灵活性:只需 10 行代码 即可将此系统添加到几乎任何新的 AI 模型中,使其成为一个简单且强大的未来 AI 工具。
问题所在:“观望式”厨房
为了理解为什么这件大事如此重要,让我们看看过去是如何运作的。过去,研究人员尝试通过两种主要方式来解决“不均匀订单”的问题,但这两种方式都有严重的缺陷。
第一种方式就像是一位严格的主厨说:“无论订单多大或多小,我们始终使用 8 名厨师。”如果订单是一个微小的开胃菜,那么 7 名厨师就会站在旁边看着第 8 名厨师干活。这被称为 分桶并行 (Bucket Parallel)。它很简单,但极其浪费。处理小订单的厨师瞬间就完成了,但整个厨房必须等待最慢的厨师完成大订单后,才能开始下一轮。这导致了大量的闲置时间。
第二种方式是尝试通过减少大订单厨师同时处理的食材数量来平衡负载。这就像是告诉那位正在做十道菜大餐的厨师,一次只能做一个菜品,而做开胃菜的厨师则可以一次性完成整个流程。这被称为 打包并行 (Packed Parallel) 或调整批次大小。虽然这能帮助厨师们同时完成工作,但也产生了一个新问题:厨房必须去储藏室取食材的次数会大大增加。在计算机术语中,这意味着通信成本的大幅增加,从而拖慢了整体速度。
研究人员认为,核心问题在于这些旧方法依赖于 静态设置——即在烹饪开始前就定死的规则。它们没有让数据在运行时实时改变计划。
解决方案:一个动态的、数据驱动的经理
新的方法 数据中心并行 (DCP) 通过让数据驱动运行时,改变了游戏规则。它不再依靠固定的规则手册,而是一个智能的、自适应的管理者,它会观察序列的长度(即订单),并立即调整设置。
研究人员将其分解为两个巧妙的策略:
DCP-inter(“团队协作”策略):
该策略专注于在不浪费食材的情况下平衡工作负载。如果一批数据包含一个非常长的序列(一个大订单),系统不会通过减少批次大小(这会导致前面提到的通信开销)来应对,而是使用 梯度累积 (gradient accumulation)。可以将其想象为让厨师将大订单分成几个较小的步骤来完成,但保持团队规模不变。它通过让快速工作的成员在不减慢整个厨房节奏的前提下,协助处理大订单,从而填补了“闲置时间”。它平衡了每个人投入的时间,同时又不降低短订单的效率。DCP-intra(“记忆”策略):
该策略解决了内存问题。在处理长序列训练时,计算机通常需要保存大量的“中间笔记”(激活值/activations),以便稍后计算最终答案。这会占用大量内存。为了节省空间,人们通常使用一种叫做 梯度检查点 (gradient checkpointing) 的技巧,即丢弃这些笔记并在稍后重新计算。这节省了内存,但需要额外的时间来重新进行数学计算。
研究人员注意到,对于 短 序列,计算机实际上有充足的剩余内存。因此,DCP-intra 提出:“嘿,对于这些短订单,我们不需要丢弃笔记!让我们保留它们并跳过重新计算的过程。”这让短订单的速度变得更快。如果计算机处理长订单时内存不足,它只需调整团队规模(序列并行)来腾出空间,而不会降低效率。
结果:速度与简洁
研究人员在两种不同类型的 AI 模型(一种用于 1D 数据如文本,另一种用于 2D 数据如视频)上,使用三种不同类型的数据集(短序列、平衡序列和长序列)测试了这种新方法。他们在由 32 块 NVIDIA H200 GPU 组成的集群上运行了这些测试。
结果令人印象深刻。与旧有的“分桶”方法相比,仅使用 DCP-inter 就使训练速度提高了 1.68 到 2.70 倍。当他们加入第二个策略(DCP-intra)来优化内存使用时,提速效果更高,在最具挑战性的数据集上达到了 2.88 倍。
或许最重要的一点是,研究人员发现这个系统非常易于使用。他们证明了只需更改 10 行代码,就可以将 DCP 集成到几乎任何现有的 AI 模型中。这表明该方法不仅是一个理论构想,更是一个可以被广泛采用的实用工具。
这意味着什么
论文指出,通过放弃僵化、预设的规则,转而让数据本身决定训练如何进行,我们可以解决 AI 训练中效率低下的老问题。研究人员通过在强大硬件上的真实模拟测量了这些加速效果,证明了该方法在不同模型规模和数据分布下都能表现良好。
虽然目前的方法仅限于 Transformer 模型(这是大多数现代文本和图像生成 AI 所使用的类型),但作者相信这种方法树立了一个新的标准。它证明了你不需要在“易用性”和“高效性”之间做选择。有了数据中心并行(DCP),你可以两者兼得,为未来训练更大、更复杂的 AI 模型铺平道路。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。