EfficientTrain++:一种高效视觉骨干训练的新突破

2024-11-07 22:23   安徽  

EfficientTrain++:高效视觉骨干训练的广义课程学习


论文标题:EfficientTrain++: Generalized Curriculum Learning for Efficient Visual Backbone Training

论文链接:https://arxiv.org/pdf/2405.08768v1

代码链接:https://github.com/LeapLabTHU/EfficientTrain


点击上方卡片,关注“AI学术工坊”公众号

各种重磅干货,第一时间送达

作者:Yulin Wang, Yang Yue, Rui Lu, Yizeng Han, Shiji Song, Gao Huang

摘要

现代计算机视觉主干(例如,在 ImageNet-1K/22K 上学习的视觉 Transformers)的卓越性能通常伴随着昂贵的训练过程。本研究通过推广课程学习的理念来解决这一问题,超越了其原始表述,即使用从易到难的数据训练模型。具体来说,我们将训练课程重新表述为软选择函数,它在训练过程中逐渐发现每个示例中更难的模式,而不是执行从易到难的样本选择。我们的工作受到对视觉主干学习动态的一个有趣观察的启发:在训练的早期阶段,模型主要学习识别数据中的一些“更容易学习”的判别模式。当通过频域和空间域观察时,这些模式结合了低频分量和自然图像内容,而不会失真或数据增强。受这些发现的启发,我们提出了一种课程,其中模型始终在每个学习阶段利用所有训练数据,但首先接触每个示例的“较易学习”模式,随着训练的进行逐渐引入较难的模式。为了以计算高效的方式实现这个想法,我们在输入的傅里叶频谱中引入了裁剪操作,使模型能够仅从较低频率的分量中学习。然后我们表明,通过调节数据增强的强度可以轻松实现自然图像内容的展示。最后,我们整合这两个方面,并通过提出量身定制的搜索算法来设计课程学习计划。此外,我们提出了有用的技术,用于在具有挑战性的实际场景中有效地部署我们的方法,例如大规模并行训练和有限的输入/输出或数据预处理速度。由此产生的方法 EfficientTrain++ 简单、通用,但效果惊人。作为一种现成的方法,它在 ImageNet-1K/22K 上将各种流行模型(例如 ResNet、ConvNeXt、DeiT、PVT、Swin、CSWin 和 CAFormer)的训练时间缩短了 1.5-3.0 倍,且准确率没有降低。它还证明了在自监督学习(例如 MAE)中的有效性。

关键字

深度网络、视觉主干、高效训练、课程学习

引言

现代视觉主干的显著成功很大程度上得益于人们对在综合、大规模基准数据集上探索大模型的兴趣 [1]、[2]、[3]、[4]。特别是,最近推出的视觉变换器 (ViT) 将模型参数数量扩大到 18 亿以上,同时将训练数据扩展到 30 亿个样本 [3]、[5]。虽然这有助于实现最先进的精度,但这种巨大的模型和高数据机制导致了耗时且昂贵的训练过程。例如,在 JFT-300M [3] 上训练 ViT-H/14 需要 2,500 个 TPUv3 核心日,这对于学术界和工业界的从业者来说可能是难以承受的。此外,训练深度学习模型的大量功耗将导致大量碳排放 [6]、[7]。出于经济和环境方面的考虑,降低现代深度网络训练成本的需求日益增长。

在本文中,我们通过重新审视课程学习的概念 [8] 来解决这个问题,该概念表明,可以通过从给定任务或某些较容易的子任务的较容易的方面开始,并逐渐增加难度来有效地训练模型。现有的大多数研究工作都是通过在训练过程中逐步引入从易到难的示例来实现这种方法的 [9]、[10]、[11]、[12]、[13]、[14]、[15]、[16]。然而,获得一个轻量级的、可推广的难度测量器通常并不是一件容易的事 [9]、[10]。总的来说,这些方法还没有表现出成为现代视觉主干的通用高效训练技术的能力。

与之前的研究相比,本文寻求一种简单但广泛适用的高效学习方法,并具有广泛实施的潜力。为了实现这一目标,我们的研究深入研究了课程学习的概括。具体来说,我们将训练课程的概念扩展到仅仅区分“容易”和“困难”的例子,并采用了一个更灵活的假设,这表明每个训练样本的判别特征都包含“容易学习”和“难以学习”的模式。我们认为,建立一个连续函数来自适应地提取每个例子中更简单、更易学习的判别模式,而不是对每个例子是否应该出现在训练集中做出离散的决定,这将更为合适。换句话说,课程可以在学习的任何阶段始终利用所有例子,但它应该在早期的学习阶段消除输入中相对更困难或更复杂的模式。我们的想法如图 1 所示。

在我们的假设的推动下,我们推导出一种简单但出人意料的有效算法。我们首先证明“更容易学习”的模式包含了图像的低频成分。我们进一步表明,通过在频域中引入裁剪操作可以实现这些成分的无损提取。此操作不仅保留了所有低频信息,而且还为要训练的模型提供了较小的输入大小。通过在早期训练阶段触发此操作,可以大大降低训练的总体计算/时间成本,同时不会牺牲模型的最终性能。此外,我们表明,在大量数据增强之前,原始信息更容易学习,因此从较弱的增强技术开始训练是有益的。最后,通过利用贪婪搜索算法,将这些理论和实验见解整合到统一的“EfficientTrain”学习课程中。

基于上述探索,我们进一步引入了一种增强的 EfficientTrain++ 方法,该方法从两个方面改进了 EfficientTrain。首先,我们提出了一种高级搜索算法,它不仅大大节省了解决课程学习计划的成本,而且还有助于生成具有良好通用性和更有效的结果课程。其次,我们提出了一种高效的低频下采样操作,旨在缓解 EfficientTrain 导致的 CPU-GPU 输入/输出 (I/O) 成本高的问题。除了这些方法上的进步之外,我们还为 EfficientTrain++ 开发了两种实现技术。它们可用于实现更显著的实际训练加速,例如通过 1) 使用越来越多的 GPU(例如 32 或 64 个 GPU)促进高效的大规模并行训练,以及 2) 减少 CPU/内存的数据预处理负载。

