ホームページ  >  記事  >  テクノロジー周辺機器  >  LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

WBOY
WBOY転載
2023-09-12 08:01:01610ブラウズ

大規模なモデルのトレーニングと微調整にはビデオ メモリに対する高い要件があり、オプティマイザの状態はビデオ メモリの主な費用の 1 つです。最近、清華大学の Zhu Jun 氏と Chen Jianfei 氏のチームは、ニューラル ネットワーク トレーニング用の 4 ビット オプティマイザーを提案しました。これにより、モデル トレーニングのメモリ オーバーヘッドが節約され、全精度オプティマイザーに匹敵する精度を達成できます。

4 ビット オプティマイザーは、多数の事前トレーニングおよび微調整タスクで実験され、精度を維持しながら LLaMA-7B の微調整のメモリ オーバーヘッドを最大 57% 削減できます。精度を損なうことなく。

論文: https://arxiv.org/abs/2309.01507

コード: https://github.com/thu-ml /low-bit-optimizers

モデル トレーニングのメモリ ボトルネック

GPT-3、Gopher から LLaMA まで、大規模モデルのパフォーマンスが向上業界のコンセンサスになる。しかし、それとは対照的に、単一 GPU のビデオ メモリ サイズはゆっくりと増加しているため、大規模モデルのトレーニングではビデオ メモリが主なボトルネックとなっており、限られた GPU メモリで大規模なモデルをどのようにトレーニングするかが重要な問題となっています。

そのためには、まずビデオ メモリの消費源を明らかにする必要があります。実際には、ソースには次の 3 種類があります:

1. 「データ メモリ」には、ニューラル ネットワークの各層が出力する入力データと活性化値、そのサイズが含まれます。バッチ サイズと画像解像度/コンテキスト長の影響に直接影響されます;

2. モデル パラメーター、勾配、オプティマイザーの状態を含む「モデル メモリ」、そのサイズとモデル パラメーターの数 比例;

3.「一時ビデオ メモリ」には、GPU カーネルの計算で使用される一時メモリおよびその他のキャッシュが含まれます。モデルのサイズが大きくなるにつれて、モデルのビデオ メモリの割合が徐々に増加し、大きなボトルネックになります。

オプティマイザ状態のサイズは、どのオプティマイザが使用されるかによって決まります。現在、AdamW オプティマイザーは、Transformer のトレーニングによく使用されます。Transformer は、トレーニング プロセス中に 2 つのオプティマイザー状態、つまり最初の瞬間と 2 番目の瞬間を保存および更新する必要があります。モデル パラメーターの数が N の場合、AdamW のオプティマイザー状態の数は 2N であり、これは明らかにグラフィックス メモリのオーバーヘッドが膨大になります。

LLaMA-7B を例にとると、このモデルのパラメータ数は約 7B ですが、全精度 (32 ビット) の AdamW オプティマイザを使用して微調整すると、 、オプティマイザの状態は次のようになります。占有ビデオ メモリ サイズは約 52.2GB です。さらに、単純な SGD オプティマイザーは追加の状態を必要とせず、オプティマイザーの状態によって占有されるメモリを節約しますが、モデルのパフォーマンスを保証するのは困難です。したがって、この記事では、オプティマイザーのパフォーマンスが損なわれないようにしながら、モデル メモリ内のオプティマイザーの状態を減らす方法に焦点を当てます。

オプティマイザー メモリを節約する方法

トレーニング アルゴリズムに関して、現在、オプティマイザー メモリのオーバーヘッドを節約する 3 つの主な方法があります。

1. 低ランク分解 (因数分解) の考え方によるオプティマイザ状態の低ランク近似;

2. トレーニングのみLoRA など、オプティマイザ状態の大部分の保存を避けるための少数のパラメータ;

3. オプティマイザ状態を表すために低精度の数値形式を使用する、圧縮ベースの方法。

具体的には、Dettmers ら (ICLR 2022) は、ブロック単位の量子化と動的指数数値形式のテクノロジーを使用して、モーメンタムを使用した SGD と AdamW に対応する 8 ビット オプティマイザーを提案しました。言語モデリング、画像分類、自己教師あり学習、機械翻訳などのタスクにおいて、元の完全精度オプティマイザーと同等の結果を達成します。

これに基づいて、この論文ではオプティマイザ状態の数値精度をさらに 4 ビットに下げ、さまざまなオプティマイザ状態の量子化方法を提案し、最後に 4 ビット AdamW オプティマイザを提案します。同時に、この論文では、圧縮方法と低ランク分解方法を組み合わせる可能性を検討し、優れたパフォーマンスと優れたメモリ効率の両方を実現する 4 ビット係数オプティマイザを提案します。このペーパーでは、自然言語理解、画像分類、機械翻訳、大規模モデルの命令の微調整など、多くの古典的なタスクで 4 ビット オプティマイザーを評価します。

