大規模ニューラル ネットワークのモデル圧縮および加速方法

大規模ニューラル ネットワークのモデル圧縮および加速方法

この記事は次の場所に転載されています:大規模ニューラル ネットワークのモデル圧縮および加速方法

その他の優れた記事:
AI レビュー コラム|
ディープ ニューラル ネットワークの加速と圧縮に関するレビュー論文: 現在のディープ ニューラル ネットワーク モデルの圧縮と加速方法の概要
AAAI 2020 に選出: ノースイースト/ウィリアム メアリー/清華大学が協力して最速のユニバーサル モバイル ニューラルを提案ネットワーク高速化フレームワーク!
超完全まとめ: ニューラル ネットワーク加速の定量化モデル |コードによる
ニューラル ネットワークの圧縮と加速方法

前文

ニューラル ネットワークの開発過程では、モデルの容量の増加がモデルのパフォーマンスにプラスの効果をもたらすことがよくありますが、近年の研究では、パフォーマンスの向上を追求するために、ニューラル ネットワーク モデルの規模が実際に大きくなっています。徐々に増加傾向を示しています。モデルの容量を増やす方法としては、主にモデルの深度を増やすことと、モデルの幅を広げることが挙げられますが、ResNet-156LやBERTなどの深層ネットワークは、画像、音声、音声などの分野でその有効性が十分に検証されています。 Transformer Big などの幅広いモデルを使用すると、パフォーマンスが大幅に向上します。

しかし、モデルの増加に伴い、モデルのパラメータや計算量も増加し、現在の大規模ニューラルネットワークモデルは一般に数千万、場合によっては数億のパラメータを持ち、コンピューティングリソースへの展開が困難になります。リソースが限られている小型デバイスでは、優れたパフォーマンスを備えたこれらのモデルは、日常のコミュニケーションや個人のプライバシーなどの一部のシナリオでは実際の価値を発揮できません。

科学研究と生産実践の組み合わせに対する需要が高まるにつれ、モデルの圧縮と高速化が現在注目されている研究の方向性の 1 つになっています。この記事は、いくつかの一般的なモデル圧縮およびモデル高速化方法を簡単に紹介することを目的としています(いくつかの関連作業は各セクションの最後に整理されています。興味のあるパートナーはぜひチェックしてください)。これらの方法により、モデル内に存在する冗長性が削減され、複雑なモデルがより軽量なモデルに変換されます。この論文に含まれる手法の主なカテゴリは、知識の抽出効率的なネットワーク構造の設計条件付き計算モデルの枝刈りパラメータの共有、および量子化です。

知識の蒸留

モデルのパラメーターと計算の数を減らす最も直接的な方法は、より小さなモデルをトレーニングすることです。ただし、直接トレーニングされた小さなモデルのパフォーマンスは期待を満たさないことがよくあります。現時点では、小さなモデルのパフォーマンスを向上させるために何らかの補助手段が必要です。知識の蒸留はオプションのソリューションです。

知識の蒸留を実現するには、まず「教師モデル」と呼ばれる大きなモデルが必要であり、ターゲットとなるモデルは「学生モデル」と呼ばれます。知識の蒸留では、ネットワークの予測結果(出力層または中間層の隠れ状態)またはパラメータを知識のキャリアとして使用し、教師ネットワークの知識を生徒に伝達する転移学習のアイデアを使用します通信網。知識の蒸留の有効性は 2 つの仮定に基づく必要があります:
(1) 「知識」はモデル間で転送可能である;
(2)教師モデルに含まれる「知識」は、教師モデルに含まれる「知識」よりも生徒モデルによって捕捉されやすい。元のデータ

上記の仮定の最初の点については、事前トレーニングが良い例です。できるだけ多くのトレーニング データを使用することで、トレーニング モデルはより豊富な特徴を抽出でき、そのような事前トレーニング モデルはさまざまな下流タスクに適用でき、これらの下流タスクに大きなメリットをもたらします。
上記の仮定の 2 点目については、実ラベル データに含まれる知識を「ハード知識」、教師モデルによって学習される知識を「ソフト知識」と呼ぶことができます。私たちにとってニューラル ネットワークはブラック ボックス モデルですが、ニューラル ネットワークは未知の関数と考えることができ、入力と出力はトレーニング データとして知られています。