我们的方法最吸引人的优点之一可能是它的简单性和通用性。我们的方法可以方便地应用于大多数深度网络,而无需额外的超参数调整,但可以显著提高它们的训练效率。从经验上讲,对于 ImageNet-1K/22K [17] 上的监督学习,EfficientTrain++ 将各种视觉主干(例如 ResNet [1]、ConvNeXt [18]、DeiT [19]、PVT [20]、Swin [4]、CSWin [21] 和 CAFormer [22])的训练成本降低了 1.5-3.0 倍,同时与基线相比实现了具有竞争力或更好的性能。重要的是,我们的方法对于自监督学习(例如 MAE [23])也有效。

本文的部分结果最初发表在其会议版 [24] 中。然而,本文在几个重要方面扩展了我们早期的工作:

  • 提出了一种改进的 EfficientTrain++ 方法。我们引入了一种计算受限的顺序搜索算法来解决训练课程(第 5.1节),该算法不仅效率更高,而且在生成的课程方面也优于 EfficientTrain中的贪婪搜索算法。此外,我们提出了一种高效的低频下采样操作(第 5.2 节),有效地解决了 EfficientTrain 导致的CPU-GPU I/O 成本高的问题。我们进行了新的实验来研究这两个组件的有效性(表 8、19、20、21)。
  • 我们为 EfficientTrain++ 开发了两种实现技术(第 5.3 节)。第一种方法提高了 EfficientTrain++ 实际训练效率相对于用于训练的 GPU 数量的可扩展性。第二种方法可以显著减少CPU/内存的数据预处理负载,同时保持竞争性性能。已经提供了大量的实验证据来证明它们的实用性(表 13、14)。
  • 通过广泛评估 EfficientTrain++,我们的实验得到了改进,例如通过 ImageNet-1K 上的监督学习(表 7、9 和图7)、ImageNet-22K 预训练(表 12)、自监督学习(表 15)、迁移学习(表 16、17、18)并与现有方法进行比较(表11)。此外,还增加了新的分析调查(表 22、23)。这些综合结果表明,EfficientTrain++ 的表现优于 vanilla EfficientTrain 和其他竞争性基线,达到了最先进的训练效率。

广义课程学习

正如先前的研究发现,机器学习算法通常受益于“从小处着手”的策略,即首先学习任务中某些较容易的方面,然后逐步增加难度 [8]、[25]、[26]。这一想法的主要实现方式是课程学习,它建议在训练过程中逐渐引入更困难的例子 [9]、[10]、[12]。具体来说,课程是在训练过程之上定义的,以确定是否应该在给定的时期利用每个样本(图 1 (a))。

关于样本式课程学习的局限性。尽管从样本式机制的角度来看,课程学习已经得到了广泛的探索,但其广泛应用通常受到两个主要问题的限制。首先,区分“容易”和“困难”的训练数据并非易事。它通常需要部署额外的深度网络作为“老师”,或利用专门的自动学习方法 [11]、[12]、[14]、[16]、[27]。由此产生的实施复杂性和增加的总体计算成本都是提高训练效率方面值得注意的弱点。其次,很难找到一种原则性的方法,指定在学习的早期阶段应该关注哪些例子。事实上,“从易到难”的策略并不总是有帮助的 [9]。难以学习的样本可以提供更多信息,并且在许多情况下强调这些样本可能会有所帮助[38],[65],[66],[67],[68],[69],有时甚至会导致“由难到易”的反课程[40],[70],[71],[72],[73]、[74]。

我们的工作受到上述两个问题的启发。接下来,我们首先提出一个课程学习的广义假设,旨在解决第二个问题。然后我们证明我们的想法的实施自然解决了第一个问题。

广义课程学习。我们认为,仅仅衡量训练样本的难易程度往往是不明确的,可能不足以反映样本对学习过程的影响。如前所述,即使是困难的例子也可能为指导训练提供有益的信息,而且它们不一定需要在较容易的例子之后引入。为此,我们假设每个训练样本,无论是“容易”还是“困难”,都包含更容易学习或更容易获得的模式,以及某些难以识别的信息,这些信息对于深度网络来说可能具有挑战性。理想情况下,课程应该是训练过程之上的连续函数,它从关注输入的“最简单”模式开始,而“较难学习”的模式则随着学习的进展而逐渐引入。

图 1 (b) 显示了正式说明。任何输入数据 都将由以训练时期 ( ) 为条件的转换函数 进行处理,然后输入到模型中,其中 旨在动态过滤掉训练数据中过于困难和难以学习的模式。我们总是让 。值得注意的是,我们的方法可以看作是样本课程学习的广义形式。通过设置 ,它可以简化为示例选择。

概述。在本文的其余部分,我们将证明从我们的假设中得出的算法极大地提高了课程学习的实施效率和泛化能力。我们将展示人类预先定义的零成本标准能够有效地测量图像中不同模式的难度级别。基于这些简单的标准,即使是引入“从易到难”模式的令人惊讶的简单实现,也能显著且持续地提高现代视觉主干的训练效率。

EfficientTrain

为了获得符合上述假设的训练课程,我们需要解决两个挑战:1)识别“更容易学习”的模式并设计转换函数来提取它们;2)建立课程学习计划以在训练期间动态执行这些转换。本节将证明,1)的适当转换可以在频域和空域中轻松找到,而 2)可以用贪婪搜索算法来解决。

4.1 更容易学习的模式:频域

基于图像的数据可以自然地在频域中分解[75],[76],[77],[78]。在本小节中,我们揭示了图像中描述平滑变化内容的低频分量中的模式相对更容易被网络学习识别。

使用低通滤波输入数据进行消融研究。我们首先考虑一项消融研究,其中对我们使用的数据执行低通滤波。如图 2 (a) 所示,我们将图像映射到傅里叶频谱,最低频率位于中心,将中心圆(半径:r)外的所有分量设置为零,然后将频谱映射回像素空间。图 2 (b) 说明了 r 的影响。图 3 显示了低通滤波数据之上的准确度与训练时期的曲线。在这里,训练和验证数据都由过滤器处理,以确保与 i.i.d. 假设兼容。

