写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除!
文章目录
- 前言
- 论文
- 更容易学习的模式:频域
- 易于学习的模式:空间域
- 统一的训练课程
- EFFICIENTTRAIN++
- 计算约束的顺序搜索
- 高效低频下采样
- EfficientTrain++的实现技术
- 实验
- 监督式学习
- 与现有高效训练方法的比较
- ImageNet-22K的主要结果
- EfficientTrain++的实现技术
- 自监督学习
- 迁移学习
- 总结
- 致谢
- 参考
前言
目前,大模型的显著成功在很大程度上是由在全面的、大规模的基准数据集上训练所得到的。通过扩大网络参数和数据量以达到最先进的准确性,但庞大的模型和海量数据会导致耗时和昂贵的训练过程。例如,在JFT-300M上训练ViT-H/14需要2500 块TPUv3-coredays,对于学术界和工业界的从业者来说都是无法承受的。此外,训练深度学习模型的功耗相当大,将导致大量的碳排放。由于经济和环境的考虑,人们对降低现代深度网络的训练成本的需求越来越大。
因此,如何才能降低训练的成本呢?
部分方式:
- 降低早期训练输入样本以节省训练成本
- 修改模型输入来降低训练成本
- 训练过程中逐步增加网络深度或宽度
- 预算训练算法表明,适当配置学习率调度有利于高效训练
该论文则是通过从给定任务或某些更容易的子任务的更容易的方面开始有效地训练,即课程学习。
图1:(a)样本智能课程学习(CL):对是否应该利用每个示例来训练模型做出离散决策。(b)广义CL:考虑一个连续函数Tt(·),它只在训练开始时暴露每个示例中“容易学习”的模式,同时随着学习的进展逐渐引入相对更困难的模式。图像来源
样本课程学习:在训练过程中逐步引入难度更高的例子。具体地说,在训练过程之上定义了一个课程,以确定是否应该在给定的时间点利用每个样本(上图 (a))。
样本课程学习的局限性:通常存在两个主要问题的限制。
- 区分“容易”和“难”的训练数据,通常需要部署额外的深度网络作为“老师”或利用专门的自动学习方法。由此产生的实现复杂性和增加的总体计算成本都是不容忽视的。
- 要获得一种原则性的方法来指定在学习的早期阶段应该注意哪些例子是具有挑战性的。难以学习的样本可以提供更多信息,并且在许多情况下可能有利于强调有时甚至导致“难-易”的反课程。
广义课程学习:简单地测量训练样本的容易程度往往是模糊的,可能不足以反映样本对学习过程的影响。即使是困难的例子也可能为指导训练提供有益的信息,它们不一定需要在更容易的例子之后引入。为此,假设每个训练样本,无论是“更容易”还是“更难”,都包含更容易学习或更容易访问的模式,以及某些难以识别的信息,这些信息可能对深度网络具有挑战性。
理想情况下,课程应该是在训练过程之上的一个连续功能,它从关注输入的“最简单”模式开始,而随着学习的进展,逐渐引入“较难学习的”模式。上图(b)给出了一个形式化的说明。任何输入数据X都将由一个变换函数 T t ( ⋅ ) T _ { t } ( \cdot ) Tt(⋅)处理,该变换函数的条件是训练历元 t ( t ≤ T ) t ( t \leq T ) t(t≤T),然后输入到模型中,其中 T t ( ⋅ ) T _ { t } ( \cdot ) Tt(⋅)被设计为动态过滤掉训练数据中过于困难和难以学习的模式。总是让 T T ( X ) = X T _ { T } ( X ) = X TT(X)=X。值得注意的是,所提方法可以被看作是样本智能课程学习的一种广义形式。设置 T t ( X ) ∈ { 0 , X } T _ { t } ( X ) \in \{ 0 , X \} Tt(X)∈{0,X},简化为选例。
论文的工作受到上述两个问题的启发:
- 引入一种计算约束的顺序搜索算法来求解训练课程。
- 为EfficientTrain++开发了两种实现技术,改进了EfficientTrain++实际训练效率相对于用于训练的GPU数量的可扩展性,显著减少CPU/内存的数据预处理负载,同时保持有竞争力的性能。
- 通过广泛评估EfficientTrain++,综合结果表明,EfficientTrain++优于普通的EfficientTrain和其他竞争基准,达到了最先进的训练效率。
论文
论文名: EfficientTrain++: Generalized Curriculum Learning for Efficient Visual Backbone Training
论文速递: 点我转跳哦
代码通道: GitHub(EfficientTrain++)
更容易学习的模式:频域
基于图像的数据可以自然地在频域进行分解。图像低频成分描述了平滑变化的内容,相对来说网络更容易学习识别。
图2:低通滤波.图像来源
如上图 (a)所示,将图像映射到中心频率最低的傅里叶频谱,将中心圆(半径:r)外的所有分量设置为零,并将频谱映射回像素空间。上图 (b)说明了r的影响。
图3 低通滤波下的消融研究结果,将DeiT-Small输入的高频成分剔除,并在ImageNet-1K上给出验证精度与训练epoch的曲线。图像来源
在低通滤波数据之上,准确率与训练epoch的曲线如图3所示。图3中的模型仅用于利用输入的低频分量。然而,训练过程与训练开始时的原始基线大致相同。即使图像的高频成分被消除,早期阶段的学习行为仍然保持不变。
论文假设,在输入图像同时包含低频和高频信息的自然学习过程中,模型倾向于首先学习捕获低频成分,而在此基础上逐渐利用高频信息。
图4:仅在验证输入上执行低通滤波,使用原始图像训练模型,不进行任何滤波(即包含低频和高频成分),并评估具有不同带宽的低通滤波验证集上的所有中间检查点。图像来源
考虑使用原始图像训练模型,其中同时提供低/高频分量。在图4中,评估了具有不同带宽的低通过滤验证集上的所有中间检查点。显然,在早期阶段,仅利用低通过滤的验证数据不会降低准确性。这一现象表明,学习过程始于对低频信息的关注,尽管在训练过程中模型总是可以访问高频成分
表1:比较:在低/高通过滤的验证集上评估图4中的模型。模型是使用原始图像训练的,没有进行任何过滤。低/高通滤波器的带宽被配置为使最终训练的模型(第300 epoch)在两个验证集上具有相同的精度(即71.3%)。图像来源
在表1中,比较了低/高过滤验证集上的中间检查点的准确性。在较早的训练阶段,低通过滤验证集的准确度增长得更快,即使两个最终准确度是相同的。
较低频率的成分自然被捕获较早。因此可以直接将它们视为一种“更容易学习”的模式。这就引出了一个问题:能否设计一个培训课程,从只提供模型的低频信息开始,逐渐引入高频成分?
在表2中研究了这个想法,在表2中,仅在给定数量的起始epoch中对训练数据执行低通滤波。其余的训练过程保持不变。
表2:直接基于频率的训练课程(在ImageNet-1K上的DeiT-Small)的结果。观察:在50-75%的训练过程中,可以在不牺牲最终精度的情况下消除输入的高频成分。图像来源
通过在早期时代使用适当配置的低通滤波器处理图像,精度得到了适度提高。然而,一个重要的观察值得注意:即使在50-75%的训练过程中进行主动滤波(例如,r= 40,60),模型的最终精度也可以在很大程度上保持不变。这种现象将注意力转向了训练效率。在较早的学习阶段,只使用低频分量训练模型是无害的。这些组件仅包含原始输入图像中所有信息的选定子集。因此,是否可以使模型以更少的计算成本有效地从它们中学习原始输入?事实上,这个想法是可行的,可能至少有两种方法。
图5:频域低频裁剪( B 2 B^2 B2:带宽)。图像来源
- 下采样。用图像下采样近似表2中的低通滤波可能是一个简单的解决方案。下采样保留了大量的低频信息,同时它二次节省了模型处理输入的计算成本。然而,它不是一个专门用于提取低频成分的操作。从理论上讲,它也保留了一些高频成分。从经验上看,观察到这个问题会降低性能(见表19 (b))。
- 低频裁剪。使用二维离散傅立叶变换(DFT)将H ×W图像X映射到频域,获得H ×W傅立叶谱,其中中心的值表示具有最低频率的分量的强度。离中心较远的位置对应较高的频率。并从光谱中心裁剪一个B×B补丁,其中B是窗口大小(B < H, W)。由于该补丁仍然是中心对称的,可用逆2D DFT将其映射回像素空间,得到一个B×B新图像Xc,即:
X c = F − 1 ∘ C B , B ∘ F ( X ) ∈ R B × B , X ∈ R H × W , X _ { c } = F ^ { - 1 } \circ C _ { B , B } \circ F ( X ) \in R ^ { B \times B } , X \in R ^ { H \times W } , Xc=F−1∘CB,B∘F(X)∈RB×B,X∈RH×W,
其中, F , F − 1 F , F ^ { - 1 } F,F−1和 C B , B C _ { B , B } CB,B分别表示二维DFT、逆二维DFT和 B 2 B ^ { 2 } B2中心裁剪。在GPU上,完成上述的计算或时间开销可以忽略不计。
值得注意的是, X c X _ { c } Xc实现了低频成分的无损提取,而高频部分被严格剔除。因此,在较早的训练阶段将 X c X _ { c } Xc输入到模型中可以提供绝大多数有用的信息,这样最终的准确性将受到最小的影响,甚至不受影响。相比之下,重要的是,由于 X c X _ { c } Xc的输入大小减少,模型处理Xc的计算成本能够大大节省,从而产生相当高效的训练过程。
命题1。假设 X c = F − 1 ∘ C B , B ∘ F ( X ) X _ { c } = F ^ { - 1 } \circ C _ { B , B } \circ F ( X ) Xc=F−1∘CB,B∘F(X), X d = D B , B ( X ) X _ { d } = D _ { B , B } ( X ) Xd=DB,B(X),其中 B × B B ×B B×B下采样 D B , B ( ⋅ ) D_B,_B(·) DB,B(⋅)是通过常见的插值算法实现的,进而:
-
X c X _ { c } Xc仅由 X X X的低频频谱(即 C B , B ⊙ F ( X ) C _ { B , B } \odot F ( X ) CB,B⊙F(X)决定。另外,到 X c X _ { c } Xc的映射是可逆的,总能从 X c X _ { c } Xc中恢复 C B , B ⊙ F ( X ) C _ { B , B } \odot F ( X ) CB,B⊙F(X)。
-
X d X _ { d } Xd对 X X X的高频频谱(即 C B , B ∘ F ( X ) C _ { B , B } \circ F ( X ) CB,B∘F(X))之外的区域具有非零依赖性。
表3:将表2中的低通滤波替换为低频裁剪的ImageNet-1K上的结果,在显著降低训练成本的情况下产生具有竞争力的精度(见下划线数据)。
图6:使用低频裁剪输入(B = 128, 160)和原始输入(B = 224)训练的DeiT-S[19]的CKA特征相似度热图。X轴和Y轴表示训练时间(根据训练的计算成本缩放)。将相同的原始图像输入到所有模型中(包括用B = 128, 160训练的模型),并从最后一层提取特征。45◦线以白色突出显示。图像来源
论文的主张可以从表3的结果中得到经验上的支持,在表3中,用低频裁剪取代了表2中的低通滤波操作。即使是这样简单的实现也会产生有利的结果:训练成本可以节省~ 20%,同时保持有竞争力的最终精度。
该现象可以通过图6来解释:在中间训练阶段,使用低频裁剪输入训练的模型可以学习类似于基线的深度表示,并且成本显著降低,即明亮部分明显位于白线之上。
易于学习的模式:空间域
除了频域操作外,还可以通过空间域变换来提取“更容易学习”的模式。例如,现代深度网络通常使用强大而精细的数据增强技术进行训练。
增强的训练数据提供了原始样本信息和增强操作引入的信息的组合。原始模式可能“更容易学习”,因为它们是从现实世界的分布中提取的,数据增强主要影响训练的后期阶段。
为此,根据通过选择RandAug作为一个代表性的例子来研究这个想法,它包含了一系列常见的空间数据增强变换(旋转、锐化、剪切、日光等)。在表4中,RandAug的大小在前半段训练过程中是不同的。可以看出,这种方法提高了精度,并且增益与低频裁剪兼容。
表4:基于数据增强的课程(DeiT-Small在ImageNet-1K上的表现)。在第1 -150个训练周期(m= 9指基线)测试降低RandAug的大小。图像来源
表4证明了“更容易学习”的模式可以通过频率和空间域的视角来识别和提取。这一发现不仅增强了广义课程学习框架的完整性,而且为本文研究提供了新的见解。
统一的训练课程
最后,将前文提出的技术整合起来,设计出统一高效的训练课程。具体而言,首先将RandAug的幅度m设置为训练历元t的线性函数: t : m = ( t / T ) × m 0 t : m = ( t / T ) \times m _ { 0 } t:m=(t/T)×m0,其他数据增强技术保持不变。
然后利用贪婪搜索算法来确定B在训练期间的调度(即低频裁剪的带宽 B B B)。如算法1所示,将训练过程分成几个阶段,每个阶段求解一个值 B B B。算法从最后一个阶段开始,在与基线(固定 B B B = 224训练)相比不降低性能的约束下最小化 B B B。在标准的300epoch训练设置下,在ImageNet-1K上得到了swwin - tiny的调度,并将此调度直接用于其他模型或其他训练设置。
算法1 贪婪搜索算法。图像来源
表5:从算法1获得的EfficientTrain课程。只执行算法1一次,并直接将其生成的课程用于不同的模型和训练设置。在执行算法1时考虑了标准的300epoch训练,因此本文提供的课程采用该配置。然而,利用简单的线性缩放,EfficientTrain可以很容易地适应不同的时代和最终输入大小(见表10)。图像来源
表10:适应不同的最终输入尺寸。之所以选择swin-base作为代表性示例,是因为较大的模型通常从较大的输入规模中获益更多。图像来源
值得注意的是,尽管很简单,但EfficientTrain具有很好的通用性和惊人的有效性。在大规模自然图像数据库(例如ImageNet-1K/22K)上训练或预训练视觉骨干时,可以直接应用于最先进的深度网络,无需额外的超参数调优,显著提高了其训练效率。在不同的网络架构、不同的训练计算预算、监督/自监督学习算法和不同数量的训练数据中,收益是一致的。
EFFICIENTTRAIN++
进而提出一种增强的EfficientTrain++方法。EfficientTrain++从两个方面改进了普通的EfficientTrain, 1)节省了执行算法1的计算成本,2)减少了由于低频裁剪操作而增加的CPU-GPU输入/输出(I/O)成本。通过引入一种低成本算法来确定B的调度,以及一种高效的低频下采样操作来解决这些问题。
除了之外,进一步提出了两种简单但有效的实现技术。采用它们可以使EfficientTrain++实现更显著的实际训练加速,充分利用更多GPU进行大规模并行训练;减少CPU/内存的数据预处理负载。
计算约束的顺序搜索
算法1背后的底层逻辑很简单。考虑了一个约束优化问题。约束条件是不降低模型的最终精度,而优化目标是使训练成本最小化,可分多个步骤解决这个问题(算法1,第5-7行),总是试图在每个步骤中尽可能地减少训练成本。
然而算法1的计算成本较高。首先,将最终精度作为约束条件。因此,给定任何可能组合{B1,…, BN},需要训练模型收敛,得到最终的验证精度,并验证是否{B1,…, BN}满足约束。其次,验证总是需要从头开始训练模型,即,由于从最后一个训练阶段到第一个训练阶段求解B值,因此每当执行算法1的第6行(即改变B1,…,Bi)时,需要在某些训练的开始阶段更改B。一般来说,假设有N个训练阶段和M个B的候选值。执行算法1将从零开始训练模型到收敛约(N + M−1)次,可能会引入非平凡的计算和时间成本。虽然该缺点并不妨碍直接利用算法1的结果课程作为现成的广泛适用的高效训练技术,但算法1的有限效率可能会阻碍未来的工作。
一种更有效的算法来求解课程。在上述分析的推动下,提出了一种新的算法来确定课程中B,如算法2所示。新方法不仅比算法1更有效,而且在产生的课程方面也优于算法1。具体来说,算法2引入了两个主要创新:
-
新的公式:计算约束搜索:考虑了一个与算法1不同的约束优化问题。约束条件是与基线(算法2中由β指定)相比,以预定义的比例节省训练成本,而优化目标是使最终准确率最大化。通过将训练过程分为N个阶段,并为每个阶段求解一个B值。然而,将总训练成本的1/N分配给每个阶段,然后在这个训练预算固定的情况下同时改变B和每个阶段的训练步数。也就是说,给定预定义的批大小,当B相对较小时,模型处理小批训练数据的成本较小,使用更多的小批数据更新模型的次数更多,但总体计算量不变。相反,当训练阶段B较大时,由于训练预算是固定的,模型更新次数需要相对较少。请注意,每个训练阶段的学习率计划始终保持不变。
-
执行顺序搜索。求解从第一个训练阶段到最后一个训练阶段的B值,其中任何阶段的B解都是基于前一阶段的检查点。具体来说,给定一个训练阶段,分别从前一个检查点和几个候选B值执行,并对得到的模型与原始图像(B = 224)进行少量次的微调(算法2中的Tft)。通过比较这些微调模型的验证精度来选择最佳B,这是反映不同B对最终精度影响的有效代理。
算法2 计算约束的顺序搜索算法。图像来源
重要的是,与表5不同,EfficientTrain++基于算法2引入的计算约束公式。换句话说,B、m和学习率的值取决于训练的总计算预算消耗了多少,也就是说,它们的调度是在计算成本之上定义的。基于这一特点,EfficientTrain++课程可以灵活地适应不同数量的总培训预算。值得注意的是,为了衡量所提方法的总训练成本,将训练所需的计算量转换为基线中标准训练epoch的数量(例如,原始输入为 22 4 2 224^2 2242),并直接报告等效epoch数。
高效低频下采样
图5中的低频裁剪操作能够提取所有的低频成分,同时消除其余的高频信息。但是,它的CPU-GPU输入/输出(I/O)成本很高,主要由图5中的2D DFT和逆2D DFT引起的,对于CPU来说是及其昂贵的,必须在GPU上执行。因此,需要将原始映像(例如 22 4 2 224^2 2242)从CPU传输到GPU。因此,对CPU到GPU I/O吞吐量的需求将以与训练加速相同的比例增加,高I/O成本是阻碍本文方法有效实现的重要瓶颈。
低通滤波+图像降采样: 受这个问题的启发,提出了一种低频裁剪的有效近似。通过改进图像降采样操作而得到的,如命题1所示,下采样的缺点是不能严格滤除所有的高频信息。
为了解决这个问题,提出了一个两步法。首先,使用B × B方形滤波器对原始图像进行低通滤波(不改变图像大小)。其次执行B × B下采样。由于低通滤波提取的信息与B×B低频裁剪完全相同,因此下采样将不再引入不需要的高频成分,因此不会影响模型的最终精度。此外,B×B低通滤波在数学上等同于2D自卷积,可以通过Lanczos算法在CPU上高效实现。因此,两步过程可以使用CPU来完成,而只使用生成的B×B模型输入需要转到图形处理器。因此,可以有效降低CPU-GPU的I/O开销。
EfficientTrain++的实现技术
大规模并行训练:早期大批量: 在表6中,批大小在整个训练过程中是固定的。然而,所提方法总是从一个小的B(例如,B = 96)开始训练,与一个较大的B(例如,B = 224)相比,每个小批的计算成本大大减少。此属性在训练硬件的典型设置上是无害的(例如,在≤16个GPU上训练模型)。然而,如果考虑增加GPU的数量(例如,32/64 GPU或更多),在早期训练阶段较小的B通常会产生一个瓶颈,抑制高效实现EfficientTrain++。
表6:EfficientTrain++课程。采用了算法2的计算约束公式,即B、m的值和学习率的配置取决于总训练成本消耗比例。为了测量训练过程的总长度,将训练所需的计算量转换为基线中标准训练周期的数量,并报告这个等效的周期数,以便于理解。图像来源
当B较小时,可以通过同时增加批大小和学习率来解决这个问题。首先,这样的修改被证明是对原始较小批大小的学习过程的有效近似,因此模型的最终性能不会降低(见表13)。另一方面,增加了小B的每批训练成本,从而显著提高了EfficientTrain++相对于GPU数量的扩展效率。
表13:在EfficientTrain++中引入早期大批处理机制的影响。这里是ImageNet-22K预训练+ ImageNet-1K微调的场景。实验设置见表12。图像来源
表12:ImageNet-22K (IN-22K)预训练结果。使用或不使用本文方法在IN-22K上预训练模型,在ImageNet-1K (IN-1K)训练集上进行微调,并在IN-1K验证集上进行评估。通过将等效的EfficientTrain++预训练周期的总数设置为基线的2/3、1/2和1/3来呈现结果,在这个范围内,所提方法在准确性方面通常与基线相当。全天候预训练成本以NVIDIA 3090 GPU为基准。图像来源
同时,使用了上界平方根学习率缩放规则:
L R B max = min ( L R 224 max × B S B B S 224 , L R max ) L R _ { B } ^ { \max } = \min ( L R _ { 2 2 4 } ^ { \ \ \max } \times \sqrt { \frac { B S _ { B } } { B S _ { 2 2 4 } } } , \frac { } { L R ^ { \ \ \max } } ) LRBmax=min(LR224 max×BS224BSB,LR max)
其中 L R B max L R _ { B } ^ { \max } LRBmax表示对应B的学习率调度(本文采用线性预热的余弦退火调度,[18])的最大值,BSB表示对应B的批大小。将LRmax设为LRmax B的上界,因为学习率过大通常会导致训练过程不稳定。
减少数据预处理负荷:重放缓冲。 当B较小时,从每个训练样本中学习的计算成本是二次节省的。事实上,这种学习成本的降低伴随着对更高的数据预处理吞吐量的需求,即准备训练输入的速度需要跟上GPU上的模型训练速度。因此,与基线相比,EfficientTrain++可能会增加内存或CPU等硬件的负载,可能会影响方法的实际训练效率。为了缓解这个问题,建议利用重放缓冲。
一旦产生了一个新的预处理小批数据,将其放入缓冲区,而如果达到预定义的最大大小,删除最旧的数据们观察到,在普通硬件上,这个最大大小通常可以设置得相当大。在训练过程中,为了获得模型输入,交替执行以下两个步骤:
- 1)在 n b u f f e r n_{buffer} nbuffer时间内从重播缓冲区中采样小批量数据;
- 2)生成新的小批量训练数据,将其输入模型进行训练,并用其更新重播缓冲区。
采用该技术,数据预处理负荷减少 n b u f f e r + 1 n_{buffer}+1 nbuffer+1倍,同时可以有效地提高模型的泛化性能(见表14)。值得注意的是,只减少了预处理小批的数量。训练迭代的总次数和训练模型的计算成本保持不变。
表14:在effenttrain++ (ET++)中引入重放缓冲区的效果。在ImageNet-1K上训练相对较小的模型的场景,其中高数据预处理负载往往是有效训练的实际瓶颈。实验设置与表7相同。“峰值数据预处理负载”的值是指饱和单个NVIDIA 3090 GPU的所有计算核心所带来的峰值负载。图像来源
表7:ImageNet-1K (IN-1K)的结果。在IN-1K训练集上训练了使用或不使用EfficientTrain++的模型,并报告了IN-1K验证集上的准确性。对于EfficientTrain++,等效训练周期的数量被设置为200,这足以实现与基线相比具有竞争力或更好的性能。全天候训练加速以NVIDIA 3090 GPU为基准。图像来源
实验
监督式学习
在ImageNet-1K上训练各种视觉主干。表7给出了在ImageNet-1K上应用EfficientTrain++训练代表性深度网络的结果,ImageNet-1K是评估深度学习算法最广泛使用的设置之一。很明显,与基线相比,所提方法实现了具有竞争力或更好的验证精度(例如,85.0% vs . CAFormer-M36的84.9%),同时节省了1.5 - 1.6倍的训练计算成本。
此外,一个重要的观察结果是,在不同类型的深度网络中,EfficientTrain++的增益是一致的,这表明本文方法具有很强的泛化性。此外,表7还报告了GPU设备上的全天候训练加速。可以看出,EfficientTrain++的实际效率与理论结果是一致的。
在表8中,给出了对EfficientTrain、EfficientTrain++和基线的全面比较。从这些结果中可以得到一些观察结果。首先,两个版本的EfficientTrain方法都有效地提高了训练效率。
表8:EfficientTrain和EfficientTrain++ (et++)的比较。†:这里给出这些结果进行综合比较(ImageNet-22K上的详细结果见表12)。图像来源
与基线相比,EfficientTrain能够将各种深度网络的训练成本降低1.5倍,同时有效地提高了准确性。其次,EfficientTrain++课程的表现持续优于EfficientTrain。例如,在ImageNet-1K上,对于DeiT-small, EfficientTrain++的准确率提高了0.6% (81.0% vs . 80.4%)。在预训练较大模型(如CSWin-Base/Large)的情况下,EfficientTrain++的训练加速率明显高于EfficientTrain (2.0× vs . 1.5×),并产生了更好的泛化性能。第三,可以观察到,在EfficientTrain++中使用的算法2与用于获取EfficientTrain的算法1相比,获得课程的求解成本降低了2.56倍。总之,上述观察表明,正如所期望的那样,EfficientTrain++从整体上改进了EfficientTrain。
图7: ImageNet-1K上排名第一的准确率与总训练成本。对于基线和efficienttrain++,分别在[100,300]和[100,200]内改变训练周期的总数和等效训练周期.图像来源
适应不同的培训预算。为方便地适应不同的训练计算预算,即通过简单地调整表5和表6上的总训练epoch的数量。作为代表性的例子,在图7中报告了验证精度与计算训练成本的曲线,其中包括EfficientTrain++和基线。在相对较小的训练成本约束下,所提方法的优势更加显著,例如,在100epoch训练的DeiT-Small之上,它比基线高出3.1% (79.8% vs . 76.7%)。认为这是因为在训练资源有限的情况下,高效的训练算法更为重要。此外,可观察到,主要希望达到与基线相同的性能,那么EfficientTrain++最多可以节省2 - 3倍的训练成本,这比表7的结果更为显著。
表9:以相同的训练成本获得更高的准确度(ET++: EfficientTrain++)。所提方法被配置为具有与基线相同的训练成本(对于ET++,设置等效训练epoch = 300)。图像来源
在表9中,通过允许使用与标准300 epoch训练管道相同的训练成本来部署提出的培训课程。结果表明,所提方法显著提高了准确率(例如,DeiT-Tiny的准确率提高了1.9%)。有趣的是,当使用EfficientTrain++进行适当训练时,vanilla DeiTSmall网络的性能与基线swin-tiny模型相当(81.3%),而不会增加训练时间。
与现有高效训练方法的比较
表11总结了与最先进的高效训练算法的比较。本文方法与1)最近提出的样本智能或正则化智能课程学习方法进行了全面比较;2)渐进式学习算法;3)视觉变形器的高效训练方法。值得注意的是,其中一些方法并不是在考虑的最先进的训练管道之上开发的。当将 本文方法与它们进行比较时,本文也在没有AugRegs的情况下实现了所提的方法(在这种情况下,本文方法中的“RandAug”被删除),并采用与它们相同的训练设置(例如,训练ResNet-18/50为90/200 epoch)。表11中的结果表明,在准确性和训练效率方面,EfficientTrain/ EfficientTrain++优于所有竞争基准。此外,本文方法的简单性使它能够方便地应用于不同的模型和训练设置,只需修改几行代码,这是比基线更重要的优势。
表11:EfficientTrain与ImageNet-1K上最先进的高效训练算法。这里的“AugRegs”表示广泛使用的各种模型正则化和数据增强技术的整体组合。对于EfficientTrain++,报告等效训练周期的数量。†:复现的结果。图像来源
ImageNet-22K的主要结果
ImageNet-22K训练。现代视觉骨干网的一个重要优势是随着训练数据量的增加,其具有出色的可扩展性。为此,在更大的ImageNet-22K基准数据集上进一步验证方法的有效性。
结果总结在表12中,其中模型在ImageNet-22K上进行预训练,并通过对ImageNet-1K进行微调来进行评估。在预训练阶段实现了EfficientTrain/ EfficientTrain++,这占了总计算/时间的绝大部分成本。
可以观察到,与ImageNet-1K类似,所提方法在卷积神经网络和视觉变形器的基础上至少与基线相当,同时实现了高达2 - 3倍的显著训练加速。结果的一个亮点是,EfficientTrain++节省了大量的实际训练时间,例如,158.5 GPU天(237.8 vs 79.3),对于具有8个GPU的标准计算节点,相当于20天。
EfficientTrain++的实现技术
在下文中研究提出的两种实现技术的有效性,证明了这些技术有效地降低了实现EfficientTrain++的门槛,并使所提方法能够在更广泛的场景中获得显著的实际训练加速。
大规模并行训练:早期批量大。由于该机制旨在使EfficientTrain++能够充分利用更多的GPU。在ImageNet-22K上预训练CSWin-Base/Large。CSWin变压器是最先进的深度网络的代表性例子。由于模型规模大,ImageNet-22K训练数据量大,实际需要使用多个GPU(例如64个)并行预训练模型。在表13中,研究了在早期学习阶段(称为“早期大批量”)引入较大批次的影响。一般来说,当利用16个GPU时,普通的EfficientTrain++能够实现显著的训练加速。然而,当GPU数量增加到64个时,其实际效率明显下降。相比之下,在64个GPU上配备早期大批处理机制的EfficientTrain++的实时预训练加速与利用16个GPU的速度大致相同。这个观察结果表明,随着GPU数量的增加,增大小B的批大小可以有效地增强EfficientTrain++的可伸缩性。此外,值得注意的是,这种机制并不影响模型的性能。
减少数据预处理负荷:重放缓冲。为了研究这一机制,以训练相对轻量级的模型(如DeiT-T/S和CSWin-T/S)为代表。由于这些网络的规模较小,它们在GPU上的训练速度通常很快,例如就准备训练输入的吞吐量而言,它们对CPU和内存提出了更高的要求。因此,数据预处理负荷是影响训练效率的潜在瓶颈。通过引入重放缓冲区来训练这些模型,并将结果与表14中原始的EfficientTrain++进行比较。可以观察到,重放缓冲区有助于显著降低峰值数据预处理负载,并保持与基线相当的性能。
自监督学习
遮罩自动编码器(MAE)的结果。除了监督学习,所提方法也可以方便地应用于自监督学习算法,因为它只修改训练输入。
表15:基于MAE的自监督学习结果。该模型在ImageNet-1K上使用EfficientTrain++ (ET++)进行预训练,并通过端到端微调进行评估。†:使用额外的数据(DALL-E标记器。‡:使用相对位置编码(RPE)。图像来源
表15给出了一个代表性的例子,其中在MAE[2之上部署了带有HOG重构目标的EfficientTrain++。同时还介绍了最近提出的几种自监督学习方法的结果,这些方法使用相同的主干,并且具有与相当的预训练成本。可以观察到,所提方法在保持准确率的同时显著降低了MAE的预训练成本,优于所有竞争基线。
迁移学习
下游图像识别任务。首先通过在下游分类数据集上对模型进行微调来评估用EfficientTrain/ EfficientTrain++训练的模型的可移植性。结果如表16所示。
表16:可转移到下游图像识别任务。模型在ImageNet-1K (w/o EfficientTrain或EfficientTrain++)上进行预训练,并对下游数据集进行微调以报告准确性。C10/C100为CIFAR-10/100数据集。图像来源
值得注意的是,在接下来的[19]中,CIFAR-10/100[95]中的32×32图像被调整为224×224进行预处理,因此判别模式主要分布在低频分量内。相反,Flowers-102[96]和Stanford Dogs[97]是细粒度的视觉识别数据集,其中高频线索包含重要的鉴别信息(例如,区分狗的种类的详细面部/皮肤特征)。
可以观察到,所提方法在这两种类型的数据集上产生的迁移学习性能比基线具有竞争力或更好。换句话说,尽管所提方法通过有序的课程学习利用低频/高频信息,但最终获得的模型可以有效地利用这两种类型的信息。
表17:COCO上的对象检测和实例分割。在ImageNet-1K上的方法的基础上实现了代表性的检测/分割算法。图像来源
为了将预训练模型转移到更复杂的计算机视觉任务中,使用EfficientTrain/EfficientTrain++预训练的模型初始化代表性检测和实例分割框架的主干。MS COCO实验结果见表17。当将预训练成本降低约1.5倍时,所提方法在所有场景的检测/分割性能方面都明显优于基线,实现遵循MMDetection。
表18:ADE20K上的语义分割。在ImageNet-1K上使用w/或w/o预训练的模型初始化了UperNet中的骨干网络。†:’ MS+Flip '表示多尺度和翻转输入图像的集成结果.图像来源
语义分割。表18进一步评估了所提方法在下游语义分割任务上的性能。使用EfficientTrain++实现了几个代表性的骨干预训练,作为在UperNet中编码器的初始化,并使用MMSegmentation在ADE20K上对UperNet进行微调[110]。表18中的观察结果与表16和表17相似。本文方法可以节省至少1.5倍的预训练成本,同时有效地提高下游性能。例如,在DeiT-Small的基础上,在160k步训练设置下,EfficientTrain++将mIoU/mIoUMS+Flip提高了1.1/1.2。
总结
总结: 提出了一种新的广义课程学习方法EfficientTrain++,总是利用每个学习阶段的所有数据,但只在训练开始时暴露每个示例的“容易学习”模式(例如,在数据增强之前,图像和原始信息的低频成分),并随着学习的进展逐渐引入更困难的模式。为了设计一个合适的课程学习计划,提出了一个定制的计算约束的顺序搜索算法,产生一个简单的,良好的泛化,但惊人的有效的培训课程。在大规模ImageNet-1K/22K数据集上,在各种最先进的深度网络(例如,ConvNets, vit和ConvNet-ViT混合模型)上,在不同的训练设置(例如,不同的训练预算,不同的测试输入大小,监督/自监督学习场景)下,对EfficientTrain++的有效性进行了广泛验证。在不牺牲模型性能或引入新的可调超参数的情况下,EfficientTrain++将视觉主干的实时训练成本降低了1.5 - 3.0倍。
致谢
欲尽善本文,因所视短浅,怎奈所书皆是瞽言蒭议。行文至此,诚向予助与余者致以谢意。
参考
[1]. Y. Wang, Y. Yue, R. Lu, Y. Han, S. Song and G. Huang, “EfficientTrain++: Generalized Curriculum Learning for Efficient Visual Backbone Training,” in IEEE Transactions on Pattern Analysis and Machine Intelligence, doi: 10.1109/TPAMI.2024.3401036.
[2]. Markdown常见语法