教師モデルのトレーニング プロセス中に、ソフトマックス分布とグランド トゥルース ラベル マッチングの間の関係を学習できます。たとえば、「cat」という単語を翻訳したい場合、実際のラベルでは「cat」が「cat」と翻訳されることしかわかりません。しかし、大規模なモデルによって学習される「ソフト知識」には、より豊富な情報が含まれる可能性があり、「cat」は「cat」に翻訳される確率が高く、「dog」に翻訳される確率は低いことがわかります。非常に低い確率で、「麺」と訳されます。教師モデルによる元データの「ハード知識」の学習を通じて、それが「ソフト知識」に変換されて生徒モデルに教えられます。これにより、タスクの学習の難易度が軽減され、生徒モデルのパフォーマンスが向上します。

知識蒸留は、簡便かつ効果的なモデル圧縮手法として近年盛んに研究されており、モデルサイズに関しては、教師モデルの方が学生モデルよりも大きいという制限がなくなりつつあります。知識蒸留方法の変化 他のエンティティ (自己蒸留や逆蒸留など) も徐々に派生し、知識蒸留の発展により多くの可能性をもたらします。

関連文献:

[1] ニューラル ネットワークでの知識の蒸留
https://arxiv.org/pdf/1503.02531.pdf

知識蒸留の古典である知識蒸留の概念が最初に提案されました。知識を「蒸留」と名付けた理由は、教師ネットワーク内の知識の「本質」の部分を「蒸留」という手法で抽出し、それを実験に利用するという熱力学的蒸留実験に似ています。学ぶための学生ネットワーク。

[2] FitNets: 薄いディープ ネットのヒント
https://arxiv.org/pdf/1412.6550.pdf

この論文の革新的な点は、知識蒸留における教師モデルが「広くて浅い」モデルであるのに対し、学生モデルは「薄くて深い」モデルであることです。このような学生モデルは使用するパラメータが少なく、計算でより優れたパフォーマンスを達成できます。先生のモデル。

[3] シーケンスレベルの知識の蒸留
https://arxiv.org/pdf/1606.07947.pdf

本論文で提案する系列レベルの知識蒸留法は、系列レベルで知識を学習する従来の単語レベルとは異なり、機械翻訳などのタスクに関する実験結果は単語レベルの知識蒸留法より優れています。

[4] ニューラル機械翻訳のためのアンサンブル蒸留
https://arxiv.org/pdf/1702.01802.pdf

この論文では、アンサンブル モデルを教師モデルとして使用して、抽出された知識の質を向上させ、より優れたパフォーマンスの学生モデルを取得します。

[5] 自然言語処理における自己知識の蒸留
https://arxiv.org/pdf/1908.01851.pdf

自己知識の蒸留(自己蒸留)を提案し、自己知識を提案することで知識の蒸留を行います。

[6] ニューラル機械翻訳のための選択的知識の蒸留
https://arxiv.org/pdf/2105.12967.pdf

知識の蒸留における「知識」は多ければ多いほど良いというわけではなく、一部の知識の存在が学生モデルの全体的なパフォーマンスに悪影響を及ぼす可能性さえあります。この論文では、知識の蒸留においてサンプルを選択するための、バッチ レベルとグローバル レベルの 2 つの戦略を提案します。

[7] Tinybert: 自然言語理解のための BERT の抽出
https://arxiv.org/pdf/1909.10351.pdf

この論文では、事前トレーニングにおける BERT モデルの圧縮と加速のための、Transformer モデル構造に基づく知識蒸留方法を提案します。最後の実験では、元の BERT モデルと同じ性能を達成するという前提の下で、モデル サイズを 1/7.5 に縮小でき、モデルの推論時間を 1/9.4 に短縮できることがわかりました。