首先捕获较低频率的成分。图 3 中的模型被强加为仅利用输入的较低频率成分。然而,出现了一个吸引人的现象:它们的训练过程与训练开始时的原始基线大致相同。虽然基线最终表现优异,但这种趋势是在训练过程的中途开始的,而不是从一开始。换句话说,即使消除了图像的高频成分,早期时期的学习行为仍保持不变。此外,考虑增加滤波器带宽 r,这将逐步保留有关最低频率图像的更多信息。低通滤波数据上基线和训练过程之间的分离点移向训练的结束。为了解释这些观察结果,我们假设,在输入图像同时包含低频和高频信息的自然学习过程中,模型倾向于首先学习捕获低频成分,而高频信息则在此基础上逐渐被利用。

更多证据。我们的假设可以通过一个控制良好的实验得到进一步证实。考虑使用原始图像训练模型,其中同时提供低频/高频分量。在图 4 中,我们评估了具有不同带宽的低通滤波验证集上的所有中间检查点。显然,在早期阶段,仅利用低通滤波验证数据不会降低准确性。这种现象表明,学习过程从关注低频信息开始,即使模型在训练期间始终可以访问高频分量。此外,在表 1 中,我们比较了低通/高通滤波验证集上中间检查点的准确性。低通滤波验证集的准确性在早期训练阶段增长得更快,即使两个最终准确度相同。

基于频率的课程。回到第 3 节中的假设,我们已经表明,较低频率的成分自然会更早被捕获。因此,将它们视为一种“更容易学习”的模式是显而易见的。这引出了一个问题:我们能否设计一个训练课程,从为模型提供较低频率的信息开始,同时逐渐引入较高频率的成分?我们在表 2 中研究了这个想法,其中我们仅在给定数量的开始时期对训练数据执行低通滤波。其余的训练过程保持不变。

有效地从低频信息中学习。乍看之下,表 2 中的结果可能不那么引人注目,即通过在早期阶段使用正确配置的低通滤波器处理图像,准确度会略有提高。然而,一个重要的观察值得注意:即使在 50-75% 的训练过程中执行激进的过滤(例如,r=40, 60),模型的最终准确度也可以在很大程度上保持。这种现象将我们的注意力转向训练效率。在早期的学习阶段,仅使用较低频率的分量来训练模型是无害的。这些组件仅包含原始输入图像中所有信息的选定子集。因此,我们能否使模型能够以比处理原始输入更少的计算成本有效地从它们中学习?事实上,这个想法是可行的,我们可能至少有两种方法。1)下采样。用图像下采样近似表 2 中的低通滤波可能是一种直接的解决方案。下采样保留了大量的低频信息,同时它以二次方的方式节省了模型处理输入的计算成本 [79]、[80]、[81]。然而,它并不是为提取低频分量而量身定制的操作。从理论上讲,它还保留了一些高频分量(参见:命题 1)。从经验上讲,我们观察到这个问题会降低性能(参见:表 19 (b))。

2)低频裁剪(见图 5)。我们提出了一种更精确的方法,可以准确提取所有低频信息。考虑使用 2D 离散傅里叶变换 (DFT) 将 图像 映射到频域,获得 傅里叶频谱,其中中心的值表示频率最低的分量的强度。远离中心的位置对应于较高频率。我们从频谱中心裁剪出一个 补丁,其中 是窗口大小()。由于补丁仍然是中心对称的,我们可以使用逆 2D DFT 将其映射回像素空间,获得 新图像 ,即

其中 表示 2D DFT、逆 2D DFT 和 中心裁剪。在 GPU 上完成公式 (1) 的计算或时间成本可以忽略不计。

值得注意的是, 实现了低频分量的无损提取,而高频部分则被严格消除。因此,在训练的早期阶段将 输入模型可以提供绝大多数有用的信息,这样最终的准确性将受到最小的影响甚至不受影响。相反,重要的是,由于 的输入大小减小,模型处理 的计算成本可以大大节省,从而产生更高效的训练过程。

命题 1. 假设 ,且 ,其中 下采样 通过常见的插值算法(例如最近邻、双线性或双三次)实现。则我们得到两个性质。

a) 仅由 的低频频谱决定(即 )。此外,映射到 是可逆的。我们总是可以从 恢复

b) 的高频频谱(即 之外的区域)具有非零依赖性。

我们的主张可以通过表 3 中的结果得到经验支持,其中我们用低频裁剪替换了表 2 中的低通滤波操作。即使如此简单的实现也会产生有利的结果:训练成本可以节省约 20%,同时保持具有竞争力的最终准确率。这种现象可以通过图 6 来解释:在中间训练阶段,使用低频裁剪输入训练的模型可以学习与基线相似的深度表示,同时显著降低成本,即亮部明显位于白线上方。

4.2 更易于学习的模式:空间域

除了频域操作外,还可以通过空间域变换来提取“更易于学习”的模式。例如,现代深度网络通常使用强大而精细的数据增强技术进行训练[4],[18],[19],[21],[84],[85],[86]。我们认为增强的训练数据结合了原始样本的信息和增强操作引入的信息。原始模式可能“更易于学习”,因为它们是从现实世界的分布中提取出来的。数据增强主要在训练的后期阶段产生影响,这一观察结果可以支持这一假设[87]。

为此,按照我们在第 3 节中对课程学习的广义表述,课程可以在训练期间采用从弱到强的数据增强策略。我们通过选择 RandAug [88] 作为代表性示例来研究这个想法,它结合了一系列常见的空间数据增强变换(旋转、锐化、剪切、曝光等)。在表 4 中,RandAug 的幅度在前半部分训练过程中有所不同。可以观察到,这个想法提高了准确性,并且增益与低频裁剪兼容。

值得注意的是,表 4 中的观察结果与 [7]、[58] 一致。我们并不是第一次引入从弱到强的数据增强。相反,我们的贡献在于证明可以通过频率和空间域的视角来识别和提取“更容易学习”的模式。这一发现不仅增强了我们广义课程学习框架的完整性,而且还提供了新颖的见解来解释为什么从弱到强的增强是有效的。但是,请注意,这并不意味着我们对 [7]、[58] 的技术创新是有限的。

4.3 统一的训练课程

最后,我们整合了第 4.1 节和第 4.2 节中提出的技术,并设计了统一的高效训练课程。具体来说,我们首先将 RandAug 的幅度 设置为训练周期 的线性函数:,其他数据增强技术保持不变。尽管简单,但这种设置产生了一致且显着的经验改进。请注意,我们按照常见做法 [4]、[18]、[19]、[20]、[21] 采用

