<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=145304570664993&amp;ev=PageView&amp;noscript=1">

91视频APP

Better EfficientNet performance in practice

Jun 28, 2021 \ Computer Vision, Research

贰蹿蹿颈肠颈别苍迟狈别迟の効率を高めた方法

笔者

Dominic Masters

91视频APP Researchは、コンピュータビジョンモデルEfficientNetIPUIntelligence Processing Unit)上でのパフォーマンスを最适化する3つの手法を分析した新しい论文を発表しました。この3つすべての方法を组み合わせることで、学习のスループットが7倍、推论のスループットが3.6倍以上に向上します。

実用的なアプリケーションのためにEfficientNetを最适化する

91视频APP Researchの「Making EfficientNet More Efficient:Exploring Batch-Independent Normalization, Group Convolutions and Reduced Resolution TrainingEfficientNetの効率を高める:バッチに依存しない正规化、グループ畳み込み、および低解像度学习の研究)」では、(理论的に)効率的になるように最适化された最先端のモデルEfficientNetを用いて、IPU上で実用的な効率を高める3つの方法を分析しています。

例えば、IPUで非常に优れたパフォーマンスを発挥するグループ畳み込みを追加することで、理论上の计算コストにはほとんど差がなく、実用的な学习スループットを最大で3倍向上させることができました。

调査した3つの手法を组み合わせることで、IPU上での学习のスループットを最大7倍、推论のスループットを3.6倍に向上させ、同等の検証精度を得ました。

モデル学习の理论的なコストは通常、FLOPで测定されますが、これは简単に计算でき、使用しているハードウェアとソフトウェアのスタックに依存しません。 このような特徴があるため、魅力的で复雑な测定単位として利用され、より効率的な深层学习モデルを探す上で重要な原动力となっています。

しかし実际には、この理论的な学习コストの测定単位と実际のコストとの间には大きな隔たりがありました。なぜならば、単纯なFLOPの数では、计算の构造やデータ移动など、他の多くの重要な要素が考虑されないからです。

グループ畳み込みの导入

最初に、depthwise畳み込み(言い换えれば、グループサイズ1のグループ畳み込み)に関するパフォーマンスを向上させる手法を研究します。EfficientNetは、すべての空间畳み込み演算にdepthwise畳み込みをネイティブに使用します。この畳み込みは、FLOPとパラメータの効率が良いことで知られており、多くの最先端の畳み込みニューラルネットワーク(CNN)に活用されています。しかし実用的な加速性において、いくつか课题があります。

例えば、それぞれの空间カーネルを分离して考えると、一般的にベクトル乗累算ハードウェアによって加速される、结果として生じるドット积演算の长さが制限されます。これは、このハードウェアが常に完全には利用できず、结果として「无駄な」サイクルが発生することを意味します。

また、実行するFLOPの数に対して大量のデータ転送を必要とするdepthwise畳み込みは、演算强度がとても低いので、メモリアクセス速度が重要な要素になります。これによって代替のハードウェアではスループットが制限されることがありますが、非常に高い帯域幅のメモリアクセスを実现するIPUIn-Processor Memoryアーキテクチャでは、これらのような演算强度の低い演算のパフォーマンスが大幅に向上します。

そして最后に、depthwise畳み込みは、MBConvブロックを形成するために2つの全结合pointwise「投影」畳み込みの间に入れることで、最も効果的になることがわかっています。このようなpointwise畳み込みは、空间depthwise畳み込みを中心にして、アクティベーションの次元性を6の「膨张係数」で増减させます。この膨张によってタスクのパフォーマンスは向上しますが、もう一方でとても大きなアクティベーションテンソルが作られるため、メモリ要件が大きくなり、最终的には使用可能な最大バッチサイズが制限されることがあります。

このような3つの问题を解决するために、私たちはMBConvブロックにシンプルで重要な変更を加えました。つまり、畳み込みグループのサイズを1から16に増やすことで、IPUのハードウェア利用率を向上させたのです。そして、FLOPとパラメータの増加を相杀し、メモリの问题に対処するために、膨张比を4に下げます。これによってメモリ効率が良く、计算的にコンパクトなバージョンのEfficientNetが生まれました。私たちはこれをG16-EfficientNetと呼んでいます。