[8] BERT の蒸留版である Distilbert: より小さく、より速く、より安く、より軽く
https://arxiv.org/pdf/1910.01108.pdf

この論文では、引き続き BERT モデルに基づいた実験を実施し、教師ありマスク言語モデル (MLM) 損失、蒸留 MLM 損失、ワード ベクトル コサイン損失という 3 つの損失関数を導入し、最終的にモデル パラメーターを元の 40% に圧縮し、改善しました。推理速度60%。

[9] MobileBERT: リソースが限られたデバイス向けのコンパクトなタスク非依存型 BERT
https://arxiv.org/pdf/2004.02984.pdf

BERTモデルに基づいて,タスクに依存しないモデル圧縮法を提案した。

効率的なニューラル アーキテクチャ設計

効率的なネットワーク構造の設計方法は、大きく「手動設計」と「構造探索」の 2 つに分類されます。ニューラル ネットワークを手動で設計するには、専門的な背景知識を持つ研究者が、タスクの特定の特性に従ってニューラル ネットワーク構造を再設計するか、既存のネットワークを変更する必要があります。たとえば、さまざまなタスクや分野で目覚ましい成果を上げている現在の Transformer モデルは、従来の RNN モデルと比較して、Transformer は自己注意メカニズムに注目しており、計算量とパラメータの複雑さが小さく、学習の恩恵を受けています。受信した単語と単語のアライメント関係は、RNN よりも優れた結果を達成しました。

手動でニューラル ネットワークを設計するのに比べて、ニューラル ネットワークの構造探索ははるかに「スマート」に見えます。その主なアイデアは「ニューラル ネットワークを使用してニューラル ネットワークを設計する」ことであり、通常は強化学習手法または進化的アルゴリズムを使用して複雑なネットワークを設計します構造検索では、合理的な検索戦略と検索アルゴリズムを策定することにより、特定のターゲットの下でニューラル ネットワークの最適な構造を自動的に見つけます。作業のほとんどは自動化された方法で行われますが、依然として人間が検索方法と評価戦略を策定する必要があります。また、構造検索では大規模な検索空間を事前に設計する必要があるため、この検索プロセスに必要な計算能力、時間コスト、およびハードウェア コストが比較的高くなります。

手動によるニューラルネットワークの設計には多大な人件費がかかり、構造探索には多大な時間とハードウェアコストがかかりますが、どちらの方法にも一長一短があり、どちらの方法がより有利であるかは、具体的なシナリオと組み合わせて分析する必要があります。

関連文献:

[10] 非自己回帰ニューラル機械翻訳
https://arxiv.org/pdf/1711.02281.pdf

非自己回帰ニューラル機械翻訳を理解するには、まず自己回帰とは何かを知る必要があります。自己回帰、つまり機械翻訳モデルにおけるデコーダーの機能は、デコーダーが現在の単語を生成するときに以前に生成された単語に依存する必要があることを意味するため、デコード プロセスは非並列にしか行うことができません。非自己回帰ではモデルの出力を並行して生成できるため、モデルの推論効率が大幅に向上します。

[11] 深いエンコーダー、浅いデコーダー: 機械翻訳における速度と品質のトレードオフの再評価
https://arxiv.org/pdf/2006.10369.pdf

現在のニューラル機械翻訳モデルは、エンコーダーとデコーダーのモデルの深さのバランスが取れていません。この論文では、異なる深さのエンコーダーとデコーダーを備えたニューラル機械翻訳モデルについて検討し、実験により、深いエンコーダーと浅いデコーダー モデルが速度と品質の間で良好なバランスを達成できることを示しています。

[12] 平均注意ネットワークによるニューラルトランスフォーマーの加速
https://arxiv.org/pdf/1805.00631.pdf

この論文では、平均注意ネットワークを Transformer モデルに適用します。論文では、Transformer モデルの計算プロセスにおいて、自己注意の重みを動的に計算する必要はなく、累積平均演算を通じて前の単語の情報を計算する必要があることが提案されており、次のように考えられます。前のすべてのワードは現在のワードに同じように寄与するため、この部分の計算効率が向上します。