然后,我们利用贪婪搜索算法来确定训练期间 的调度(即低频裁剪的带宽)。如算法 1 所示,我们将训练过程分为几个阶段,并为每个阶段求解 的值。该算法从最后一个阶段开始,在不降低与基线(使用固定 进行训练)相比的性能的约束下最小化 。在我们的实现中,我们只执行一次算法 1。我们在标准 300 epoch 训练设置 [4] 下在 ImageNet-1K 上的 Swin-Tiny [4] 之上获得了一个调度,并直接将此调度用于其他模型或其他训练设置。

从上述程序中得出,我们最终提出的学习课程如表 5 所示。我们将其称为 EfficientTrain。值得注意的是,尽管 EfficientTrain 很简单,但它具有很好的通用性,并且效果惊人。在对大规模自然图像数据库(例如 ImageNet-1K/22K [17])上的视觉主干进行训练或预训练的情况下,EfficientTrain 可以直接应用于最先进的深度网络,而无需额外的超参数调整,并显着提高其训练效率。在各种网络架构、不同的训练计算预算、监督/自监督学习算法和不同数量的训练数据中,收益都是一致的。

EfficientTrain++

在本节中,我们提出了一种增强的 EfficientTrain++ 方法。EfficientTrain++ 从两个方面改进了 vanilla EfficientTrain,即 1) 节省了执行算法 1 的非平凡计算成本,2) 减少了低频裁剪操作导致的 CPU-GPU 输入/输出 (I/O) 成本增加。我们通过引入一种低成本算法来确定 B 的调度(第 5.1 节)以及一种高效的低频下采样操作(第 5.2 节)来解决这些问题。

除了这些方法创新之外,我们还进一步介绍了两种简单但有效的 EfficientTrain++ 实现技术(第 5.3 节)。这两种技术都不是方法中不可或缺的组成部分,但采用它们可以使 EfficientTrain++ 实现更显著的实际训练加速,例如,1)充分利用更多 GPU 进行大规模并行训练和 2)减少 CPU/内存的数据预处理负载。

5.1 计算约束顺序搜索

算法 1 背后的底层逻辑很简单。我们考虑一个受约束的优化问题。约束是不降低模型的最终准确率,而优化目标是最小化训练成本。我们分多个步骤(算法 1,第 5-7 行)解决这个问题,我们总是试图在每一步尽可能地降低训练成本。

算法 1 的效率。然而,算法 1 的计算成本很高。首先,最终准确率被视为约束。因此,给定任何可能的 组合,我们需要训练模型收敛,获得最终验证准确率,并验证 是否满足约束。其次,这种验证总是需要从头开始训练模型,即,由于我们从最后一个训练阶段到第一个训练阶段求解 值,因此每当我们执行算法 1 的第 6 行(即更改 )时,我们都需要在某些训练的开始阶段改变 。一般而言,假设我们有 个训练阶段和 候选值。执行算法 1 将从头开始训练模型,直到收敛约 () 次,这可能会带来不小的计算和时间成本。虽然这个缺点不会妨碍直接利用算法 1 产生的课程作为一种现成的、广泛适用的高效训练技术,但算法 1 的效率有限可能会阻碍未来的工作,例如为新的通用课程学习方法或其他相关方法设计定制课程。

一种更有效的解决课程表的算法。在上述分析的推动下,我们提出了一种新的算法来确定课程表中 B 的时间表,如算法 2 所示。这种新方法不仅比算法 1 更有效,而且在生成的课程表方面也优于算法 1。具体来说,算法 2 引入了两个主要创新:

新的公式:计算约束搜索。我们考虑一个与算法 1 不同的约束优化问题。约束是与基线相比按预定义的比例节省训练成本(在算法 2 中由 指定),而优化目标是最大化最终准确率。与算法 1 类似,我们通过将训练过程分为 个阶段并为每个阶段求解一个 值来解决这个问题。但是,在这里我们将总训练成本的 分配给每个阶段,然后在固定此训练预算的情况下同时改变 和每个阶段的训练步骤数。也就是说,给定一个预定义的批量大小,当 相对较小时,模型处理一小批训练数据的成本较小,我们使用更多小批数据更新模型更多次,但总体计算量保持不变。相反,当训练阶段的 很大时,由于训练预算是固定的,因此模型更新次数需要相对较少。请注意,每个训练阶段的学习率计划始终保持不变。

执行顺序搜索。我们从第一个训练阶段到最后一个训练阶段求解 值,其中任何阶段 的求解都基于前一阶段的检查点。具体而言,给定一个训练阶段,我们分别从前一个检查点使用几个候选 值执行该阶段,并使用原始图像()对获得的模型进行少量 epoch(算法 2 中的 )的微调。我们通过比较这些微调模型的验证准确率来选择最佳 ,我们发现这是一个反映不同 对最终准确率影响的有效代理。

在我们的实现中,算法 2 在 ImageNet-1K 上的 Swin-Tiny [4] 之上执行,其中我们设置 。表 6 中列出了最终的课程,名为 EfficientTrain++。我们直接将表 6 中的课程用于其他模型和其他训练设置,而无需再次执行算法 2。

重要的是,与表 5 不同,EfficientTrain++ 基于算法 2 引入的计算约束公式。换句话说, 和学习率的值取决于训练的总计算预算中已消耗了多少,即它们的时间表是在计算成本之上定义的。基于这一特点,我们的 EfficientTrain++ 课程可以灵活地适应不同数量的总训练预算。值得注意的是,为了衡量我们方法的总训练成本,我们将训练所需的计算转换为基线中的标准训练时期数(例如,使用原始的 2242 个输入),并直接报告等效时期数。采用此设置是为了便于理解。

5.2 高效低频下采样

如上所述,图 5 中的低频裁剪操作能够提取所有低频分量,同时消除其余高频信息。但是,它的 CPU-GPU 输入/输出 (I/O) 成本很高。此问题是由图 5 中的 2D DFT 和逆 2D DFT 引起的,对于 CPU 来说,它们负担不起,必须在 GPU 上执行。因此,我们需要将原始图像(例如 2242)从 CPU 传输到 GPU。因此,对 CPU 到 GPU I/O 吞吐量的需求将以与训练加速相同的比率增加,例如,当 B =96 时增加 >5 倍。我们通过经验发现,这种高 I/O 成本是阻碍我们方法有效实施的重要瓶颈。

