パフォーマンスを犠牲にすることなく、メモリ使用量を90%削減。FacebookがQuant-Noiseモデル圧縮方式を提案

パフォーマンスを犠牲にすることなく、メモリ使用量を90%削減。FacebookがQuant-Noiseモデル圧縮方式を提案

数百メガバイトのサイズのニューラル ネットワークの場合、モデル圧縮によりメモリ使用量、通信帯域幅、計算の複雑さなどを削減できるため、アプリケーションの展開が容易になります。最近、Facebook AI の研究者は、パフォーマンスを低下させることなくニューラル ネットワークのメモリ使用量を 90% 以上削減する新しいモデル量子化圧縮技術 Quant-Noise を提案しました。

[[324224]]

ニューラル ネットワークの場合、パラメーターの数とレイヤーの数が増えるほど、出力結果がより洗練されることは誰もが知っています。もちろん、これは、優れたパフォーマンスを持つニューラル ネットワークが非常に大きくなることも意味します。たとえば、現在の標準的な機械翻訳アーキテクチャである Transformer には、レイヤーごとに数百万のパラメータが含まれる場合があります。パフォーマンスとパラメータ効率が最適化されたモデル (EfficientNet など) でも、数十から数百 MB が必要になります。これにより、ロボットや仮想アシスタントなどの分野への応用が制限されます。

したがって、アプリケーションをデプロイする前に、「モデルをどのように圧縮するか」という疑問に直面する必要があります。

プルーニングと蒸留は、モデル圧縮でよく使用される 2 つの方法であり、ネットワークの重みの数を減らすことでパラメータを削減します。もう 1 つの方法は「量子化」です。これは、重みごとのビット数を減らすことで元のネットワークを圧縮します。

スカラー量子化などの一般的な後処理量子化方法は、トレーニングされたネットワークの浮動小数点重みを、固定幅の整数などの低精度表現で表現することです。これらの後処理量子化方法の利点は、高い圧縮効率と、サポートされているハードウェア上で推論を高速化できることです。欠点は、これらの近似によって生じた誤差が順方向伝播計算プロセス中に蓄積し続け、最終的にパフォーマンスが大幅に低下することです。

現在、Facebook の研究者らは、実際のアプリケーションに導入されたときに高いパフォーマンスを維持しながらモデルを極端に圧縮できる新しいモデル量子化圧縮技術 Quant-Noise を提案しています。

  • 論文アドレス: https://arxiv.org/abs/2004.07320
  • プロジェクトアドレス: https://github.com/pytorch/fairseq/tree/master/examples/quant_noise

この研究では、研究者らは、ネットワーク全体ではなく重みのサブセットのみを量子化する圧縮方式を提案しました。ネットワークのランダムな部分のみが各フォワードパスで量子化され、ほとんどの重みは不偏勾配を使用して更新されます。

この方法では、トレーニング中により単純な量子化スキームを採用できるため、Product Quantizer (PQ) アルゴリズムなどのトレーニング可能なパラメータを持つ量子化モジュールに非常に役立ちます。

一般的に、この方法のハイライトは次のとおりです。

  1. 「Quant-Noise」と呼ばれる量子化ノイズを重みのランダムなサブセットに適用して、int4、int8、PQ アルゴリズムなどのさまざまな量子化方法に適したネットワークを学習します。
  2. 精度とモデル サイズの総合的な結果に関して SOTA レベルを達成するために、PQ アルゴリズムに Quant-Noise が追加されます。この方法を使用して圧縮した後、自然言語処理では、RoBERTa は 14MB に圧縮されながら MNLI で 82.5% の精度を達成しました。コンピューター ビジョンでは、EfficientNet-B3 は 3.3MB に圧縮されながら ImageNet で 80.0% のトップ 1 精度を達成しました。
  3. Quant-Noise でトレーニングされたネットワークは、PQ アルゴリズムと int8 を組み合わせてネットワークの重みとアクティベーションを量子化し、固定精度のコンピューティング条件下で究極の圧縮効果を実現し、ImageNet データセットで 79.8% のトップ 1 精度と WikiText-103 データセットで 21.1 のパープレキシティを達成しました。

さらに、Quant-Noise を使用して圧縮した後のモデルのパフォーマンスは元のモデルとほぼ同じですが、メモリ使用量は元のモデルの 10 分の 1 から 20 分の 1 にまで削減されます。これは、PyTorch および Tensorflow で使用される int8 の 4 倍の圧縮を大幅に上回ります。現在、関連コードもオープンソース化されています。

原理: 量子化ニューラルネットワーク