すべてのタスクにおいて、4 ビット オプティマイザは、占有メモリを少なくしながら、全精度オプティマイザと同等の結果を達成します。

#問題設定

圧縮ベースのメモリ効率の高いオプティマイザのフレームワーク

まず、アルゴリズム 1 によって与えられる、一般的に使用されるオプティマイザーに圧縮操作を導入する方法を理解する必要があります。ここで、A は勾配ベースのオプティマイザー (SGD や AdamW など) です。オプティマイザは、既存のパラメータ w、勾配 g、およびオプティマイザ状態 s を受け取り、新しいパラメータとオプティマイザ状態を出力します。アルゴリズム 1 では、完全精度 s_t は一時的ですが、低精度 (s_t ) ̅ は GPU メモリ内に保持されます。この方法でビデオ メモリを節約できる重要な理由は、ニューラル ネットワークのパラメータが各層のパラメータ ベクトルから結合されることが多いためです。したがって、オプティマイザの更新もレイヤ/テンソルごとに実行されます。アルゴリズム 1 では、最大 1 つのパラメータのオプティマイザの状態が完全な精度の形式でメモリに残り、他のレイヤに対応するオプティマイザの状態は圧縮された状態になります。州。 。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

主な圧縮方法: 量子化

量子化は低圧縮を使用します。高精度のデータを表す精度の数値を使用するため、この記事では定量化操作を正規化とマッピングの 2 つの部分に分離し、それによって新しい定量化手法のより軽量な設計と実験が可能になります。正規化とマッピングの 2 つの操作は、要素ごとに完全精度データに順次適用されます。正規化は、テンソルの各要素をユニット間隔に投影する役割を果たします。ここで、テンソル正規化 (テンソルごとの正規化) とブロックごとの正規化 (ブロックごとの正規化) は次のように定義されます。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

# 正規化方法が異なれば粒度も異なり、異常値を処理する能力も異なり、追加のメモリ オーバーヘッドも異なります。マッピング操作は、正規化された値を低精度で表現できる整数にマッピングする役割を果たします。正式に言えば、ビット幅 b (つまり、量子化後の各値は b ビットで表される) と、事前定義された関数 T

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

マッピング操作が与えられるとします。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

したがって、適切な T を設計する方法は、量子化誤差を減らす上で非常に重要な役割を果たします。この記事では、主に線形マッピング (線形) と動的指数マッピング (動的指数) について検討します。最後に、逆量子化のプロセスでは、マッピングと正規化の逆演算子を順番に適用します。

一次モーメントの圧縮方法

以下は主に AdamW のオプティマイザ状態 (一次モーメントと二次モーメント) のさまざまな方法を提案します。 -注文の瞬間) 定量的な方法。まず最初に、この論文の量子化方法は主に Dettmers et al. (ICLR 2022) の方法に基づいており、ブロック正規化 (ブロック サイズ 2048) と動的指数マッピングを使用します。

予備実験では、ビット幅を 8 ビットから 4 ビットに直接削減し、一次モーメントが量子化に対して非常に堅牢であり、多くのタスクで一致する結果が得られることがわかりました。 , ただし、一部のタスクではパフォーマンスの低下もあります。パフォーマンスをさらに向上させるために、最初のモーメントのパターンを注意深く研究したところ、単一のテンソルに多くの外れ値があることがわかりました。

これまでの研究では、パラメータとアクティベーション値の外れ値パターンについていくつかの研究を行ってきましたが、パラメータの分布は比較的滑らかですが、アクティベーション値はチャネル分布の特徴を持っています。この記事では、オプティマイザ状態での外れ値の分布が複雑で、一部のテンソルでは外れ値が固定行に分布し、他のテンソルでは外れ値が固定列に分布していることがわかりました。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

Row-first ブロック正規化は、外れ値が列方向に分布しているテンソルでは困難に直面する可能性があります。したがって、この論文では、追加のメモリ オーバーヘッドを制御可能な範囲内に保ちながら量子化誤差を削減できる、ブロック サイズ 128 のより小さいブロックを使用することを提案します。以下の図は、さまざまなブロック サイズの量子化誤差を示しています。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

2次モーメントの圧縮方法

2次モーメントの量子化は1次モーメントに比べて難しく、不安定性をもたらします。トレーニング。この論文では、ゼロ点問題が 2 次モーメントの定量化における主なボトルネックであると判断し、さらに、条件の悪い外れ値分布に対する改良された正規化手法、ランク 1 正規化を提案します。この記事では、2次モーメントの分解法(因数分解)も試みます。