低通滤波 + 图像下采样。受此问题的启发,我们提出了一种低频裁剪的有效近似方法。我们的方法是通过改进图像下采样操作得出的。如命题 1 所示,下采样的缺点是它不能严格过滤掉所有高频信息。为了解决这个问题,我们提出了一个两步程序。首先,我们使用 方形滤波器对原始图像进行低通滤波(不改变图像大小)。其次,我们执行 下采样。由于低通滤波提取的信息与 低频裁剪完全相同,因此下采样将不再引入不需要的高频分量,因此模型的最终准确性不会受到影响。此外, 低通滤波在数学上等同于 2D sinc 卷积,可以使用 Lanczos 算法在 CPU 上高效实现 [89]、[90]。因此,我们的两步程序可以使用 CPU 完成,而只需要将生成的 模型输入传输到 GPU。因此,CPU-GPU I/O 成本得到有效降低。

5.3 EfficientTrain++的实现技术

促进大规模并行训练:早期大批量。在表 6 中,批量大小在整个训练过程中是固定的。尽管如此,我们的方法总是以较小的 (例如,)开始训练,与较大的 (例如,)相比,每个小批量的计算成本显着降低。此属性在训练硬件的典型设置下是无害的(例如,在 ≤16 个 GPU 上训练模型)。但是,如果我们考虑增加 GPU 数量(例如,32/64 GPU 或更多),早期训练阶段较小的 通常会产生瓶颈,从而阻碍 EfficientTrain++ 的有效实施。

较小时,可以通过同时增加批量大小和学习率来解决此问题。一方面,这种修改已被证明是原始较小批量大小的学习过程的有效近似[91],[92],因此模型的最终性能不会降低(参见:表 13)。另一方面,小 的每批训练成本增加,因此 EfficientTrain++ 相对于 GPU 数量的扩展效率显着提高。在我们的实现中,我们使用上限平方根学习率缩放规则:

其中 表示与 对应的学习率方案(本文采用带有线性预热的余弦退火方案 [4], [18])的最大值, 表示与 对应的批次大小。我们将 设置为 的上限,因为过大的学习率通常会导致训练过程不稳定。

减少数据预处理负载:重放缓冲区。在我们的方法中,当 B 较小时,从每个训练样本中学习的计算成本会二次方地节省。事实上,这种学习成本的降低伴随着对更高数据预处理吞吐量的需求,即准备训练输入的速度需要跟上 GPU 上的模型训练速度。因此,与基线相比,EfficientTrain++ 可能会增加内存或 CPU 等硬件的负载,这可能会影响我们方法的实际训练效率。为了缓解这个问题,我们建议利用重放缓冲区。一旦生成了新预处理的小批量数据,我们就将其放入缓冲区,而如果达到预定义的最大大小,我们会删除最旧的数据。我们观察到,在普通硬件上,这个最大大小通常可以设置为相当大。在训练过程中,为了获得模型输入,我们交替执行以下两个步骤:1)从重放缓冲区中采样 nbuffer 次小批量,2)生成一个新的小批量训练数据,将其输入模型进行训练,并用它更新重放缓冲区。使用这种技术,数据预处理负载减少了 nbuffer+1 倍,同时可以有效保留模型的泛化性能(见表 14)。值得注意的是,只有预处理的小批量数量减少了。训练迭代的总次数和训练模型的计算成本都保持不变。

实验

概述。第 6.1 节在标准监督学习场景中评估了我们提出的方法。我们的实验结合了在不同的训练设置(例如,不同的训练预算、不同的测试输入大小和不同数量的训练数据)下训练各种视觉主干(例如,ConvNets、各向同性/多阶段 ViTs 和 ConvNet-ViT 混合模型)。我们还对我们的方法和最先进的高效训练方法进行了全面比较。在第 6.2 节中,我们证明我们的方法可以方便地应用于自监督学习(例如 MAE),并显着提高训练效率。在第 6.3 节中,我们研究了使用我们的方法预训练的模型对下游任务(例如图像分类、对象检测和密集预测)的可迁移性。在第 6.4 节中,提供了彻底的消融研究和分析结果,以便更好地理解。

数据集。我们的主要实验基于大规模 ImageNet-1K/22K [17] 数据集,该数据集包含 1K/∼22K 类中的 ∼1.28M/∼14.2M 幅图像。我们还验证了我们的方法在 ADE20K [93]、MS COCO [94]、CIFAR [95]、Flowers-102 [96]、Stanford Dogs [97]、NABirds [98] 和 Food-101 [99] 上的可迁移性。

模型和设置。我们的实验考虑了各种各样的视觉主干模型,包括 ResNet [1]、ConvNeXt [18]、DeiT [19]、PVT [20]、Swin [4] Transformers、CSWin [21] Transformers 和 CAFormer [22]。我们采用 [4]、[18] 中的 300 个 epoch 训练管道作为基线,在此基础上,EfficientTrain 和 EfficientTrain++ 仅修改表 5 和表 6 中提到的术语。特别是,EfficientTrain++ 的默认版本通过利用第 5.1 和 5.2 节中提出的进步来改进 EfficientTrain。第 5.3 节中提出的两种实现技术被视为可选组件,并在第 6.1.4 节中单独研究了它们的有效性。此外,为了测量训练过程的总长度,对于基线和原始 EfficientTrain,我们直接报告真实的训练时期。对于 EfficientTrain++,由于我们采用了新的计算约束公式,我们将训练模型消耗的总计算量转换为基线中标准训练时期的数量,并报告等效时期数以便于理解(参见:第 5.1 节)。例如,EfficientTrain++ 的 M 时期训练的计算成本等于 M 时期训练的基线。此外,除非另有说明,否则我们将报告我们的方法和基线的实施结果。

6.1 监督学习

6.1.1 ImageNet-1K 上的主要结果