これらの変更は、主にスループットの向上を动机としたものですが、あらゆるモデルサイズにおいて、バニラグループサイズ1G1-EfficientNet)のベースラインよりも高いImageNet検証精度を达成できることもわかりました。この変更は実用的効率の大幅な向上につながっています。

EfficientNet Figure 1

骋1-贰蹿蹿颈肠颈别苍迟狈别迟(ベースライン)と骋16バリアント(当社)の理论的効率(左)と実用的効率(右)の比较

プロキシ正规化アクティベーション

畳み込み演算や行列乗算演算の出力を正规化することは、最新のCNNには欠かせない要素となっており、この目的のために使用される最も一般的な形式の手法がバッチ正规化です。しかし、Batch Normがもたらすバッチサイズの制约はよく知られた问题であり、バッチに依存しない代替手段のイノベーションが相次いで行われてきました。そのような手法の多くはResNetモデルではうまく机能しますが、EfficientNetではどれもBatch Normと同じパフォーマンスを得られないことがわかっていました。

私たちは、このようなBatch Normに代わるものがない问题に対処するため、最近ので绍介された、バッチに依存しない新しい正规化手法のProxy Normを活用しています。この手法は、既にうまく机能しているグループ(および层)正规化の手法をベースにしています。

Group NormLayer Normには、アクティベーションがチャンネル単位で非正规化されてしまうという问题があります。非正规化はすべての层で强められていくので、深くなるほどこの问题は悪化していきます。この问题はGroup Normのグループのサイズを単纯に小さくすることで回避できますが、グループのサイズを小さくすると表现性が変わってしまい、パフォーマンスには不利に働きます。

Proxy Normは、Group NormLayer Normに従ったアフィン変换とアクティベーション関数という非正规化の主な2つの発生源を打ち消す一方、表现性を维持するという利点があります。具体的には、Group NormLayer Normの出力をガウス「プロキシ」変数に同化し、そのプロキシ変数に同じアフィン変换と同じアクティベーション関数を适用することで非正规化が打ち消されます。そして、非正规化されたプロキシ変数の统计値を用いて、実际のアクティベーションで予想される分布のシフトを补正します。

Proxy Normを使うと、グループサイズを最大にして(つまりLayer Normを使って)、チャンネル単位の非正规化の问题を発生させることなく表现性を维持できます。

EfficientNet Figure 2

 

赤色で示したのが、プロキシ正规化アクティベーションの演算を追加した畳み込みブロック

この新しい正规化技术については、関连するで详しく绍介されています。

重要なのは、このアプローチ全体においてBatch Normの暗黙の正则化の特性を一切模倣していないことです。このため追加の正则化が必要となりますが、今回の研究ではmixupcutmixの组み合わせを使用しています。Layer Norm + Proxy NormLN+PN)のパフォーマンスを、标準的な前処理とAutoAugmentAA)を用いた2つのBatch NormBN)のベースラインと比较したところ、LN+PNはモデルサイズの全范囲において、标準的な前処理を用いたBNのパフォーマンスと同等か、またはそれ以上であることがわかりました。さらにLN+PNは、AAが拡大パラメータを「学习する」という高価なプロセスを必要とするにもかかわらず、AAを用いたBNとほとんど変わらないパフォーマンスになります。

EfficientNet Figure 3

様々なサイズの贰蹿蹿颈肠颈别苍迟狈别迟に対する异なる正规化手法の比较

低解像度学习

は、最初に学习したときよりも大きな画像を使って最后の数层を学习后に微调整することで、大幅な精度向上を达成できることを示しました。この微调整の段阶はとても安価であるため、これによって実用的な学习効率の向上が达成できることは明らかでした。そしてこの结果、さらに多くの兴味深い研究课题が提起されました。 効率を最大化するためには、どのように学习の解像度を选択すべきなのでしょうか?画像が大きいとテストに时间がかかりますが、これが推论の効率にどのような影响するのでしょうか?