この章では、研究者らは量子化の原理といくつかの標準的な量子化方法を紹介し、スカラー量子化と積量子化を組み合わせる方法を詳しく説明します。定義を明確にするために、固定された実数行列 W∈R^n×p の例に焦点を当て、この行列が m×q ブロック (b_kl) に分割されていると仮定することに注意してください。

これらのブロックの特性は量子化方法によって決定され、コードブックはKベクトルのセット、つまりC = {c [1]、...、c [K]}です。この量子化方法は、実際の重みを使用する代わりに、コードブック C 内の「コードワード c」へのインデックスを各ブロック b_kl に割り当て、コードブック C と結果のインデックス (インデックス マトリックス I のエントリ I_kl として) を保存することにより、マトリックス W を圧縮します。推論中、この方法は、b_kl = c[I_kl]となるように元の行列Wの近似値を再構築します。研究者は、スカラー量子化(各ブロック b_kl が 1 つの重みで構成される int8 など)とベクトル量子化(複数の重みが一緒に量子化される)を区別しています。

上の図は、研究者がトレーニング中に重みのサブセットに量子化ノイズを適用して、量子化モデルのパフォーマンスを向上させる方法を示しています (完全なビデオについてはリンクを参照してください)。

固定小数点スカラー量子化

固定小数点スカラー量子化は、浮動小数点表現を低精度の固定小数点表現に置き換えます。互換性のあるハードウェア上で固定小数点演算を使用することで、モデルのメモリ使用量を削減し、推論速度を高速化できます。

Quant-Noiseの具体的な実装方法

ディープ ネットワークは、トレーニング中に量子化ドリフトによって発生するノイズの影響を受けないため、パフォーマンスの低下につながることはありません。ネットワークを量子化に対して堅牢にするにはどうすればよいでしょうか?解決策は、トレーニング中に量子化ノイズを導入することです。

量子化認識トレーニング (QAT) は、順方向伝播プロセス中に重みを量子化することでこれを実現します。この変換は微分不可能であり、勾配を近似するためにストレート スルー推定器 (STE) を使用します。 STE は、重みの量子化レベル、つまり圧縮率に応じて勾配にバイアスを導入します。

そこで研究者らは、QATをランダムに改善することでバイアスを制御するためのシンプルな修正方法、Quant-Noiseを提案した。アイデアは、QAT のようにネットワーク全体を量子化するのではなく、重みのランダム部分を量子化して、量子化されていない重みが偏りのない勾配を使用するようにすることです。この方法の一般的な形式では、トレーニング中に量子化とプルーニングの効果をシミュレートできます。

Quant-Noiseを使用したネットワークのトレーニング

引き続き、実行列 W を例に挙げます。トレーニング中、Quant-Noise メソッドは次のように動作します。

まず、ターゲット量子化方法に関連付けられたブロック b_kl が計算されます。次に、各順方向伝播プロセスで、これらのブロックのサブセットがランダムに選択され、いくつかの歪みが追加されます。逆方向伝播プロセスでは、STE を使用して歪みの重みを近似し、すべての重みの勾配値が計算されます。言い換えれば、インデックスタプル J ⊂ {(k, l)}(1≤k≤m、1≤l≤q)とブロックに適用される歪みまたはノイズ関数 ϕ が与えられた場合、各ブロック b_kl に次の変換を適用する演算子 ψ (· | J) を定義します。

Quant-Noise はどのように機能しますか?

Quant-Noise がさまざまな量子化手法に与える影響

下の表 1 に示すように、研究者らはまず、言語モデリングと画像分類タスクにおける int4、int8、iPQ という 3 つの異なる量子化スキームに対する Quant-Noise の影響を実証しました。結果は、Quant-Noise が iPQ などの高性能量子化スキームに非常にうまく機能する一方で、QAT は量子化が後処理ステップとして実行される場合と比較しても、一般的にパフォーマンスの低下につながることを示しています。

表 1: QAT および Quant-Noise 設定での言語モデリングおよび画像分類タスクにおける 3 つの量子化方式 (int4、int8、iPQ) の量子化結果の比較。言語モデリングタスクでは、研究者らはWikitext-103ベンチマークでTransformerをトレーニングし、テストパープレキシティ(PPL)を取得しました。画像分類タスクでは、研究者らはImageNet-1kベンチマークでEfficientNet-B3をトレーニングし、検証Top-1精度を取得しました。