在 ImageNet-1K 上训练各种视觉主干。表 7 展示了应用 EfficientTrain++ 在 ImageNet-1K 上训练代表性深度网络的结果,ImageNet-1K 是评估深度学习算法最广泛的设置之一。很明显,与基线相比,我们的方法实现了具有竞争力或更好的验证准确率(例如,CAFormer-M36 上的 85.0% 对 84.9%),同时节省了 1.5-1.6 倍的训练计算成本。此外,一个重要的观察结果是,EfficientTrain++ 的增益在不同类型的深度网络中是一致的,这证明了我们的方法具有很强的通用性。此外,表 7 还报告了 GPU 设备上的挂钟训练加速。可以观察到,EfficientTrain++ 的实际效率与理论结果一致。

**EfficientTrain 与 EfficientTrain++**。在表 8 中,我们对 EfficientTrain、EfficientTrain++ 和基线进行了全面比较。从结果中可以得出几个观察结果。首先,我们方法的两个版本都有效地提高了训练效率。与基线相比,原始 EfficientTrain 能够将各种深度网络的训练成本降低 1.5 倍,同时有效提高准确率。其次,EfficientTrain++ 课程的表现进一步优于 EfficientTrain。例如,在 ImageNet-1K 上,EfficientTrain++ 将 DeiT-small 的准确率提高了 0.6%(81.0% 对 80.4%)。在对 CSWin-Base/Large 等大型模型进行预训练时,EfficientTrain++ 的训练速度比 EfficientTrain 快得多(2.0 倍 vs. 1.5 倍),并且具有更好的泛化性能。第三,可以观察到,与用于获取 EfficientTrain 的算法 1 相比,EfficientTrain++ 中使用的算法 2 将获取课程的求解成本降低了 2.56 倍。总体而言,上述这些观察结果表明,正如我们预期的那样,EfficientTrain++ 全面改善了 EfficientTrain。

适应不同的训练预算。我们的方法可以方便地适应不同的训练计算预算,即只需在表 5 和表 6 的基础上调整总训练周期数即可。作为代表性示例,我们在图 7 中报告了 EfficientTrain++ 和基线的验证准确率与计算训练成本曲线。在相对较小的训练成本约束下,我们的方法的优势更加显著,例如,在经过 100 次训练的 DeiT-Small 上,它的表现比基线高出 3.1%(79.8% 对 76.7%)。我们将其归因于在训练资源有限的场景中,高效的训练算法更为重要。此外,我们观察到,如果我们主要希望实现与基线相同的性能,EfficientTrain++ 最多可以将训练成本节省 2-3 倍,这比表 7 中的结果更为显著。上述观察结果也可以在 EfficientTrain 之上轻松获得(参见:附录 B)。此外,在表 9 中,我们部署了我们提出的训练课程,允许它们使用与标准 300 个时期训练管道相同的训练成本 [4],[18]。结果表明,我们的方法显着提高了准确率(例如,DeiT-Tiny 提高了 1.9%)。有趣的是,当使用 EfficientTrain++ 进行适当训练时,原始 DeiTSmall 网络的表现与基线 Swin-Tiny 模型(81.3%)相当,而不会增加训练时间。

**适应任何最终输入大小 **。我们的方法可以灵活地适应任意最终输入大小 。为了实现这一目标,EfficientTrain 或 EfficientTrain++ 三个阶段的 值可以简单地调整为 160、(160 + )/2、 或 96、(96 + )/2、。如表 10 所示,在训练效率方面,当 > 224 时,我们的方法比基线高出很多。

预训练 + 微调正交。具体而言,在某些情况下,现有研究发现将 预训练模型微调到目标测试输入大小 [4]、[18]、[21] 是有效的。在这里,我们的方法可以直接用于更高效的预训练(例如,表 12 中的 )。

6.1.2 与现有高效训练方法的比较

表 11 总结了与最先进的高效训练算法的比较。我们的方法与 1) 最近提出的样本 [27]、[38]、[39]、[40]、[41] 或正则化 [42]、[44] 课程学习方法进行了全面比较;2) 渐进式学习算法 [7]、[58];3) 视觉 Transformers 的高效训练方法 [55]、[57]、[59]。值得注意的是,其中一些方法不是在我们考虑的最先进的训练流程之上开发的(即表 11 中的“AugRegs”)。在将我们的方法与它们进行比较时,我们还在没有 AugRegs 的情况下实现了我们的方法(在这种情况下,我们方法中的“RandAug”被删除),并采用与它们相同的训练设置(例如,训练 ResNet-18/50 90/200 个时期)。表 11 中的结果表明,EfficientTrain/EfficientTrain++ 在准确性和训练效率方面均优于所有竞争基线。此外,我们的方法很简单,只需修改几行代码即可方便地将其应用于不同的模型和训练设置,这是相对于基线的一个重要优势。

与 FixRes 正交。FixRes [60] 表明,训练和测试输入之间的图像比例存在差异,因此具有更大分辨率的推理将产生更好的测试精度。但是,我们的方法没有利用 FixRes 的收益。我们在最后的训练阶段采用原始输入(例如 2242),因此最终训练的模型类似于 2242 训练的网络,而 FixRes 与我们的方法正交。表 11 中的直接经验证据(参见:FixRes 与 EfficientTrain/EfficientTrain++ + FixRes 在最先进的 CSWin Transformers [21] 之上)和表 12 中的结果(参见:输入大小 = 3842)都可以证实这一事实。

6.1.3 ImageNet-22K 上的主要结果

ImageNet-22K 预训练。现代视觉主干的一个重要优势是它们随着训练数据量的增加而具有出色的可扩展性 [18]、[21]。为此,我们进一步验证了我们的方法在更大的 ImageNet-22K 基准数据集上的有效性。结果总结在表 12 中,其中模型在 ImageNet-22K 上进行了预训练,并通过微调到 ImageNet-1K 进行评估。我们在预训练阶段实现了 EfficientTrain/EfficientTrain++,这占总计算/时间成本的绝大部分。可以观察到,与 ImageNet-1K 类似,我们的方法在 ConvNets 和视觉 Transformers 之上的表现至少与基线相当,同时实现了高达 2-3 倍的显着训练加速。结果中的一个亮点是 EfficientTrain++ 节省了大量的实际训练时间,例如,CSWin-Large 节省了 158.5 GPU 天(237.8 vs. 79.3),这相当于具有 8 个 GPU 的标准计算节点的 ∼20 天。