このような疑问を调べるために、「ネイティブ」解像度(本来のEfficientNetで定义されているもの)と约半分の画素数の、2つの异なる解像度で学习を比较しました。その后、微调整を行い、広范囲の画像サイズでテストしました。このような作业によって、学习解像度が効率に与える直接的な影响を调査し、学习と推论において速度と精度の最适な妥协点を示すパレート最适な组み合わせを特定できました。

学习効率を比较する际には、2つのテストシナリオを検讨しました。つまり、ネイティブの解像度でテストする场合と、あらゆる解像度で検証精度を最大化するために「最适」な解像度を选択する场合です。

その结果、ネイティブの解像度でテストすると、半分のサイズの画像を使って学习することで、理论的にも実用的にもかなりの効率化が図れることがわかります。また惊くべきことに、特定のモデルサイズでは、半分の解像度で学习し、ネイティブの解像度で微调整する方が、すべてネイティブの解像度で学习、微调整、テストを行うよりも最终的な精度が高くなることもわかりました。この结论は、ImageNetの学习においては、常に学习时よりも高い解像度でテストするべきであることを示唆しています。このことが他の分野にも当てはまるかどうかについては、今后解明したいと思います。

次に、「最适」な画像解像度でテストすると、ネイティブの解像度で学习することで最终的な精度が大幅に向上し、パレートフロントでの间隔が狭くなることがわかります。

しかし、これを実现するためには、「ネイティブ」な学习方式に「最适」なテスト解像度が、半分の学习解像度のケースに対応するものよりもはるかに大きくなってしまうことに注意する必要があります。つまり、推论时により高価になるということです。

ネイティブの画像解像度で微調整とテストを行った場合の理論的および実用的な学習効率_EfficientNet

これらの结果から、调査を行った(i)グループ畳み込み[G16(当社)対G1]、(ii)プロキシ正规化アクティベーション[LN+PN(当社)対GN]、および(iii)半分の解像度による学习[半分(当社)対ネイティブ]の3つの改良によって、学习効率が向上したことが良くわかります。なお、ベースラインの结果は微调整しておらず、ネイティブの画像解像度を使用しています。

推论単体の効率を比较すると、半分の解像度で学习することで、全范囲の精度でパレート最适な効率が得られることがわかります。推论においてはFLOPの直接的な优位性が全くないことを踏まえると、これは惊くべき结果です。さらに、半分の解像度の推论効率のパレートフロントに沿ったポイントは、学习のスループットに最适なまま変わりません。

EfficientNet Figure 5

理论的および実用的な推论効率。全解像度でテスト。线はパレートフロントを示す

すべての効率の指标において、Proxy Normを用いたモデルはGroup Normを用いたモデルと同等か、またはわずかに良い结果となりました。これは、スループットのコストは最大で10%と小さいにもかかわらず、精度が向上したことが原因です。しかし重要なことは、Proxy Normを用いたモデルでは、パレートフロント全体で使用するパラメータの数が少なく、モデルサイズに対する効率の観点ではProxy Normの利点が际立っていることです。

EfficientNetの効率を高める方法

今回の研究では、学习と推论の全体的な効率を向上させるために、EfficientNetモデルに次のような変更を加えました。

  • MBConvブロックにグループ畳み込みを追加し、膨张比を下げることで、IPUハードウェアによる空间畳み込みの利用を改善し、メモリ消费を削减しました。
  • 解像度が半分の画像を使って学习することで、学习时间を短缩し、最终的な精度を大幅に向上させました。
  • 新しい正规化手法であるProxy Normを活用することで、バッチ情报に依存することなくBatch Normと同等のパフォーマンスを実现しました。私たちの知る限り、これはEfficientNetで実现した初めての手法です。

これらすべての手法を组み合わせることで、IPUにおいて実用的な学习効率を最大で7倍、実用的な推论効率を3.6倍に向上させることができました。これらの结果から、EfficientNetは、IPUのようなグループ畳み込みの処理に适したハードウェアを使用した场合に、学习と推论の効率向上を実现できることがわかりました。今后、理论を超えた実用的な実社会への応用が期待されます。

その他の投稿