[13] 高速トランスフォーマーのアテンションウェイトの共有
https://arxiv.org/pdf/1906.11024.pdf

この論文では、異なる層間でアテンションの重みを共有することでデコーダでのアテンションの計算を簡素化し、それによって Transformer モデルの推論効率を向上させます。

[14] 圧縮されたサブレイヤーを備えた効率的なトランスフォーマー デコーダー
https://arxiv.org/pdf/2101.00542.pdf

この論文では、Transformer の基本モジュールを圧縮することでアーキテクチャを簡素化し、デコーダの 3 つのサブレイヤを 1 つにマージして、より高度な並列処理を実現します。

[15] 構造化ドロップアウトによるオンデマンドでのトランスの深さの削減
https://arxiv.org/pdf/1909.11556.pdf

本稿では、Transformer のトレーニングプロセス中に大規模ネットワーク内のサブネットワークをサンプリングするために構造化ドロップアウトを導入し、トレーニングプロセス後にモデル枝刈り手法を通じて小規模ネットワークを取得する LayerDrop を提案します。

[16] GPU の効率的なソフトマックス近似
https://arxiv.org/pdf/1609.04309.pdf

本論文で提案する適応ソフトマックスはソフトマックス関数の演算効率を向上させることができる.ソフトマックスのパラメータ行列の次元は語彙のサイズであるため,この方法はワードベクトルの次元が大きいニューラルネットワークに非常に適している.

[17] Reformer: 効率的な変圧器
https://arxiv.org/pdf/2001.04451.pdf

この論文では、Transformer モデルの計算時間を軽減する 2 つの方法を提案します。まず、ドット積アテンションを局所性依存型ハッシュに置き換え、この部分の計算量を O(L2) から O(Llog L) に変更します (L はシーケンスの長さ)。2 番目に、モデルの計算効率をさらに向上させるために、標準残差の代わりに可逆残差が使用されます。

[18] 強化学習によるニューラルアーキテクチャ検索
https://arxiv.org/pdf/1611.01578.pdf

強化学習と深層学習を組み合わせたニューラル アーキテクチャ検索 (NAS) の先駆的な取り組みです。

[19] SqueezeBERT: コンピューター ビジョンは、効率的なニューラル ネットワークについて NLP に何を教えることができますか?
https://arxiv.org/pdf/2006.11316.pdf

この論文では、グループ化された畳み込み構造を使用して、自己注意メカニズムに基づいてニューラル ネットワークを設計する方法を検討します。SqueezeBERT は、完全接続層をグループ畳み込みに置き換え、このグループ畳み込み構造をセルフアテンション メカニズムと組み合わせて、ネットワークの計算効率を向上させます。

[20] AdaBERT: 微分可能なニューラル アーキテクチャ検索によるタスク適応型 BERT 圧縮
https://arxiv.org/abs/2001.04246

この論文では、BERT モデルは Differentiable Neural Architecture Search (DNAS) によって圧縮されており、さまざまなタスクに応じてさまざまな構造の小さなモデルを適応的に生成できます。

[21] プログレッシブ ニューラル アーキテクチャ検索
https://arxiv.org/pdf/1712.00559.pdf

本論文では、強化学習や進化的アルゴリズムに基づく既存の構造探索アルゴリズムよりも効果的であることが証明された、漸進的ニューラルネットワーク構造探索アルゴリズムを提案する。

条件付き計算

ニューラル ネットワーク モデルのパフォーマンスは学習サンプル数と密接に関係しており、大規模な学習データの場合、スケールが一致するモデルが存在しない場合、アンダーフィッティングなどの学習問題が発生しやすくなります。ただし、モデルのサイズが大きくなると、計算コストも増加します。