6.1.4 EfficientTrain++的实现技术

接下来,我们研究了第 5.3 节中提出的两种 EfficientTrain++ 实现技术的有效性。我们证明这些技术有效地降低了实现 EfficientTrain++ 的门槛,并使我们的方法在更广泛的场景中获得显著的实际训练加速。

大规模并行训练:早期大批量。由于此机制旨在使 EfficientTrain++ 充分利用更多 GPU,因此我们在 ImageNet-22K 上预训练 CSWin-Base/Large 的场景中对其进行了评估。CSWin Transformers 是最先进的深度网络的代表性示例。由于它们的模型尺寸较大且 ImageNet-22K 训练数据量巨大,因此实际需要使用多个 GPU(例如 64 个)并行预训练模型。在表 13 中,我们研究了在早期学习阶段引入较大批量(称为“早期大批量”)的效果,我们的实现遵循第 5.3 节中的陈述。一般来说,当利用 16 个 GPU 时,vanilla EfficientTrain++ 能够实现显着的训练加速。然而,当 GPU 数量增加到 64 时,其实际效率会显著下降。相比之下,在 64 个 GPU 上配备早期大批量机制的 EfficientTrain++ 的挂钟预训练加速与利用 16 个 GPU 大致相同。这一观察表明,随着 GPU 数量的增加,扩大小 的批量大小可以有效增强 EfficientTrain++ 的可扩展性。此外,值得注意的是,这种机制不会影响模型的性能。

减少数据预处理负载:重放缓冲区。为了研究这种机制,我们以训练相对轻量级的模型(例如 DeiT-T/S 和 CSWin-T/S)作为代表性示例。由于这些网络规模较小,它们在 GPU 上的训练速度通常很快,因此它们在准备训练输入的吞吐量方面对 CPU 和内存的要求更高。因此,数据预处理负载是有效训练它们的一个显着的潜在瓶颈。我们通过引入第 5.3 节中所述的重放缓冲区来训练这些模型,并将结果与表 14 中的原始 EfficientTrain++ 进行比较。可以观察到,重放缓冲区有助于显着降低峰值数据预处理负载,并保持与基线的竞争性能。

6.2 自监督学习

基于掩蔽自动编码器 (MAE) 的结果。除了监督学习之外,我们的方法还可以方便地应用于自监督学习算法,因为它只修改训练输入。表 15 提供了一个代表性示例,我们在配备 HOG 重建目标 [103] 的 MAE [23] 之上部署了 EfficientTrain++。我们还介绍了最近提出的几种自监督学习方法的结果,这些方法使用相同的主干,并且具有与我们相当的预训练成本。可以观察到,我们的方法在保持准确性的同时显着降低了 MAE 的预训练成本,优于所有竞争基线。

6.3 迁移学习

下游图像识别任务。我们首先通过在下游分类数据集上对使用 EfficientTrain/EfficientTrain++ 训练的模型进行微调来评估其可迁移性。结果报告在表 16 中。值得注意的是,按照 [19],CIFAR-10/100 [95] 中的 32×32 图像被调整为 224×224 以进行预处理,因此判别模式主要分布在低频分量中。相反,Flowers-102 [96] 和 Stanford Dogs [97] 是细粒度的视觉识别数据集,其中高频线索包含重要的判别信息(例如,用于区分狗种的详细面部/皮肤特征)。可以观察到,我们的方法在两种类型的数据集上都比基线具有竞争力或更好的迁移学习性能。换句话说,尽管我们的方法通过有序的课程学习利用低频/高频信息,但最终获得的模型可以有效地利用这两种类型的信息。

目标检测和实例分割。为了研究将我们预先训练的模型转移到更复杂的计算机视觉任务中,我们使用 EfficientTrain/EfficientTrain++ 预先训练的模型初始化代表性检测和实例分割框架的主干。MS COCO 上的结果报告在表 17 中。当将预训练成本降低约 1.5 倍时,我们的方法在所有场景中的检测/分割性能方面都明显优于基线。我们的实现遵循 MMDetection [108]。

语义分割。表 18 进一步评估了我们的方法在下游语义分割任务上的性能。我们实现了几个使用 EfficientTrain++ 预训练的代表性主干作为 UperNet [109] 中编码器的初始化,并使用 MMSegmentation [110] 在 ADE20K 上对 UperNet 进行微调。表 18 中的观察结果与表 16 和 17 类似。我们的方法可以节省至少 1.5 倍的预训练成本,同时有效提高下游性能。例如,在 DeiT-Small 的基础上,EfficientTrain++ 在 160k 步训练设置下将 mIoU/mIoUMS+Flip 提高了 1.1/1.2。

6.4 讨论

6.4.1 消融研究

为了更好地理解我们提出的方法,我们进行了一系列消融研究。具体来说,按照本文的组织结构,我们首先研究 EfficientTrain 组件的有效性,然后研究 EfficientTrain++ 中提出的新技术是否能如我们预期的那样改善 EfficientTrain。

使用 EfficientTrain 的消融研究结果总结在表 19 中。在表 19 (a) 中,我们表明训练效率的主要提升来自低频裁剪,这有效地降低了训练成本,但代价是准确度略有下降。除此之外,线性 RandAug 进一步提高了准确度。此外,用图像下采样代替低频裁剪会持续降低准确度(见表 19 (b)),因为下采样不能严格过滤掉所有高频信息(见命题 1),导致我们的想法的实现不是最优的。此外,如表 19 (c) 所示,算法 1 找到的 B 的调度优于启发式设计选择(例如 [58] 中的线性调度)。

EfficientTrain++ 相对于 EfficientTrain 的改进。在表 20 中,我们研究了 EfficientTrain++ 中提出的改进技术(即第 5.1 和 5.2 节中介绍的组件)的有效性。可以观察到,算法 2 大大降低了获取训练课程的成本。此外,使用算法 2 找到的课程训练的模型能够以相同的训练成本获得更强的泛化性能。在此基础上,进一步引入高效的低频下采样操作,缓解了 CPU-GPU I/O 成本高的问题,从而有效提高了我们方法的实际训练效率。

