The Efficiency Misnomer
25 Oct 2021
https://arxiv.org/abs/2110.12894
Authors: Mostafa Dehghani, Anurag Arnab, Lucas Beyer, Ashish Vaswani, Yi Tay
Abstract: Model efficiency is a critical aspect of developing and deploying machine learning models. Inference time and latency directly affect the user experience, and some applications have hard requirements. In addition to inference costs, model training also have direct financial and environmental impacts. Although there are numerous well-established metrics (cost indicators) for measuring model efficiency, researchers and practitioners often assume that these metrics are correlated with each other and report only few of them. In this paper, we thoroughly discuss common cost indicators, their advantages and disadvantages, and how they can contradict each other. We demonstrate how incomplete reporting of cost indicators can lead to partial conclusions and a blurred or incomplete picture of the practical considerations of different models. We further present suggestions to improve reporting of efficiency metrics.
摘要:模型效率是开发和部署机器学习模型的一个关键方面。推理时间和延迟直接影响用户体验,有些应用程序有硬性要求。除了推理成本外,模型训练还具有直接的财务和环境影响。虽然有许多成熟的衡量模型效率的指标(成本指标),但研究人员和从业者通常认为这些指标相互关联,报告的指标很少。在本文中,我们深入讨论了常见的成本指标,它们的优缺点,以及它们如何相互矛盾。我们展示了不完整的成本指标报告如何导致部分结论,以及不同模型的实际考虑的模糊或不完整情况。我们进一步提出了改进效率指标报告的建议。
1简介
除了模型质量外,模型的效率(Menghani,2021)通常是需要考虑的一个重要方面,通常用于衡量不同方法的相对效用。毕竟,花在加速器上的训练时间与财务成本和环境影响直接相关。同时,模型的速度可能与用户体验直接相关。为此,文献中已有成熟的方法来评估和报告模型的效率,如可训练参数的数量、浮点运算(FLOP)的数量和速度/吞吐量。
虽然通常假设这些成本指标是相关的(例如,参数数量越少,吞吐量越高),但我们表明,情况未必如此。因此,不完整的成本指标报告可能会导致对所提议方法的指标、优点和缺点的不完整描述。为此,我们表明,通过只报告有利的成本指标,也可能在不知不觉中歪曲模型的效率。此外,成本指标的选择也可能导致与模型比较有关的结论不公平、不完整或部分。我们将这种现象称为“效率误称”。
效率误称的总体要点是,没有一个单一的成本指标是足够的。作为效率衡量标准的不完整报告(例如,仅显示FLOPs或可训练参数的数量)可能会产生误导。例如,具有低FLOPs的模型实际上可能不会很快,因为FLOPs没有考虑诸如并行度(例如深度、重复)或硬件相关细节(例如内存访问成本)等信息。尽管如此,在许多研究论文中,尤其是在最近的计算机视觉文献中,FLOPs已被用作最常见的成本指标,以量化模型效率(Szegedy et al.,2015;He et al.,2016;Tan and Le,2019;Feichtenhofer et al.,2019;Fan et al.,2021)。
同样,尽管在NLP社区(Devlin et al.,2018;Liu et al.,2019;Lan et al.,2019)和之前的Vision社区(Krizhevsky et al.,2012;Simonyan and Zisserman,2015;Huang et al.,2017;Tan and Le,2019)中通常用作事实上的成本指标,但可训练参数的数量(模型的大小),当用作效率的独立衡量标准时,也可能会产生误导。直观地说,一个模型可能只有很少的可训练参数,而且速度仍然很慢,例如,当参数在许多计算步骤中共享时(Lan等人,2019年;Dehghani等人,2018年)。虽然可训练参数的数量通常可以很有见地地决定模型是否适合内存,但作为一个独立的成本指标,它不太可能有用。这就是说,即使一个模型实际上比另一个模型慢或快,参数匹配模型仍然普遍进行“公平”比较(Mehta et al.,2020;Lee Thorp et al.,2021;Tay et al.,2020a;Xue et al.,2021;Wightman et al.,2021)。
同时,使用吞吐量/速度作为效率的主要指标也可能存在问题,因为这将实现细节、硬件优化和基础设施细节(例如输入管道延迟)紧密结合在一起。因此,这可能不会在不同的基础设施或硬件之间对某些方法进行一一比较,甚至更糟。
鉴于模型体系结构研究的前景是多样的,成本指标之间的关系可能严重偏离规范,学习如何在基于效率的成本指标的背景下公平比较模型至关重要。例如,稀疏模型(Fedus et al.,2021;Riquelme et al.,2021)似乎呈上升趋势,通常具有大量可训练参数,但保持密集模型的FLOPs和速度。相反,有些模型由于可训练参数少而被认为是轻量级的(Lan et al.,2019;Dehghani et al.,2018),但在实际操作中,消耗的计算量相似。图1显示了一个模型相对于参数计数的缩放行为看起来如何良好的示例,同时将FLOPs或吞吐量作为成本指标,不同的模型可以更好地进行缩放。此示例显示了查看一个指标可能具有欺骗性,并且会花费大量时间和资源,例如,选择错误的候选指标进行扩展。
除了不同的成本指标反映不同的方面外,还可以选择它们来反映训练成本或推断时的成本。根据具体情况,训练和推理成本都是至关重要的。此外,在推理过程中,单个成本指标可能会有利于一个模型而不是另一个模型,但不会有利于训练(反之亦然)。例如,在推理过程中,深度共享参数的模型的记忆效率特别高,但在训练过程中,向后传递需要保持的激活大小与没有参数共享的类似模型一样大。
这里的首要难题是,首先,没有一个单一的成本指标能够捕捉到对所有从业者或研究人员普遍有用的整体观点。我们表明,成本指标之间的权衡远远没有达到标准假设,而且可以很容易地进行导航。此外,我们认为,人们关心的成本指标在很大程度上取决于模型应该使用的应用程序和设置。例如,对于嵌入式应用程序,推理速度至关重要,而对于已部署的推荐系统,由于模型不断被重新训练,训练成本可能极其重要。
本文的总体贡献如下:我们指出了在深层神经网络环境下测量模型效率的内在困难。我们回顾了最常见的成本指标,介绍了每种指标的优缺点,并讨论了为什么它们作为一个独立指标可能不够充分。虽然显而易见,但我们举例说明了这些成本指标的不完整报告可能会歪曲模型效率。我们描述了这个问题,创造了“效率误称”一词,并表明它比想象的更普遍。
我们提供的实验表明,比较模型效率在很大程度上取决于成本指标的选择,例如模型中存在参数共享、稀疏或可并行操作的场景。此外,我们简要回顾了文献中当前的一些常见做法,讨论了现有工作如何报告不同模型的比较,并分析了算法的效率。在讨论和分析的同时,我们提供了一些具体的建议和建议,我们相信这些建议和建议将有助于研究人员和实践者就不同模型的效率得出更准确的结论。
2成本指标入门
设计神经网络架构的主要考虑因素之一是质量-成本权衡(Paleyes et al.,2020)。几乎在所有情况下,一种方法的计算预算越多,其结果的质量就越好。为了说明这种权衡,机器学习及其应用的文献中使用了几个成本指标来展示不同模型的效率。这些指标从不同的角度考虑计算成本。
FLOPs次数:
作为模型计算成本代理的一个广泛使用的指标是浮点乘法和加法运算的数量(Johnson,2018;Kim et al.,2021;Arnab et al.,2021;Tay et al.,2021a;b;Narayanan et al.,2021;Liu et al.,2021)。除FLOPs外,文献中还使用了作为单个操作单元的乘法累加数(MAC1)(Johnson,2018)。报告的FLOPs通常使用理论值计算。请注意,理论上的FLOPs忽略了实际因素,例如模型的哪些部分可以并行化。
参数数量:
可训练参数的数量也被用作计算复杂性和内存使用(推理期间)的间接指标(Kim等人,2021;Arnab等人,2021;Tan和Le,2019年;Liu等人,2021;Guo等人,2020年;Mahabadi等人,2021a;b;Houlsby等人,2019年)。许多研究比例律的研究工作(Kaplan et al.,2020;Hernandez et al.,2021;Tay et al.,2021b),尤其是在NLP领域,使用参数数量作为主要成本指标(Devlin et al.,2018;Raffel et al.,2019;Liu et al.,2019;Xue et al.,2021)。
速度:速度是比较不同模型效率的信息量最大的指标之一(So等人,2021;Dosovitskiy等人,2020;Arnab等人,2021;Tay等人,2021b;Kim等人,2021;He等人,2021a;Narayanan等人,2021;Lagunas等人,2021;Liu等人,2021;Tay等人,2020c;b)。在某些设置中,在测量速度时,还考虑了“管道”的成本,这更好地反映了真实场景中的效率。请注意,速度在很大程度上取决于硬件和实现,因此保持硬件固定或根据使用的资源量进行规范化是公平比较的关键。速度通常以各种形式报告:
•吞吐量是指在特定时间段内处理的示例(或令牌)数量,例如“每秒处理的示例(或令牌)”。
•延迟通常是指给定一个示例或一批示例的模型的推断时间(向前传递),通常表示为“每次向前传递的秒数”。关于延迟的要点是,与吞吐量相比,它忽略了批处理示例引入的并行性。例如,当在1秒内处理一批100个示例时,吞吐量为每秒100个示例,而延迟为1秒。因此,对于需要用户输入的实时系统来说,延迟是一个重要因素。
•挂钟时间/运行时间衡量模型处理固定示例集所花费的时间。这通常用于衡量训练成本,例如,达到收敛的总训练时间。
•Pipeline bubble 是指计算设备在每个批次的开始和结束时处于空闲状态的时间(Narayanan等人,2021),它间接测量了流程中非管道部分的速度。
•内存访问成本(MAC)与内存访问次数相对应。它通常占运行时的很大一部分,在具有强大计算能力的现代平台(如GPU和TPU)上运行时,它是实际的瓶颈(Ma et al.,2018)。
我们上面讨论的成本指标对效率提出了不同的观点。然而,其中一些成本指标可能取决于并非模型设计固有的因素,而是取决于模型运行的硬件(例如CPU、GPU或TPU)、模型实现的框架(例如JAX、PyTorch或TensorFlow)甚至编程技能。这些混杂因素增加了比较的难度。例如,理论FLOPs提供了与硬件无关的比较,然而,它不一定转化为模型的速度,因为它不捕获模型中操作和内存访问的顺序依赖关系。另一方面,吞吐量和峰值内存使用率在很大程度上取决于硬件和实现,这可以更好地反映真实场景中模型的效率。软件支持也可能是实现模型最佳硬件性能的限制因素。在(Barham和Isard,2019年)中,作者提出了一个极好的案例,以改进现代加速器软件堆栈的可编程性,从而实现更广泛的模型类别。
在本文的其余部分,我们主要关注参数数量、FLOPs和速度,因为它们捕获了最常见的用例,也是文献中最常见的。附录B列出了根据用例可能很重要的其他成本指标。
2.1训练或推理成本?
在谈到成本时,我们可以把训练成本和推理成本分开。根据主要云服务提供商NVIDIA(Leopold,2019)和Amazon(Barr,2019)的估计,80–90%的ML工作负载是推理处理。因此,更常见的情况是,推理过程中模型的成本被视为实际成本,理由是,与部署模型供许多用户使用时的推理成本相比,训练的摊余每次使用成本可能非常小。然而,随着通过扩大计算预算和/或训练数据来提高模型性能的趋势,以及新模型的快速发展和出现频率,训练成本可以看作是一个相关的问题。此外,在某些情况下,我们必须经常对模型进行再训练,例如,由于隐私要求,或者像许多推荐系统一样,不断生成新数据。推理效率的重要性已经很清楚,在这里,我们将更多地讨论训练效率的重要性以及报告训练成本的潜在问题。
有几个论点支持报告训练成本的重要性和高效训练模型的必要性。例如,从研发的角度来看,当一类模型在训练期间有效时,由于易于迭代周围的想法,它们的性能更有可能得到改善。此外,当模型在性能方面表现出优势时,通常可以应用一些事后修改来提高其推理效率。
此外,不同模型在训练过程中的记忆需求可能会有很大的不同,尽管它们的推理记忆消耗是相当的。例如,不同的优化器在设备上使用不同的内存量,例如,SGD Momentum(钱,1999)与SAM(Foret et al.,2020)。如果模型的成功与使用内存成本高的优化器密切相关,那么当我们计划将该模型与使用内存效率更高的优化器的模型进行比较时,它可能会成为训练期间的瓶颈。
另一个例子是具有高度参数共享的模型,这在推理内存使用方面可能非常有效,但在训练期间,我们需要为向后传递保留的激活大小与没有参数共享的类似模型一样大。与参数大小相比,激活及其统计信息占内存使用量的很大一部分,通过参数共享减少“参数数量”可能不会导致训练期间内存使用量的显著减少(Dehghani等人,2018)。
利用训练时间进行游戏
虽然“训练时间”可以是一个很好的成本指标,但它也容易遵循古德哈特定律:当作为主要指标使用时,它可以而且将被玩弄,失去其意义。首先,很难根据训练时间比较体系结构,因为训练时间包括整个“配方”,不同的成分可能更适合不同的体系结构。例如,MobileNet和EfficientNets几乎完全可以与RMSProp优化器配合使用(Pham,2021)。
其次,由于不可避免地涉及到完整的训练配方,因此唯一有意义的主张是以较小的总训练成本实现更高的精确度;Wightman等人(2021)的表1就是一个很好的例子。训练成本可以是上述任何指标。然而,根据步骤计算训练成本可能会有问题,因为步骤计数本身不是一个有意义的指标,并且可以通过引入多步骤前瞻方案的优化器任意扩展(Zhang et al.,2019)。
相反,可能会有人声称,方法a的性能几乎与另一种方法B一样好,并且大大降低了训练成本。这种说法是无效的,因为方法a可能没有针对训练成本进行优化,很可能只是在考虑到这一点的情况下重新调整,并优于方法B。例如,可以调整训练超参数,如学习率和权重衰减,以使其快速达到良好的质量,但随后会稳定到比“较慢”设置更低的点,最终达到更高的质量。从Kolesnikov et al.(2020)获得的图2说明了这一点,其中ResNet-101x3的“长”训练计划(未针对训练成本进行优化)实现了最佳性能,但“短”计划收敛速度明显更快,最终精度更低。在强化学习的背景下,另一个例子是Kaiser et al.(2019)的彩虹基线,随后在van Hasselt et al.(2019)中进行了重新调整,并显示其也受益于显著更长的训练计划。
一些工作,如MLPerf基准(Mattson et al.,2019),旨在降低使用固定模型M达到固定质量X所需的训练成本。虽然这是固定深度学习模型的许多活动部分的好方法,但应注意,根据古德哈特定律,结果并不意味着“使用模型M达到质量X”。具体而言,如果方法a在使用模型M时达到质量X的速度是方法B的两倍,这既不能用来暗示使用模型N时它们的比较,也不能暗示它们与目标质量X+c的比较:很可能方法B达到X+c的速度比a快,或者更糟,a可能永远不会达到X+c。图3显示了另一个具体示例,从(Kolesnikov et al.,2020)获得,在那里我们看到,当使用较低的权重衰减进行训练时,ResNet模型的初始收敛速度更快,这可能会诱使从业者选择次优值,而使用较高的权重衰减会导致收敛速度变慢,但最终性能更好。
最后一个担忧是,似乎训练速度更快的方法往往会被更频繁地使用,因此随着时间的推移会得到更多的优化,有陷入局部最小值的危险(Hooker,2020;Dehghani等人,2021b)。
2.2成本指标之间的潜在分歧
在本节中,我们将讨论一些我们之前讨论的成本指标之间可能存在分歧的情况。
共享参数
当我们引入一种参数共享形式时,很明显,与没有参数共享的相同模型相比,我们最终得到的可训练参数更少,而FLOPs的数量或速度保持不变。例如,通用Transformer(UT)(Dehghani et al.,2018)与vanilla Transformer(Vaswani et al.,2017)的比较图1。UT深入共享模型的参数,因此接近参数数量的质量边界。然而,当查看FLOPs时,为了在参数计数方面保持类似的容量,UT需要更多的计算,这使得从FLOPs的角度来看,它不是那么有效。
引入稀疏性
稀疏性正成为深层神经网络上下扩展的主要方式之一。我们需要区分至少两大类稀疏神经网络:结构化和非结构化。
结构化稀疏模型将模型中较大、密集的部分替换为更小、仍然密集的部分的集合。示例包括简单到用分组(Xie et al.,2017)或可分离(Howard et al.,2017)替换密集卷积的变体,或复杂到用许多较小的“专家”块替换大块的变体,以及仅通过最适合的块路由示例(Fedus et al.,2021;Riquelme et al.,2021)。后者通常被称为混合专家(MoE),允许在参数计数方面增加容量,同时保持较小且恒定的计算成本。图1比较了MoE开关Transformer(Fedus等人,2021)与VaswaniTransformer(Vaswani等人,2017年)的质量成本。虽然Switch在质量与参数计数方面存在不足,但它在质量与FLOPs和速度方面提供了一个很好的权衡。
非结构化稀疏模型是指密集运算的权重包含许多(几乎)零的模型(Gale et al.,2019;Evci et al.,2020),这些零对运算结果没有影响,因此原则上可以跳过。这保持了原始模型的整体结构,同时显著减少了最昂贵操作的FLOPs。
这两种类型的稀疏模型都会大大减少理论上的FLOPs,通常会达到几个数量级。然而,这些并不能转化为同样大的速度提升。结构化稀疏模型(尤其是MoE类型)的困难包括路由开销,以及无法有效使用批处理操作,而对于非结构化稀疏性,相应的低级操作不可能达到与当前硬件上密集操作相同的效率,内存访问比计算要昂贵得多(Gale et al.,2020)。
平行度:
缩放深度(D)与缩放宽度(W)当缩放模型大小时,可以使用不同的策略。尽管这些不同的策略可能在参数计数甚至质量方面具有相似的效果,但它们可能在FLOPs率和吞吐量方面对成本产生不同的影响。放大模型最常见的旋钮是改变模型的深度(层数)和宽度(隐藏尺寸)(Tay等人,2021b)。为了研究这种影响,我们使用视觉Transformer进行了一组受控实验(Dosovitskiy et al.,2020),我们通过增加头部数量(同时保持头部的隐藏尺寸固定)以及FFN的数量来缩放宽度,我们还通过仅增加编码器块的数量来缩放深度。请注意,当更改模型的深度或宽度时(具体配置见附录A中的表2),所有其他超参数将根据参考文献给出的默认值保持不变。图4显示了这些模型在不同成本指标方面的准确性。
总的来说,我们可以看到,考虑到FLOP或数字参数作为成本指标,增加宽度有利于预算较小的区域,而增加深度可以在我们扩展到预算较高的区域时提供更好的质量和更低的成本。然而,当将速度(msec/img)作为成本指标时,情况并不一定如此。例如,就FLOPs或参数数量而言,将D48(48层的ViT)与W3072(FFN尺寸为3072的ViT和QKV尺寸为768的ViT分为8个磁头)进行比较,它们的成本或多或少相似,这表明D48是一种明显的帕累托有效模型2。然而,当查看速度(毫秒/平方米)时,我们观察到W3072不一定比D48差,因为有更少的顺序操作和更多的可并行操作。
目标平台和实施
在某些情况下,硬件中的某个设计可能会导致成本指标之间的差异。例如,张量因子分解被用作加速矩阵乘法的常用技术之一,并用于提高神经网络模型的效率(Zhang et al.,2015b;Jaderberg et al.,2014)。权重分解,无论其对模型质量的影响如何,都可以将神经网络中的FLOPs次数减少75%(Zhang等人,2015a)。然而,已经表明,在GPU上使用权重分解可能会慢一些,因为CUDNN针对3×3(He等人,2017)卷积进行了优化,他们更喜欢单个大矩阵乘法,而不是几个小矩阵乘法。FNet(Lee Thorp et al.,2021)还展示了某些体系结构在不同硬件(例如GPU和TPU)中的速度是如何显著不同的。当使用特定的硬件和编译器时,一些小的设计选择可能会显著影响模型的成本。例如,翟等人(2021)表明,对于ViT,使用全局平均池而不是CLS作为输入的表示可以显著降低TPU-V3上的内存成本。这是因为当前的TPU硬件将输入的长度尺寸填充到128的倍数,这可能会导致高达50%的内存开销。(Vaswani等人,2021)中给出了实现细节如何影响效率的另一个示例,其中作者讨论了为局部注意精心设计的局部邻域收集功能的实现如何减少内存使用,同时避免不必要的额外计算
3讨论
在ML社区中,成本指标最常用的用途是:(1)使用成本指标在效率方面比较不同的模型,(2)在质量方面评估不同的模型,同时确定各个模型的成本,以便进行公平的比较,以及(3)在架构搜索等方面选择具有适当权衡的模型。虽然(1)和(2)只是同一枚硬币的两面,但第一种情况下的重点是寻找质量更好的模型,而第二种情况下的重点是比较质量,同时保持一定的效率指标不变。
3.1关于不完全比较得出的部分结论
正如我们在第2节中所显示的,通过报告成本指标子集的更好分数,声称模型更有效,可能会导致部分、不完整和可能有偏见的结论。
图5a比较了几种模型的FLOPs、参数和运行时间与它们在图像分类任务中的精度。如图1所示,不同模型体系结构的相对位置不一致,因为性能指标不同。例如,一方面,效率网(Tan和Le,2019)处于精度参数和精度FLOPs权衡的帕累托前沿。另一方面,精度吞吐量曲线主要由SwinTransformers控制(Liu等人,2021)。因此,这里没有一个模型明显更有效,根据采用的效率指标,结论可能会有很大差异。
请注意,在比较单个模型系列的变型时,大多数成本指标都是相关的。因此,考虑其中一个成本指标3就足够了。然而,在具有完全不同体系结构的模型之间使用单个成本指标进行比较更加复杂。图5b显示了成本指标之间的相关性。
例如,我们可以看到,对于数量相似的FLOPs,EfficientNet的参数比其他模型族(如RegNet和SwinTransformer)少。相反,对于类似数量的FLOPs,EfficientNet的吞吐量比RegNet和SwinTransformer慢(即,更高的毫秒/示例)。考虑到我们正在比较基于Transformer(Dosovitskiy et al.,2020;Liu et al.,2021)和基于卷积的架构(Tan和Le,2019;Radosavovic et al.,2020),这些差异并不令人惊讶。此外,在优化特定成本指标时,可以通过架构搜索找到其中一些模型(例如,针对FLOPs优化了效率网)。
图5中的另一个观察结果是,基于Transformer的模型的一些变体具有相同的参数计数,但GFLOP、吞吐量和精度显著不同。这是由于模型输入分辨率的变化(例如,从224×224到384×384),导致Transformer编码器的输入token数量不同。这再次表明,设置中的更改可能会对某些成本指标产生重大影响,而对其他指标几乎没有影响。
3.2从效率角度进行公平比较
效率指标和成本指标通常用于比较两个或多个模型或方法(例如,拟议模型和基线)。通过固定一个或多个成本指标,人们通常会并排列出模型,以便进行公平的比较。这里有两种主要策略,即(1)参数匹配比较,其中所有模型的配置都被选择为具有相似数量的可训练参数;和/或(2)FLOPs/计算匹配比较,其中所有模型具有相似的计算预算,例如,选择具有相似FLOPs的配置。虽然对于哪种策略更好没有直接的答案,但我们重点介绍了两个案例研究,并讨论了影响和一般性建议。
3.2.1参数匹配比较问题
我们深入研究了参数匹配比较的一些潜在问题。其中许多问题的要点是,并非每个参数都是平等的,这导致了许多复杂的问题,可能会使模型之间的公平比较变得复杂。这里我们介绍了参数匹配比较可能出错的情况。
无token 模型
无token模型(Xue et al.,2021;Tay et al.,2021c;Jaegle et al.,2021)通过在字符或字节级别建模来消除大型子词词汇表。因此,当转换到无token模型时,大量源自嵌入矩阵的参数会被丢弃。因此,如何公平地将这类模型与其子词对应物进行比较仍然是一个悬而未决的问题。ByT5(Xue等人,2021)建议扩大Transformer组的规模,以补偿嵌入层中丢失的参数。虽然这一论点是本着“公平”的精神提出的(例如,在参数匹配设置下比较两种方法),但放大会导致模型速度大幅下降。这主要是因为嵌入矩阵中的参数通常不会引起太多计算,而Transformer堆栈其他部分中增加的参数(更多深度/宽度)会导致相对可观的计算成本。这里所指的基本或小规模指的是一种计算成本(在速度、吞吐量和FLOPs率方面)明显高于其他对等模型的模型,因此,仅命名一项就可能会对实践者产生很大的误导。为了公平起见,理想情况下,作者必须提供参数匹配和计算匹配的结果。
编码器-解码器vs仅解码器Transformer
对于预训练的语言模型,主干架构(编码器-解码器vs解码器)的选择对于不同成本指标下模型的效率起着重要作用。在比较这些模型时,我们需要知道,具有L编码器和L解码器层的编码器-解码器模型的参数量与具有2L层的仅解码器模型的参数量大致相似,而其计算量只有一半,速度快了两倍(Raffel et al.,2019)。这是由于编码器-解码器体系结构中存在一种形式的模型稀疏性。因此,这种设置中的参数匹配比较可能对编码器-解码器模型不公平,尤其是当速度比内存消耗更令人担忧时,例如,在放大时。
稀疏模型与专家混合
稀疏模型(Lample et al.,2019;Fedus et al.,2021)的一个定义特征是,它们保持计算匹配,同时能够缩放到大量参数。因此,参数匹配比较对于稀疏模型没有意义,并且参数匹配稀疏模型可以被视为不必要地低估稀疏模型优势的不公平方法。图1中也显示了这一点,其中将开关Transformer与具有相同数量参数的普通Transformer进行比较总是有利于普通Transformer。请注意,文献中的许多工作使用计算匹配比较来比较稀疏模型(Narang et al.,2021;Fedus et al.,2021;Lample et al.,2019)。
视觉Transformer和序列长度
具有灵活序列长度的模型,如可变patch大小的VIT,具有稀疏模型的相反特性:可以实例化计算成本显著不同的架构(例如,FLOPs和速度),同时保持参数计数相似。因此,这类模型也不应基于参数计数进行比较。表1显示了使用不同补丁大小的ViT的参数数量、FLOPs和推断速度。我们可以看到参数大小与FLOPs和速度之间的反向关联。patch尺寸越大的模型,由于patch嵌入模块越大,其FLOPs次数越少,速度越快,同时具有更多的参数。4.
3.2.2计算匹配比较的问题
我们之前已经讨论了参数匹配比较如何可能不公平。本节讨论计算匹配比较可能引起关注的情况。考虑这样一种情况,即所提出的方法通过一种根本不影响模型参数的架构设计(例如,下采样序列)来实现计算节省。这里一个看似公平的比较是,采用一个标准模型,删除层或隐藏维度,直到两个模型的计算结果匹配为止。然而,这种比较存在基线模型的风险,该模型在参数计数方面的模型容量严重不足,因此性能大大低于所提出的方法。这在感知IO(Jaegle et al.,2021)中很明显,在计算匹配比较设置中,基线BET缩小到仅2000万个参数(相比之下,拟议方法中为425M)。此外,基线BERT在深度(6层vs 40层)方面也存在缺陷,如(Tay et al.,2021b)所示,这是不利的。请注意,FLOP匹配的比较不考虑深度,如果作者考虑速度匹配,那么这里的基线将大大快于建议的方法。总的来说,我们确实注意到,进行公平的计算匹配比较显然是一个非平凡且具有挑战性的问题。然而,我们的建议是,当没有简单的方法进行公平比较时,我们鼓励作者尽最大努力找到最佳的“匹配”设置,并尽可能显示多个备选方案。
3.3架构(ARCHITECTURE)搜索的成本指标
除了用于比较模型外,许多架构(architecture)搜索研究还将成本指标作为资源约束添加到损失函数中(He等人,2021b),并考虑效率。为此,这些研究主要使用参数大小(Pham et al.,2018)、FLOPs(Hsu et al.,2018)、内存访问成本(MAC)(Ma et al.,2018)或实际延迟(Tan et al.,2019;Wu et al.,2019)。鉴于我们之前已经展示了成本指标如何相互不一致或导致公正的结论,我们建议从业者在为架构(architecture)搜索算法选择成本指标时格外小心,尤其是考虑到其计算成本和对所选成本指标的敏感性。在这里,假设成本指标总是可互换的,就有可能进行大规模搜索,以找到不切实际的模型。
4建议和结论
最近的许多工作都集中在基于成本指标(如参数计数或FLOPs)比较不同的模型体系结构。我们在本文中已经证明,单独使用任何成本指标都可能会产生误导,参数计数是最有问题的一个。通常,参数计数用于暗示“模型容量”;然而,当以任何非平凡的方式改变模型架构时,这是错误的。正确估计和比较模型体系结构中的容量是一个开放的研究问题。
由于每个指标代表着不同的东西,并且有其各自的优缺点,我们建议始终使用所有可用的成本指标来报告和绘制曲线,不要仅使用一个指标来突出显示结果。此外,考虑到提供所有成本指标的整体报告(例如,所有可能硬件上的运行时间)基本上是不切实际的,因此将效率要求缩小到评估模型的确切设置,并避免在比较中得出过于笼统的结论,已经可以为社区提供更清晰的画面。
实验设置:缩放深度与缩放宽度
通过增加模型的深度和宽度,对缩放视觉Transformer的实验进行详细配置和评分。
B其他成本指标
根据用例的不同,还有其他成本指标可能在确定模型效率方面发挥关键作用:
样本效率,可表示为训练数据大小,例如模型达到合理性能所需的数据点数量(或语言模型的tokenKaplan et al.(2020))。样本有效性取决于许多因素,如模型的归纳偏差或训练课程。
在训练或推断过程中,模型的碳足迹是环境影响的代表。直接量化该成本并不简单,但(Strubell等人,2019年)提出了ML模型的近似环境成本,即足迹=(eetrain+查询×Eeeinference)×CO2数据中心/千瓦时,其中,ee表示电能(Patterson等人,2021)。
货币,即训练或服务模型的费用,以数字形式报告(Sharir等人,2020年)。例如,训练数据可以计算为总训练时间×芯片总数×云解决方案提供的价格5。这种成本指标在商业文档中比在科学文章中更常用。
Dollar等人(2021)提出的模型激活的大小作为复杂性度量。模型激活是指来自模型构建块的输出张量中的元素数量,例如,ResNet中卷积层的输出大小。Dollar等人(2021)认为,激活次数是模型运行时的可靠预测指标,并表明与FLOPs相比,它与内存带宽有限硬件上的运行时有更强烈的相关性。
内存消耗是效率的主要维度之一,在各种研究工作中,内存消耗被用作成本指标(Bondarenko等人,2021;Dosovitskiy等人,2020年;Kondratyuk等人,2021)。在考虑模型、优化器和管道的内存消耗的训练期间,通常以“峰值内存使用”的形式报告内存占用。另一种常见的形式是比较适合特定任务的特定设备的最大批量大小。与模型激活大小不同,内存占用取决于硬件和实现。它直接影响到模型是否适合设备,这在某些情况下是一个硬约束。
https://openreview.net/forum?id=iulEMLYh1uR
我们要感谢审稿人花时间给我们反馈。
我们想强调的是,本文中提出的带回家的信息对于确保机器学习研究效率的健康报告至关重要,对于整个行业来说也是如此,因为机器学习越来越产品化。在阅读了结构化的、有示例支持的文章后,其中许多内容可能看起来微不足道,然而,我们几乎每天都在新发布的论文中观察到我们在本文中讨论的问题,这些论文在分析效率方面的做法很差。我们坚信,这样的研究将有助于每个人更好地理解比较,无论是提出新想法的人(研究人员)还是选择将想法付诸实施的人(实践者)。它还可以作为教育任何未来犯上述错误的作者的参考,因为目前还不存在针对ML受众的此类参考。
我们赞赏review GqNw就此发表的声明:
“批评者可能会指责这篇论文没有包含足够的原始研究,无法在像这样的地方发表。我对这一批评的回应是,如果研究人员花更多时间反思研究现状,并确定如何使我们的实践和学术更为稳健和严谨,ML研究将处于一个更好的位置。这就是本文所做的。”
此外,我们强调,这篇论文是与不同研究人员进行多次讨论的结果,是长期以来在视觉和语言方面试验和研究新观点、阅读文献和比较许多作品以了解当前问题时收集的大量观察结果。花在这篇论文上的时间超出了作者的列表,我们很高兴我们能够组织所有这些信息,带来例子,运行实验来支持它们,并将它们呈现给社区。我们的主要目标是在未来的研究中看到这项研究的影响。
我们根据评论者的评论修改了论文,添加了更多具体的例子和实验来支持论文中的各种论点,最后,我们对个别评论者的评论和问题做出回应。
网友评论