条件付き計算はサンプルごとに計算でき、ネットワークの一部のサブネットワークをアクティブ化します。つまり、ネットワークのどの部分がアクティブ化されるかは、入力されたトレーニング サンプルによって決定されます。この方法を使用すると、計算コストを増加させることなくモデルを大幅に増やすことができます。ICLR2017のMoEでは、モデル容量を1000倍以上向上させ、計算効率に過度の負担をかけない超大規模ニューラルネットワークを提案した。その中で、まばらにゲートされた混合エキスパート層は数千のフィードフォワード ニューラル ネットワークで構成され、どのエキスパート層の選択はゲート メカニズムによって制御されます。MoE ネットワーク全体は数十億のパラメータで構成されており、この手法の提案により、研究者は超大規模ニューラル ネットワークの探索プロセスを大きく前進させることができました。

関連文献:

[22] ユニバーサルトランスフォーマー
https://arxiv.org/pdf/1807.03819.pdf

Transformer モデルに基づいて、モデルの深さ次元のサイクルが追加され、モデルの計算時間は条件付き計算によって制御され、さまざまなサンプルに応じて必要なモデル層の数を選択できます。

[23] 法外に大規模なニューラル ネットワーク: まばらにゲートされた専門家の混合層
https://arxiv.org/pdf/1701.06538.pdf

この論文で提案されているスパース ゲート混合エキスパート レイヤーは、数千のフィードフォワード ニューラル ネットワークで構成されており、MoE 全体は数十億のパラメーターで構成されていますが、それでもモデルの計算効率が保証されています。

[24] 深さ適応型トランス
https://arxiv.org/pdf/1910.10073.pdf

この論文は、深層適応型 Transformer モデルを提案します. モデルの推論プロセス中に、トレーニング サンプルを通じて異なる層のモデルを計算のために選択することができ、これによりネットワーク推論の効率が向上します。

[25] FastBERT: 適応推論時間による自己抽出型 BERT
https://arxiv.org/pdf/2004.02178.pdf

[26] DeeBERT: BERT 推論を加速するための動的早期終了
https://arxiv.org/pdf/2004.12993.pdf

FastBERT と DeeBERT は同様のアイデアを持っており、どちらも Transformer レイヤー間に追加の分類器を挿入することで BERT の推論プロセスを高速化します。

モデルの枝刈り (枝刈り)

モデルの枝刈りは、高密度のニューラル ネットワークを疎にすることで、モデル パラメーターの数とトレーニング コストを削減します。

モデルの枝刈り手法は枝刈りの粒度から分類すると、非構造化枝刈り構造化枝刈りに分けられます。

非構造化枝刈りは通常、ニューロン単位で実行されます。この方法ではモデル パラメーターの量を大幅に削減できますが、基礎となるコンピューティング ライブラリは通常構造化アクセラレーションのみをサポートしているため、この非構造化スパース メソッドでは実際のアクセラレーション効果を達成できないことがよくあります。
構造枝刈りは、通常、モデル レイヤー、ブロック、チャネル、その他の構造レベルの枝刈りを指します。この「粗粒度の」枝刈りはモデルのパフォーマンスに大きな影響を与えますが、実際の加速効果を得ることができ、実際にはより大きな利点があります。運用アプリケーションに適しており、展開がより容易になります。この方法の実装では、モジュールの重要性を人為的に設定された検査基準によって判断したり、ネットワーク上で L1 および L2 正則化を実行したりすることができ、後者はトレーニング プロセス中にモジュールの貢献度を自動的に評価できます。大切な部分を「安全に」カットします。

モデルの枝刈りは、枝刈りの段階から、トレーニング前の枝刈り、トレーニング後の枝刈り、トレーニング後の枝刈りに分類できます。一般的なモデルの枝刈り方法は、トレーニング、枝刈り、微調整の 3 つの段階に分けることができます。

(1) 「過剰にパラメータ化された」大規模ネットワークをトレーニングし、これを枝刈りのベンチマークとして使用します。なぜ大規模なネットワークを訓練する必要があるのか​​については、ICLR2019 の最優秀論文の宝くじ仮説を参照してください。大規模なネットワークには複数の小さなサブネットワークが含まれているため、大規模なネットワークにはより多くの「可能性」が含まれており、パフォーマンスが向上する可能性が高くなります。 (2) ネットワーク内の「重要」と「重要でない」を区別し、重要でない部分を
切り取る;
(3) プルーニングされたモデルを微調整し、実装プロセス中に大規模ネットワークの重要な部分を個別に抽出し、トレーニング データセットに対して高速微調整を実行します。このステップは、プルーニング後のモデルのパフォーマンス損失を軽減するためのものです。可能な限り剪定すること。