研究者らは、Quant-Noise はプルーニングおよび重み共有方式と互換性があり、互いに補完し合うことを分析しました。下の表 2 に示すように、研究者らは、WikiText-103 での言語モデリング、MNLI での事前トレーニング済み文章表現、ImageNet-1k でのオブジェクト分類の結果を示しました。これらの結果は、さまざまなタスクやベンチマークにわたって非常に一貫しており、Quant-Noise は強力な iPQ ベースライン メソッドよりも大幅なパフォーマンスの向上を実現しています。

表 2: 言語モデリング、文章表現、画像分類タスクにおける非量子化モデルと量子化モデルのパフォーマンスに対する、いくつかの異なる圧縮方法 (重み共有、プルーニング、Quant-Noise) の影響。

SOTA方式との比較

研究者らは、同じタスクでQuant-Noiseと現在のSOTA手法を比較した。彼らは競合モデルに最適な量子化設定を適用し、重み共有とプルーニング手法と組み合わせることで、これらのモデルのメモリフットプリントを元の 1/94 ~ 1/20 に削減し、高性能モデルに極端な圧縮を提供しました。

下の図 2 に示すように、研究者は言語モデリング、MNLI、ImageNet におけるパフォーマンスとモデル サイズの間にトレードオフがあることを発見しました。

図 2: モデル サイズの関数としてのモデルのパフォーマンス。

制御変数テスト

以下の表 3 に示すように、研究者は、Quant-Noise でトレーニングしない、Quant-Noise で微調整する、Quant-Noise でトレーニングする、という 3 つの異なる設定で、Adaptive Input アーキテクチャの困惑度と RoBERTa の精度の変化を示しています。 Quant-Noise トレーニングを直接使用すると、最も低い困惑度と最高の精度を達成できることがわかります。

表 3: 3 つの異なる設定での困惑度と精度の比較: Quant-Noise トレーニングを使用しない場合、Quant-Noise 微調整を使用する場合、Quant-Noise トレーニングを使用する場合。

下の図 3 に示すように、異なる Quant-Noise 値は言語モデリング モデル Transformer のパフォーマンスに影響します。 iPQ の場合、ノイズ値が高いとモデルのパフォーマンスに大きな影響を与えます。一方、int8 量子化とそのノイズ関数の場合、ノイズ値が高いとモデルのパフォーマンスにわずかに悪影響を及ぼしますが、前者ほど深刻ではありません。

図 3: 量子化パラメータの影響。

<<:  AIはあなたの建物をスマートで健康的な建物にします

>>:  安全な生産を守り、ロボット、IoTなどの技術サポートを提供します。

ブログ    

推薦する

...

この世界規模の問題に対して、ドローンはどれほどの助けとなるのでしょうか?

火事を起こすのは簡単ですが、消すのは難しいです。これは世界的な問題ですが、これを効果的に予防し、迅速...

データセンターから発電所まで: 人工知能がエネルギー利用に与える影響

人工知能 (AI) は急速に現代生活に欠かせないものとなり、産業を変革し、私たちの生活、仕事、コミュ...

次世代ビジネスインテリジェンスのトレンドと機会

ビジネス成果を明確に定義するために、多くの企業は分析にビジネス インテリジェンス ソフトウェアを活用...

人工知能は人間に取って代わるでしょうか?

この記事のタイトルは少し大まかです。私の意見では、実際には 2 つの意味が含まれています。1 つ目は...

...

ビッグデータと人工知能の応用に関する7つのよくある誤解

大規模で高速かつ変化する情報資産を処理するためにビッグデータ テクノロジーを採用する組織が増えるにつ...

...

sklearnのトレーニング速度が100倍以上向上、米「Fanli.com」がsk-distフレームワークをオープンソース化

この記事では、Ibotta (「Rebate Network」の米国版) の機械学習およびデータ サ...

...

IoT、分析、AI – デジタル化の勝利のトリオ

デジタル化が進む世界では、すべてがスピードと個々の顧客ニーズの特定と対応を中心に展開されます。サービ...

Python ディープラーニング: なぜディープラーニングを学ぶのか?

2016年初頭、伝説の囲碁プレイヤー、イ・セドル氏が囲碁界の「新人」と世界的に有名な一連の対決を始...

AIロボットが産業監視を強化

この機会に応えて、IBM と Boston Dynamics は協力して、IBM ソフトウェアと B...

Appleが自社チップ用のオープンソースフレームワークMLXを開発、Llama 7Bを実装しM2 Ultraで動作

2020年11月、Appleは速度と強力な機能の点で驚異的なM1チップを発売しました。 2022年に...

7,346 人が参加したアルゴリズム コンテストは JD.com に何をもたらしたのでしょうか?

[51CTO.comより引用] 今年3月中旬、JD.comとIntelが共同主催するJDataアル...