大規模言語モデル (LLM) には通常、数十億のパラメーターがあり、数兆のトークンでトレーニングされます。ただし、このようなモデルのトレーニングとデプロイには非常にコストがかかります。計算要件を軽減するために、さまざまなモデル圧縮技術がよく使用されます。
これらのモデル圧縮技術は、一般に、蒸留、テンソル分解 (低ランク因数分解を含む)、枝刈り、および量子化の 4 つのカテゴリに分類できます。プルーニング手法は以前から存在していましたが、多くはパフォーマンスを維持するためにプルーニング後にリカバリ微調整 (RFT) を必要とするため、プロセス全体のコストが高くつき、拡張が困難になります。
ETH Zurich と Microsoft の研究者は、SliceGPT と呼ばれるこの問題の解決策を提案しました。この方法の中心となるアイデアは、モデルのパフォーマンスを維持するために重み行列の行と列を削除することでネットワークの埋め込み次元を削減することです。 SliceGPT の登場により、この問題に対する効果的な解決策が提供されます。
研究者らは、SliceGPT を使用すると、RFT を使用しなくても、単一の GPU を使用して大規模なモデルを数時間で圧縮でき、生成タスクとダウンストリーム タスクの両方で競争力を維持できることに注目しました。パフォーマンス。現在、この研究は ICLR 2024 に承認されています。
スパース性の程度とスパース性モードは、計算速度の相対的な向上を決定する要因です。スパース モードがより合理的であれば、計算上の利点がさらに高まります。他の枝刈り方法とは異なり、SliceGPT は重み行列の行全体または列全体を切り取る (切り離す!) ことによって枝刈りを行います。切除の前に、ネットワークは、予測を変更しないまま、わずかに影響を受ける剪断プロセスを可能にする変換を受けます。
結果として、重み行列が減少し、信号伝達が弱まり、ニューラル ネットワークの次元が減少します。
以下の図 1 は、SliceGPT 手法と既存のスパース手法を比較しています。
広範な実験を通じて、著者は SliceGPT が LLAMA-2 70B、OPT 66B、および Phi の複数のピクセルを削除できることを発見しました。 -2 モデル: 密モデルのゼロショット タスクのパフォーマンスのそれぞれ 99%、99%、および 90% を維持しながら、モデル パラメーター (埋め込みを含む) を最大 25% まで削減します。
SliceGPT で処理されたモデルは、追加のコード最適化を行わなくても、より少ない GPU でより高速に実行できます。24 GB のコンシューマ GPU では、作成者は LLAMA-2 70B を使用して、総推論計算を 64 に削減します。 % は高密度モデルで、40GB A100 GPU では 66% に削減されました。
さらに、彼らは、SliceGPT を可能にする、Transformer ネットワークにおける計算不変性という新しい概念も提案しました。
SliceGPT の詳細
この論文では、著者はまず RMSNorm 接続を使用して Transformer ネットワークで不変性を実現する方法を紹介し、次に LayerNorm 接続でトレーニングされたネットワークを RMSNorm に変換する方法を説明します。次に、主成分分析 (PCA) を使用して各層の変換を計算し、それによってブロック間の信号をその主成分に投影する方法を紹介します。最後に、マイナー主成分の削除がネットワークの行または列の切断にどのように対応するかを示します。
Transformer ネットワークの計算上の不変性
Q を使用して直交行列を表します。
X_ℓ をトランスのブロックの出力とすると、RMSNorm で処理された後、RMSNorm (X_ℓ) の形で次のブロックに入力されます。直交行列 Q を持つ線形層を RMSNorm の前に、Q^⊤ を RMSNorm の後に挿入すると、信号行列の各行が Q で乗算され、正規化されて Q^ ⊤ で乗算されるため、ネットワークは変化しません。
さて、ネットワーク内の各アテンションまたは FFN ブロックは入力と出力に対して線形演算を実行するため、次のことが可能になります。操作 Q はモジュールの線形層に吸収されます。ネットワークには残りの接続が含まれているため、Q は前のすべての層 (埋め込みまで) と後続のすべての層 (LM ヘッドまで) の出力にも適用する必要があります。
不変関数とは、入力変換によって出力が変化しない関数を指します。この記事の例では、結果を変更せずに任意の直交変換 Q をトランスフォーマーの重みに適用できるため、任意の変換状態で計算を実行できます。著者らはこれを計算上の不変性と呼び、次の定理で定義しています。
定理 1: と を RMSNorm で接続された変圧器ネットワークの ℓ 線形層の線形層の重み行列とする、 、 は対応するオフセット (存在する場合)、W_embd と W_head は埋め込み行列とヘッド行列です。 Q が次元 D の直交行列であると仮定すると、次のネットワークは元の変圧器ネットワークと同等になります。
入力バイアスとヘッド バイアスをコピー:
アルゴリズム 1 によって、変換されたネットワークが元のネットワークと同じ結果を計算することが証明できます。
LayerNorm Transformer は RMNorm に変換できます
#Transformer ネットワークの計算上の不変性は、RMSNorm 接続されたネットワークにのみ適用されます。 LayerNorm を使用してネットワークを処理する前に、著者らはまず、LayerNorm の線形ブロックを隣接するブロックに吸収することによってネットワークを RMSNorm に変換します。
図 3 は、Transformer ネットワークのこの変換を示しています (図 2 を参照)。各ブロックで、著者は出力行列 W_out に平均減算行列 M を乗算します。これは、後続の LayerNorm での平均減算を考慮します。入力行列 W_in には、前の LayerNorm ブロックの比率が事前に乗算されます。埋め込み行列 W_embd は平均減算を受ける必要があり、最後の LayerNorm の比率に従って W_head を再スケーリングする必要があります。これは操作順序の単純な変更であり、ネットワーク出力には影響しません。
#各ブロックの変換
さてトランスフォーマー内のすべての LayerNorm が RMSNorm に変換されているため、任意の Q を選択してモデルを変更できます。著者の当初の計画は、モデルから信号を収集し、これらの信号を使用して直交行列を構築し、その後ネットワークの一部を削除することでした。彼らは、ネットワーク内の異なるブロックからの信号が揃っていないことをすぐに発見しました。そのため、各ブロックに異なる直交行列 (Q_ℓ) を適用する必要がありました。各ブロックで使用する直交行列が異なっていてもモデルは変わりませんし、証明方法もアルゴリズム 1 の 5 行目を除いて定理 1 と同じです。ここでは、残差接続とブロックの出力が同じ回転でなければならないことがわかります。この問題を解決するために、著者は残差 を線形変換することで残差接続を変更します。 #図 4 は、残りの接続に対して追加の線形演算を実行することで、さまざまな回転をさまざまなブロックに適用する方法を示しています。重み行列の変更とは異なり、これらの追加の操作は事前計算できず、モデルにわずかな (D × D) のオーバーヘッドが追加されます。それでも、これらの操作はモデルを切り取るために必要であり、全体的な速度が向上していることがわかります。 行列 Q_ℓ を計算するために、著者は PCA を使用します。トレーニング セットからキャリブレーション データセットを選択し、(LayerNorm 演算を RMSNorm に変換した後) モデルで実行し、その層の直交行列を抽出します。より正確には、 の場合、変換されたネットワークの出力を使用して、次の層の直交行列を計算します。より正確には、 がキャリブレーション データ セットの i 番目のシーケンスに対する ℓ 番目の RMSNorm モジュールの出力である場合、次のように計算します。 そして、固有値の降順にソートされた C_ℓ の固有ベクトルとして Q_ℓ を設定します。 #Excision : ##ここで、Q は ## の特徴ベクトルです。 #, D は D × D の小さな削除行列 (D × D ホモトピック行列の D 個の小さな列を含む) で、行列の左側のいくつかの列を削除するために使用されます。 QD が PCA をブロック間信号行列演算に適用する場合。上記の演算では、この行列に Q が乗算されています。作成者は、W_in の行と、W_out および W_embd の列を削除しました。また、残りの接続に挿入された行列 の行と列も削除されました (図 4 を参照)。 #実験結果 著者は、WikiText-2 データセット内の SliceGPT および SparseGPT によってトリミングされた後、さまざまなサイズの OPT および LLAMA-2 モデル シリーズのパフォーマンス評価を実施しました。表 1 は、モデルのさまざまなレベルの枝刈り後に維持される複雑さを示しています。 LLAMA-2 モデルと比較して、SliceGPT は OPT モデルに適用した場合に優れたパフォーマンスを示しました。これは、モデル スペクトルの分析に基づく著者の推測と一致しています。
SliceGPT のパフォーマンスは、モデルのサイズが大きくなるにつれて向上します。 SparseGPT 2:4 モードは、すべての LLAMA-2 シリーズ モデルで 25% クリッピングで SliceGPT よりもパフォーマンスが悪くなります。 OPT の場合、2.7B モデルを除くすべてのモデルで、切除率 30% のモデルのスパース性が 2:4 のモデルより優れていることがわかります。 ゼロサンプル タスク 著者は、PIQA、WinoGrande、HellaSwag、ARC-e、および ARCc の 5 つのタスクを使用して、ゼロで SliceGPT を評価しました。 -sample タスクのパフォーマンス。評価のデフォルト パラメータとして LM 評価ハーネスを使用しました。 図 5 は、上記のタスクに関して調整されたモデルによって達成された平均スコアを示しています。図の上段はWikiText-2のSliceGPTの平均精度、下段はAlpacaのSliceGPTの平均精度を示しています。生成タスクと同様の結論が結果からも観察できます。OPT モデルは LLAMA-2 モデルよりも圧縮に適応しており、モデルが大きくなるほど、枝刈り後の精度の低下は明らかではありません。 著者は、Phi-2 のような小型モデルで SliceGPT の効果をテストしました。トリミングされた Phi-2 モデルは、トリミングされた LLAMA-2 7B モデルと同等のパフォーマンスを発揮します。最大の OPT モデルと LLAMA-2 モデルは効率的に圧縮でき、SliceGPT は 66B OPT モデルから 30% を削除しても数パーセント ポイントしか損失しません。 著者は、リカバリ微調整 (RFT) 実験も実施しました。 LoRA を使用して、トリミングされた LLAMA-2 および Phi-2 モデルに対して少数の RFT が実行されました。
#実験結果を図 6 に示します。 WikiText-2 と Alpaca データ セットの間の RFT の結果には大きな違いがあり、モデルは Alpaca データ セットの方が優れたパフォーマンスを示していることがわかります。著者らは、この違いの理由は、Alpaca データセット内のタスクがベースライン タスクに近いためであると考えています。 最大の LLAMA-2 70B モデルでは、30% を枝刈りしてから RFT を実行した後、Alpaca データセットの最終的な平均精度は 74.3% で、元の密集データの精度は 74.3% でした。モデルは 76.6% でした。カスタマイズされたモデル LLAMA-2 70B は約 51.6B のパラメータを保持し、スループットが大幅に向上します。 著者はまた、Phi-2 が WikiText-2 データセットの枝刈りされたモデルから元の精度を回復できなかったが、Alpaca では数パーセントの精度を回復できることも発見しました。データセット、精度。 25% クリップされ RFT された Phi-2 の Alpaca データセットの平均精度は 65.2% で、元の高密度モデルの精度は 72.2% です。トリムされたモデルは 2.2B パラメータを保持し、2.8B モデルの精度の 90.3% を保持します。これは、小さな言語モデルであっても効果的に枝刈りできることを示しています。 ベンチマーク スループット 従来のプルーニング手法とは異なり、SliceGPT はマトリックス形式 (構造的) です。 ) スパース性が導入されます。列 X 全体が切り取られ、埋め込み次元が削減されます。このアプローチは、SliceGPT 圧縮モデルの計算の複雑さ (浮動小数点演算の数) を強化し、データ転送効率を向上させます。 80 GB H100 GPU では、シーケンス長を 128 に設定し、GPU メモリが使い果たされるかスループットが低下するまで、シーケンス長をバッチ 2 倍にして最大スループットを見つけます。著者らは、25% および 50% プルーニングされたモデルのスループットを、80GB H100 GPU 上の元の高密度モデルと比較しました。 25% トリミングされたモデルは、最大 1.55 倍のスループット向上を達成しました。 50% クリッピングにより、最大のモデルは、単一の GPU を使用して 3.13 倍と 1.87 倍のスループットの大幅な向上を達成します。これは、GPU の数が固定されている場合、プルーニングされたモデルのスループットは、元の高密度モデルのそれぞれ 6.26 倍と 3.75 倍に達することを示しています。 50% プルーニング後、WikiText2 の SliceGPT によって維持される複雑さは SparseGPT 2:4 より劣りますが、スループットは SparseGPT メソッドをはるかに上回ります。サイズが 13B のモデルの場合、メモリの少ないコンシューマ GPU 上の小型モデルでもスループットが向上する可能性があります。 推論時間 著者はエンドツーエンドのモデル圧縮についても研究しました。 SliceGPT ターミナルの実行時間を使用します。表 2 は、Quadro RTX6000 および A100 GPU での OPT 66B モデルと LLAMA-2 70B モデルの単一トークンの生成に必要な時間を比較しています。 RTX6000 GPU では、モデルを 25% トリミングした後、推論速度が 16 ~ 17% 向上し、A100 GPU では速度が 11 ~ 13% 向上することがわかります。 LLAMA-2 70B の場合、RTX6000 GPU を使用して必要な計算量は、元の高密度モデルと比較して 64% 削減されます。著者は、この改善は、SliceGPT による元の重み行列のより小さい重み行列への置き換えと、他の枝刈りスキームでは達成できない高密度カーネルの使用によるものであると考えています。
著者らは、この記事の執筆時点では、ベースラインの SparseGPT 2:4 ではエンドツーエンドのパフォーマンス向上を達成できなかったと述べています。代わりに、トランスフォーマー層の各操作の相対時間を比較することによって、SliceGPT と SparseGPT 2:4 を比較しました。彼らは、大規模なモデルの場合、SliceGPT (25%) が速度向上と複雑さの点で SparseGPT (2:4) と競合できることを発見しました。 計算コスト ##すべての LLAMA-2、OPT、および Phi-2 モデル単一の GPU で 1 ~ 3 時間かかります。表 3 に示すように、回復を微調整すると、すべての LM を 1 ~ 5 時間以内に圧縮できます。 #詳細については、元の論文を参照してください。 生成タスク
以上が大規模なモデルもスライスでき、Microsoft SliceGPT により LLAMA-2 の計算効率が大幅に向上します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。