上記 3 つのステップのうち、トレーニングと枝刈りを順番に行う方法はトレーニング後の枝刈り、並行して行う場合はトレーニング中の枝刈り、トレーニング前に枝刈りのステップを設定する方法はトレーニング前の枝刈りに属します。現在、最も一般的に使用されている枝刈り方法は、トレーニング後の枝刈りです。トレーニング、反復枝刈り、微調整のプロセスを通じて、大規模なネットワーク内でより良いサブネットワークが得られます。トレーニング コストは高くなりますが、方法はシンプルであり、エンジニアリングの実践がよりフレンドリーになり、モデルのパフォーマンスの損失も小さくなります。

関連文献:

[27] 深層圧縮: 枝刈り、訓練された量子化、およびハフマン コーディングを使用した深層ニューラル ネットワークの圧縮
https://arxiv.org/pdf/1510.00149.pdf

ICLR 2016 の最優秀論文、プルーニング、量子化、およびハフマン コーディングによるディープ ニューラル ネットワークの圧縮。

[28] 宝くじの仮説: スパースでトレーニング可能なニューラル ネットワークの発見
https://arxiv.org/pdf/1803.03635.pdf

ICLR 2019の最優秀論文では「宝くじ仮説」が提案されました。

[29] 16 頭は本当に 1 頭よりも優れているのでしょうか?
https://arxiv.org/pdf/1905.10650.pdf

[30] マルチヘッドの自己注意の分析: 特殊なヘッドが重労働を行い、残りの部分は刈り込むことができます
https://arxiv.org/pdf/1905.09418.pdf

上記 2 つの論文はすべて、Transformer のマルチヘッド アテンションのためのモデルの枝刈りに関するものですが、実験では、マルチヘッド アテンションの一部のヘッドを切り落としても、モデルのパフォーマンスにはほとんど影響しないことがわかりました。

[31] DynaBERT: 適応的な幅と深さを備えた動的 BERT
https://arxiv.org/pdf/2004.04037.pdf

BERT モデルに基づいて、さまざまなサイズのサブネットワークがトレーニングされ、モデル圧縮の目的を達成するために、トレーニング後の推論段階でモデルが直接枝刈りされます。

[32] LadaBERT: ハイブリッド モデル圧縮による BERT の軽量適応
https://arxiv.org/pdf/2004.04124.pdf

この論文で提案する LadaBERT は、ハイブリッド モデル圧縮フレームワークを使用して、モデルを目標サイズまで反復的に圧縮します。これには、知識の蒸留、モデルの枝刈り、行列分解などのモデル圧縮手法が含まれます。

パラメータの共有

パラメータ共有は重み共有とも呼ばれ、その主な機能はネットワーク内で重みを共有することでモデルのパラメータ数を減らし、それによってモデルに必要な記憶領域を削減することです。Transformer モデルの場合、最も一般的なパラメータ共有方法は 2 つあります:
1) Encoder と Decoder の間の埋め込み層の重み共有
2)隠れ層の層間パラメータ共有(ALBERT など)、2) 隠れ層の層間パラメータ共有 (ALBERT など)。

エンベディング層の重み配分方法では、機械翻訳タスクを例にとりますが、翻訳のソース言語とターゲット言語は異なるカテゴリに属しますが、互いに重み付けされる単語(数字、句読点、文字など)は、 - 2つの言語で発生することができます 大量の語彙を共有することで、語彙の共有が可能になります。語彙のサイズは通常数万であるため、共有語彙方法によって保存できるモデル パラメータは非常に多くなります。一般的に使用される BPE 手法では、英語とドイツ語と同様に最小単位がサブワード レベルであるため、同じ族の 2 つの言語はサブワードの重複が非常に高いため、埋め込み層の共有もより適切に行うことができます。モデルのパフォーマンスを向上させるために言葉を発します。ただし、中国語と英語のように大きな違いがある言語ペアの場合、共通の語彙を使用することで期待される利点は小さいです。