算法 2 的设计。我们进一步研究算法 2 的设计是否合理。具体来说,我们选择 AutoProg [7] 的搜索配置作为竞争基线。AutoProg 是最近提出的一种有效的 ViT 训练方法。它类似于算法 2,在每个训练阶段对模型进行微调以寻找合适的渐进学习策略。然而,它的优化目标和变量配置都与我们的方法不同。在我们的实验中,我们首先在我们的问题中实现 AutoProg 的搜索配置。然后,我们逐步在 AutoProg 之上引入修改,最终得到算法 2,旨在展示我们相对于当前最先进设计的优势。结果总结在表 21 中,其中可以得到两个观察结果:1) 在我们的问题中,验证准确率是一个比训练损失更好的搜索目标;2) 我们提出的计算约束搜索公式(即在固定的训练成本节省率下最大化验证准确率;详情见第 5.1 节)可以显著改善训练课程,同时可以通过消除平衡有效性-效率权衡的超参数来简化搜索目标。

6.4.2 EfficientTrain++的可转移性

表 22 系统地讨论了我们的 EfficientTrain++ 课程的泛化能力(即在 Swin-Tiny 和 ImageNet-1K 上获得的表 6)。我们在不同的视觉主干架构和不同的数据集上执行算法 2。然后,在每个相应的场景中,我们将生成的专门课程与 EfficientTrain++ 进行比较。

不同的网络。与许多其他有用的训练技术(例如余弦学习率计划、AdamW 优化器和随机擦除)一样,EfficientTrain++ 的有效性通常与特定的网络架构无关。例如,表 22 (b) 和 (c) 表明,如果我们采用多阶段 ViT 系列中的高级架构或扩大模型大小,则在 Swin/CSWin-Tiny 上优化的课程仍然接近最佳设计(由算法 2 发现)。此外,如表 22 (a) 所示,当将标准 EfficientTrain++ 应用于另一类网络(例如各向同性 ViT)时,特定于模型的课程搜索可以略微提高训练效率(例如,DeiT-Small 的 81.0%→81.2%),但这需要再次执行算法 2。相比之下,直接使用标准的EfficientTrain++不会带来任何额外的成本,而且已经可以获得高效训练的绝大部分收益。

不同的数据集。将我们的方法应用于新数据集时,有两个事实值得注意。首先,基于上述跨不同网络的稳健性,人们可以在常见的小模型(例如 Swin-Tiny)之上解决可推广的课程。根据表 8,搜索成本大约等于训练这个小模型 2∼3 次。其次,在许多情况下,可能不需要在新数据集(或整个新数据集)上进行搜索。例如,表 22 (d) 显示,当将训练数据规模从 ImageNet-1K 增加到 ImageNet-22K(增加约 10 倍)时,EfficientTrain++ 已经可以获得高效训练的大部分收益(无损训练加速:3.0 倍 vs. 3.8 倍)。因此,除非人们想不计成本地最大化训练效果,否则在整个大规模数据集的较小子集(例如,具有 ∼1/10 的数据)上求解课程是合理的。此外,如表 22 (e) 所示,在四个广泛使用的数据集(即 Food-101 [99]、NABirds [98]、CIFAR [95] 和 Stanford Dogs [97])上,基于 ImageNet-1K 的课程表现与特定于数据集的课程优化相当。这可能归因于在 ImageNet 等具有挑战性的大规模自然图像数据库上完成学习表示的任务已经满足了许多专门的视觉场景的需求。因此,在许多常见数据集上,人们可以简单地采用在 ImageNet-1K 等综合自然图像数据集上获得的现成课程(例如,EfficientTrain++)。

6.4.3 结合基于样本选择的方法

作为一个灵活的框架,我们提出的广义课程学习可以轻松地结合以前的样本选择课程学习方法。在本文中,这些方法主要被视为比较的基线,旨在阐述我们的新贡献。然而,数据选择的想法实际上与我们兼容。考虑一个课程学习函数很简单,它可以同时发现每个示例中越来越困难的模式,并确定是否应该利用每个示例进行训练。为了说明这一点,我们在表 23 中提供了一个代表性示例,其中样本选择是使用最近提出的 InfoBatch 算法 [39] 实现的。可以观察到,与任何一种单独的方法相比,EfficientTrain++ 和 InfoBatch 的组合进一步提高了训练效率,而 EfficientTrain++ 的效果更显着,这与我们论文的研究结果一致。

总结

本文旨在为现代深度网络开发一种简单且广泛适用的高效学习算法,并具有广泛实施的潜力。在这一目标下,我们提出了 EfficientTrain++,这是一种新颖的广义课程学习方法,它始终利用每个学习阶段的所有数据,但仅在训练开始时暴露每个示例的“易于学习”模式(例如,数据增强之前的图像和原始信息的低频分量),并随着学习的进展逐渐引入更困难的模式。为了设计适当的课程学习计划,我们提出了一种量身定制的计算约束顺序搜索算法,从而产生了一种简单、通用性强但效果惊人的训练课程。EfficientTrain++ 的有效性在大规模 ImageNet-1K/22K 数据集上得到了广泛验证,并在各种最先进的深度网络(例如 ConvNets、ViTs 和 ConvNet-ViT 混合模型)上进行了验证,并且适用于各种训练设置(例如不同的训练预算、不同的测试输入大小和监督/自监督学习场景)。在不牺牲模型性能或引入新的可调超参数的情况下,EfficientTrain++ 将视觉主干的挂钟训练成本降低了 1.5-3.0 倍。

我们的工作可能为开发有效的视觉模型课程学习方法开辟新途径。例如,未来的工作可能会探索用于提取“更易于学习”模式的转换函数的更通用形式,例如,在元学习等原则下制定可学习的神经网络,或考虑区分视觉数据中“更易于学习”和“更难学习”时空区域中的模式。此外,研究如何在训练过程中逐步发现更困难的模式对于更一般的数据类别也很有趣,例如,对于表格数据,我们可能会考虑屏蔽一些特征(列)以仅在早期训练阶段暴露不同特征之间的某些“更易于学习”关系。

点击上方卡片,关注“AI学术工坊”公众号

各种重磅干货,第一时间送达


AI学术工坊
分享最新AI资源
 最新文章