ゼロ点問題

パラメータ、活性化値、勾配の量子化では、多くの場合ゼロ点が不可欠です。また、量子化後の周波数が最も高くなる点でもあります。ただし、Adam の反復式では、更新のサイズは 2 番目のモーメントの -1/2 乗に比例するため、ゼロ付近の範囲の変更は更新のサイズに大きな影響を与え、不安定になります。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

次の図は、量子化前後のアダムの 2 次モーメント - 1/2 乗の分布をヒストグラムの形式で示しています。 h (v) =1/(√v 10^(-6) )。ゼロが含まれる場合 (図 b)、ほとんどの値が 10^6 まで押し上げられ、大きな近似誤差が生じます。簡単なアプローチは、動的指数マップ内のゼロを削除することです。そうすることで (図 c)、2 番目のモーメントの近似がより正確になります。実際の場面では、精度の低い数値の表現力を有効に活用するために、ゼロ点を除去した線形写像を用いることを提案し、実験で良好な結果を得た。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

##ランク 1 の正規化

に基づくこの記事では、1 次モーメントと 2 次モーメントの複雑な外れ値分布を分析し、SM3 オプティマイザーからインスピレーションを得て、ランク 1 正規化という新しい正規化方法を提案します。非負の行列テンソル x∈R^(n×m) の場合、その 1 次元統計量は次のように定義されます:

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

そしてランク-1 正規化は次のように定義できます:

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

rank-1 正規化はテンソルの 1 次元をよりきめ細かい方法で利用します 行を処理するための情報- 単位または列単位の外れ値をよりインテリジェントかつ効率的に検出します。さらに、ランク 1 正規化は高次元テンソルに簡単に一般化でき、テンソル サイズが増加するにつれて、生成される追加のメモリ オーバーヘッドはブロック正規化よりも小さくなります。

さらに、この記事では、Adafactor オプティマイザーの 2 次モーメントの低ランク分解メソッドがゼロ点問題を効果的に回避できることがわかりました。分解および量子化方法も検討されました。以下の図は、二次モーメントの一連のアブレーション実験を示しており、ゼロ点問題が二次モーメントの定量化のボトルネックであることを確認し、ランク 1 正規化と低ランク分解法の有効性を検証しています。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

実験結果

観察された現象と使用された方法に基づいて、研究は最終的に 2 つの低レベルを提案しました。 - 精度オプティマイザー: 4 ビット AdamW および 4 ビット Factor、および 8 ビット AdamW、Adafactor、SM3 を含む他のオプティマイザーとの比較。研究は、自然言語理解、画像分類、機械翻訳、大規模モデルの命令の微調整など、幅広いタスクに関する評価のために選択されました。以下の表は、さまざまなタスクにおける各オプティマイザーのパフォーマンスを示しています。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

NLU、QA、NLG、4- を含むすべての微調整タスクで次のことがわかります。 bit オプティマイザーは 32 ビット AdamW と同等かそれを超えることができ、すべての事前トレーニング タスクにおいて、CLS、MT、および 4 ビット オプティマイザーは完全な精度に匹敵するレベルに達します。命令を微調整するタスクから、4 ビット AdamW が事前トレーニングされたモデルの能力を破壊せず、同時に命令に従う能力をより良く獲得できることがわかります。

その後、4 ビット オプティマイザーのメモリと計算効率をテストしました。結果を次の表に示します。 8 ビット オプティマイザーと比較して、この記事で提案する 4 ビット オプティマイザーはより多くのメモリを節約でき、LLaMA-7B 微調整実験では最大 57.7% の節約が可能です。さらに、計算効率に影響を与えることなくメモリを節約できる 4 ビット AdamW の融合演算子バージョンも提供しています。 LLaMA-7B の命令微調整タスクの場合、4 ビット AdamW はキャッシュ負荷の軽減によりトレーニングに高速化効果ももたらします。詳細な実験設定と結果は論文のリンクにあります。

LLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案

コードを 1 行置き換えて PyTorch で使用します

import lpmmoptimizer = lpmm.optim.AdamW (model.parameters (), lr=1e-3, betas=(0.9, 0.999))

これは、ボックス 4 ビット オプティマイザーの場合は、元のオプティマイザーを 4 ビット オプティマイザーに置き換えるだけで済みます。現在、Adam と SGD の低精度バージョンがサポートされています。同時に、カスタマイズされた使用シナリオをサポートするために、量子化パラメータを変更するためのインターフェイスも提供します。

以上がLLaMA 微調整によりメモリ要件が半分に削減、清華社は 4 ビット オプティマイザを提案の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。