層間パラメータ共有の概念は ALBERT などの研究で使用されており、12 層の BERT ベース モデルを例にとると、トレーニング中に最初の層のパラメータのみを学習し、残りの 11 層で再利用できます。 12 の各層に異なるパラメータを学習させるのではなく、パラメータのセットを学習します。BERT ベースのパラメータが 1 億 1,000 万個であるのに対し、層数と隠れサイズが同じ ALBERT モデルにはパラメータが 3,100 万個しかありません。このような方法では、モデル パラメーターの量を大幅に削減できることがわかります。

関連文献:

[33] ALBERT: 言語表現の自己教師あり学習のためのライト BERT
https://arxiv.org/pdf/1909.11942.pdf

BERTのトレーニング速度を高速化し、トレーニング中のメモリ消費を削減するために、クロスレイヤーパラメータ共有と行列分解の方法が採用されています。

[34] ニューラル ネットワークにおけるレイヤーの反復的スタッキング: ニューラル機械翻訳への応用
https://arxiv.org/pdf/2106.10002.pdf

ニューラルネットワークモデルは巡回層の重ね合わせ方式で構築されており、Transformer モデルの実験では、パラメータの層を 6 回重ね合わせることで 6 層モデルと同様の性能が得られることが示されています。

[35] 重みの共有と共有解除によるディープ モデル トレーニングの高速化
https://arxiv.org/pdf/2110.03848.pdf

この論文では、パラメータを共有することでディープ ニューラル ネットワークの学習効率を向上させます。

量子化

量子化方法は、モデルでよく使われる浮動小数点の32ビット値を、より桁数の少ない値にマッピングすることであり、マッピング間隔が等しいかどうかによって、均一量子化と不均一量子化に分けられます

量子化方式の最も一般的な用途は混合精度計算であり、データ型変換と浮動小数点 32 ビットと 16 ビット間の交互計算により、この方式は特定のハードウェア (TITAN V など) で損失なく大幅な高速化を実現できます。モデルのパフォーマンス。より極端なケースでは、8 ビット整数またはより少ないビットで表される値 (2 値ネットワーク、3 値ネットワークなど) を計算に使用することもでき、理論的にはより大きな高速化を実現できます。ただし、このような方法はハードウェアと基礎となるコンピューティング ライブラリによって制限され、実際の高速化効果を実現するには基礎となるコンピューティング ライブラリのサポートが必要です。

関連文献:

[36] 混合精度トレーニング
https://arxiv.org/pdf/1710.03740.pdf

シンプルで実用的な技術であり、FP32 と FP16 の混合精度計算を通じて、モデルのパフォーマンスを確保することを前提として、モデルの計算効率を大幅に向上させ、ビデオ メモリ リソースの消費を削減できます。

[37] 二値化ニューラル ネットワーク: +1 または -1 に制約された重みと活性化によるニューラル ネットワークのトレーニング
https://arxiv.org/pdf/1602.02830.pdf

[38] XNOR-Net: バイナリ畳み込みニューラル ネットワークを使用した ImageNet 分類
https://arxiv.org/pdf/1603.05279.pdf

上記 2 つの論文では、量子化プロセスで 1 ビットのみを使用しており、これは比較的極端な量子化方法です。

[39] Pieces of Eight: 8 ビット ニューラル機械翻訳
https://arxiv.org/pdf/1804.05038.pdf

[40] Transformer モデルの完全 8 ビット整数推論に向けて
https://arxiv.org/pdf/2009.08034.pdf

[41] Q8BERT: 量子化された 8 ビット BERT
https://arxiv.org/pdf/1910.06188.pdf

8ビット量子化方式により、モデルのパフォーマンスをできるだけ損なうことなく、4倍のモデル圧縮効果を実現できます。

おすすめ

転載: blog.csdn.net/qq_33757398/article/details/125710499