模型集成比您想象的要快

发布时间:2021-11-20编辑:RainNight阅读(176)

    在为新的机器学习应用程序构建深度模型时,研究人员通常从现有的网络架构开始,例如ResNets或EfficientNets。如果初始模型的准确度不够高,更大的模型可能是一个诱人的选择,但实际上可能不是手头任务的最佳解决方案。相反,可以通过设计一个针对任务优化的新模型来潜在地实现更好的性能。然而,这种努力可能具有挑战性,并且通常需要大量资源。

    在“委员会的智慧:更快、更准确模型的被忽视的方法”中,我们讨论了模型集成和称为模型级联的子集,这两种方法都是通过收集现有模型并组合其输出来构建新模型的简单方法。我们证明,即使是少量易于构建的模型的集成也可以匹配或超过最先进模型的准确性,同时显着提高效率。

    什么是模型集成和级联?

    集成和级联是相关的方法,它们利用多个模型的优势来实现更好的解决方案。集成并行执行多个模型,然后组合它们的输出以进行最终预测。级联是集成的子集,但顺序执行收集的模型,并在预测具有足够高的置信度后合并解决方案。对于简单的输入,级联使用较少的计算,但对于更复杂的输入,最终可能会调用更多的模型,从而导致更高的计算成本。

    file

    与单个模型相比,如果收集的模型的预测存在多样性,则集成可以提供更高的准确性。例如,ImageNet中的大多数图像很容易被当代图像识别模型分类,但有许多图像的预测因模型而异,并且将从集成中受益最大。

    虽然乐团是众所周知的,他们往往不被认为是深层模型架构的核心组成部分,当研究人员正在开发更高效的车型很少探讨(有少数例外[ 1,2,3 ])。因此,我们对集成效率进行了全面分析,并表明简单的集成或现成的预训练模型级联可以提高最先进模型的效率和准确性。

    为了鼓励采用模型集成,我们展示了以下有益特性:

    1.构建简单:集成不需要复杂的技术(例如,早期退出策略学习)。 2.易于维护:集成经过独立训练,易于维护和部署。 3.经济实惠的训练:在整体模型的训练总成本往往低于类似精确的单一模式。 4.设备上加速:计算成本 ( FLOPS )的降低成功转化为真实硬件上的加速。

    效率和训练速度

    集成可以提高准确性并不奇怪,但是在一个集成中使用多个模型可能会在运行时引入额外的计算成本。因此,我们研究了一个集成是否可以比具有相同计算成本的单个模型更准确。我们分析了一系列模型,EfficientNet-B0 到 EfficientNet-B7,它们在应用于 ImageNet 输入时具有不同的准确度和 FLOPS。集成预测是通过平均每个单独模型的预测来计算的。

    我们发现集成在大型计算机制(> 5B FLOPS)中更具成本效益。例如,两个 EfficientNet-B5 模型的集成与单个 EfficientNet-B7 模型的准确性相匹配,但使用的 FLOPS 减少了约 50%。这表明,在这种情况下,不应使用大型模型,而应使用多个相当小的模型的集合,这将减少计算需求,同时保持准确性。此外,我们发现集成的训练成本可以低得多(例如,两个 B5 模型:总共 96 个 TPU 天;一个 B7 模型:160 个 TPU 天)。在实践中,模型集成训练可以使用多个加速器并行化,从而进一步减少。这种模式也适用于 ResNet 和 MobileNet 系列。

    file

    级联的威力和简单性

    虽然我们已经证明了模型集成的实用性,但对于简单的输入来说,应用集成通常是浪费的,因为集成的子集将给出正确的答案。在这些情况下,级联通过允许提前退出来节省计算,可能会在使用所有模型之前停止并输出答案。挑战在于确定何时退出级联。

    为了突出级联的实际好处,我们特意选择了一个简单的启发式方法来衡量预测的置信度——我们将模型的置信度作为分配给每个类别的概率的最大值。例如,如果图像是猫、狗或马的预测概率分别为 20%、80% 和 20%,那么模型预测(狗)的置信度将为 0.8。我们使用置信度得分的阈值来确定何时退出级联。

    为了测试这种方法,我们为EfficientNet、ResNet和MobileNetV2系列构建模型级联以匹配计算成本或准确性(将级联限制为最多四个模型)。通过级联设计,一些输入比其他输入产生更多的 FLOPS,因为更具挑战性的输入在级联中通过比简单输入更多的模型。所以我们报告在所有测试图像上计算的平均 FLOPS。我们表明,级联在所有计算方式中都优于单个模型(当 FLOPS 范围从 0.15B 到 37B 时),并且可以提高所有测试模型的准确性或降低 FLOPS(有时两者兼而有之)。

    file file

    在某些情况下,限制因素不是平均计算成本,而是最坏情况成本。通过在级联构建过程中添加一个简单的约束,可以保证级联计算成本的上限。有关更多详细信息,请参阅论文。

    除了卷积神经网络,我们还考虑了基于Transformer的架构ViT。我们构建了 ViT-Base 和 ViT-Large 模型的级联,以匹配单个最先进的 ViT-Large 模型的平均计算或准确性,并表明级联的好处也可以推广到基于 Transformer 的架构。

        单一型号    级联 - 类似的吞吐量     级联 - 相似的精度
    

    前 1 (%) 吞吐量 前 1 (%) 吞吐量 △Top-1 前 1 (%) 吞吐量 加速 ViT-L-224 82.0 192 83.1 221 1.1 82.3 409 2.1 倍 ViT-L-384 85.0 54 86.0 69 1.0 85.2 125 2.3 倍

    早期关于级联的工作也显示了最先进模型的效率改进,但在这里我们证明了使用少量模型的简单方法就足够了。

    推理延迟

    在上面的分析中,我们平均 FLOPS 来衡量计算成本。验证通过级联获得的 FLOPS 减少实际上转化为硬件加速也很重要。我们通过比较性能相似的单一模型与级联的设备延迟和加速来检查这一点。我们发现,与具有可比精度的单个模型相比,来自 EfficientNet 系列的级联模型在TPUv3上的平均在线延迟降低了5.5 倍。随着模型变得更大,我们发现类似级联的加速速度也越大。

    file

    从大型模型池构建级联

    上面,我们限制了模型类型,只考虑最多四个模型的集成/级联。虽然这突出了使用集成的简单性,但它也允许我们在很短的时间内检查模型的所有组合,因此我们只需几个 CPU 小时就可以在一组保留的预测中找到最佳模型集合。

    当存在大量模型时,我们希望级联会更加高效和准确,但蛮力搜索是不可行的。然而,已经提出了有效的级联搜索方法。例如,Streeter (2018)的算法在应用于大量模型时,产生的级联与最先进的基于神经架构搜索的 ImageNet 模型的准确性相匹配,FLOPS 显着减少,适用于一系列模型尺寸。

    结论

    正如我们所见,基于集成/级联的模型比来自多个标准架构系列的最先进模型获得了更高的效率和准确性。在我们的论文中,我们展示了其他模型和任务的更多结果。对于从业者来说,这概述了一个简单的过程,可以使用现成的模型提高准确性,同时保持效率。

Collect from 雨夜的博客 雨夜的博客