ホームページ >テクノロジー周辺機器 >AI >7B? 13B? 175B?大規模モデルのパラメータを解釈する

7B? 13B? 175B?大規模モデルのパラメータを解釈する

PHPz
PHPzオリジナル
2024-06-12 20:04:15768ブラウズ

大きなモデルのサイズも異なり、そのサイズはパラメーターの数によって測定されます。 GPT-3 には 175 億のパラメータがあり、Grok-1 にはさらに優れた 314 億のパラメータがあります。もちろん、ラマのような、パラメータの数が 70 億から 700 億の間にしかない、よりスリムなものもあります。

ここで言及されている 70B は、トレーニング データの量を指すのではなく、モデル内に密に詰め込まれたパラメーターを指す場合があります。これらのパラメータは小さな「脳細胞」のようなもので、パラメータが多ければ多いほど、モデルはより賢くなり、データ内の複雑な関係をよりよく理解できるようになります。これらの「脳細胞」を使用すると、モデルのタスクのパフォーマンスが向上する可能性があります。 ただし、多くの場合、特に大規模なモデルでは、これらのパラメーターが問題を引き起こす可能性があります。これらの「脳細胞」はタスクを処理するときに相互作用する可能性があり、モデルがデータ内の複雑な関係を理解することが困難になります。これらの「脳細胞」を使用すると、モデルのタスクのパフォーマンスが向上する可能性があります。 したがって、タスクに取り組むときにこれらのパラメータ間の関係を管理する方法を見つける必要があります。一般的に使用される方法は、正則化によるものです。これらの大規模なモデルのパラメーターは、複雑なアルゴリズムとトレーニング プロセスを通じて、少しずつ構築されます。各パラメータには役割があり、それらが連携してモデルが言語をより正確に理解し、より適切な回答を提供できるようにします。

では、大規模モデルのパラメータはどのように構成されているのでしょうか?

1. 大規模モデルのパラメータ

これらの各部分には独自の目的があり、通常は次のカテゴリが含まれますが、これらに限定されません:

重み: 重みは神経のようなものです。ネットワーク内の「ワイヤー」が各ニューロンを接続します。信号伝達の「音量」を調整する役割を担っており、重要な情報はより遠くまで伝達し、重要でない情報はより静かに伝達します。たとえば、全結合層では、重み行列 W は、どの入力フィーチャが出力フィーチャに最も密接に関連しているかを示す「マップ」です。
  • バイアス: バイアスはニューロンの「小さなアシスタント」のようなもので、ニューロンの反応のベースラインを設定する責任があります。これにより、ニューロンはどのレベルで活動すべきかを知ることができます。
  • 注意パラメータ: Transformer ベースのモデルでは、これらのパラメータは「コンパス」のようなもので、どの情報が最も注目に値するかをモデルに伝えます。これらには、クエリ マトリックス、キー マトリックス、値マトリックスなどが含まれており、大量の情報の中から最も重要な「手がかり」を見つけるのに似ています。
  • 埋め込み行列: テキスト データを処理する場合、埋め込み行列はモデルの「辞書」になります。各列は単語を表し、単語を表すために数字が使用されます。このようにして、モデルはテキストの意味を理解できます。
  • 非表示状態の初期化パラメータ (初期非表示状態パラメータ): これらのパラメータは、どこから「思考」を開始するかをモデルに知らせるためにモデルのトーンを設定するのと同じように、モデルの初期の非表示状態を設定するために使用されます。
  • ......
  • これらのパラメータは通常、次の 4 つの式と格納形式を使用します。

Float: 32 ビット浮動小数点数、つまり 4 バイト
  1. Half/BF16: 16 ビット浮動小数点数、つまり 2 バイト
  2. Int8: 8 ビット整数、つまり 1 バイト
  3. Int4: 4 ビット整数、つまり 0.5 バイト
  4. 一般的に言えば、パラメータの数が影響を与える主な要素です大型モデルのパフォーマンス。たとえば、13B-int8 モデルは、同じアーキテクチャの 7B-BF16 モデルよりも一般に優れています。

2. 大規模なモデルパラメータのメモリ要件

エンジニアにとって直面するのは、大規模なモデルのトレーニングまたは推論中にどれだけのメモリリソースが使用されるかということです。 V100 (32 GB の GPU メモリを搭載) または A100 (40 GB の GPU メモリを搭載) は非常に強力ですが、Tensorflow や PyTorch などを使用して大規模なモデルを単一の GPU でトレーニングすることはできません。

2.1 トレーニングフェーズのメモリ要件

モデルのトレーニング中、主にモデルのステータスとアクティビティプロセスのメモリストレージ要件に反映されます。モデルの状態は、オプティマイザーの状態、勾配、パラメーターで構成されるテンソルで構成されます。アクティブなプロセスには、後方チャネルでの勾配計算に必要な、前方チャネルで作成されたテンソルが含まれます。 メモリ使用量を最適化するには、次の点を考慮できます。 1. モデル パラメーターの数を減らす: モデル サイズを小さくしたり、スパース行列などの手法を使用したりすることで、パラメーターの数を減らし、メモリ使用量を減らすことができます。 2. オプティマイザ状態の保存: すべての状態を保存するのではなく、必要なオプティマイザ状態のみを保存することを選択できます。オプティマイザーの状態は、必要に応じて選択的に更新および保存できます。 3. テンソルのデータ型を変更します:

トレーニング中のいつでも、各モデル パラメーターに対して、保存するのに十分な GPU メモリが常に必要です:

  • 安定したトレーニングを維持し、数値の異常を回避するために、モデル パラメーターによってコピーされるバイト数。
  • これは、トレーニング中にすべてのモデルのステータスとプロセス データを保存するには、次のメモリが必要であることを意味します: (x+y+12) * model_size
  • 2.2 推論フェーズのメモリ要件

推論フェーズは、pre-テキスト生成や翻訳などの訓練された LLM タスク。ここで、メモリ要件は通常低くなり、主な影響要因は次のとおりです:

限られたコンテキスト: 推論は通常、より短い入力シーケンスを処理するため、より小さいテキストの塊に関連付けられたアクティベーションを保存するために必要なメモリが少なくなります。

逆伝播なし: 推論中、LLM はパラメータを調整するためのトレーニングに使用される手法である逆伝播の中間値を保存する必要がありません。これにより、メモリのオーバーヘッドが大幅に軽減されます。
  • 推論フェーズでは、同じパラメーター数とタイプのトレーニング フェーズに必要なメモリの 4 分の 1 より多くのメモリは必要ありません。たとえば、7B モデルの場合、一般的に、浮動小数点精度を使用するには 28 GB のメモリが必要で、BF16 精度を使用するには 14 GB のメモリが必要で、int8 精度を使用するには 7 GB のメモリが必要です。この大まかな推定方法は、モデルの他のバージョンにも適宜適用できます。
  • また、特定のタスクに合わせて LLM を調整する場合、微調整にはより多くのメモリ フットプリントが必要になります。通常、微調整には、ターゲット タスクのニュアンスを把握するために、より長いトレーニング シーケンスが含まれます。これにより、LLM がより多くのテキスト データを処理するため、より大きなアクティベーションが発生します。逆伝播プロセスでは、勾配計算に使用される中間値の保存が必要です。これは、トレーニング中にモデルの重みを更新するために使用されます。これにより、推論に比べてメモリ負荷が大幅に増加します。

2.3 Transformer に基づく大規模モデルのメモリ推定

具体的には、Transformer に基づく大規模モデルの場合、トレーニングに必要なメモリを計算してみます。注目の頭数

b: バッチサイズ

s: 系列長

    h: 隠れ層の次元サイズ
  • p: 精度
  • ここで、bshp = b * s * h * pは、のサイズの入力データ。変圧器の線形層部分では、その後の起動に約 9bshp+bsh のスペースが必要です。アテンションの部分では、セルフアテンションは次のように表現できます。softmax((XQ)(XK)^T)XV
  • すると、XQ、XK、および XV はすべて bshp サイズのスペースを必要とします。標準的なセルフアテンションでは、(XQ) * (XK) ^ T を乗算した結果は、ロジットを含む b * s * s 行列にすぎません。ただし、実際には、マルチヘッド アテンション メカニズムを使用しているため、ヘッドごとに個別の s * s ストレージ スペースを確立する必要があります。これは、abssp バイトのスペースが必要であり、ソフトマックスの出力の保存にも abssp バイトが必要であることを意味します。ソフトマックスの後は、通常、マスクを保存するために追加の abss バイトが必要となるため、attention 部分には 2abssp+abss のストレージ スペースが必要です。
  • さらに、トランスには 2 つの Norm レイヤーがあり、それぞれが依然として bshp ストレージ スペースを必要とし、合計 2 bshp になります。
  • つまり、Transformer に基づく大規模なモデルのトレーニングに必要なメモリはおよそ次のとおりです: L(9bshp+bsh+2abssp+abss +2bshp) = Lbshp[16+2/p+(as/h)(2+1/p)]
Transformer に基づいて大規模なモデルをトレーニングするために必要なメモリはおおよそ次のとおりであることを説明します: モデルの層数 x トレーニング バッチのサイズ x シーケンスの長さ x 隠れ層の次元 x 精度 理論的な下限トレーニング中のモデルパラメータのメモリ要件について。

3. 大規模なモデル パラメーターの GPU 要件

大規模なモデル パラメーターのメモリ要件を使用して、大規模なモデルのトレーニングと推論に必要な GPU の数をさらに見積もることができます。ただし、GPU の数の推定はもう少し多くのパラメーターに依存するため、誰か (Walid Soula 博士、https://medium.com/u/e41a20d646a8) が大まかな推定のための簡単な式を示しました。これは、エンジニアリング。

picture

ここで、

モデルのパラメータ(単位:億)は、Bのモデルパラメータの数です。

18は、トレーニング中のさまざまなコンポーネントのメモリ使用率です。

1.25は、必要なアクティブ化プロセスのメモリ量を表します。 Factor,Activation は、モデルが入力データを処理するにつれて変化する動的データ構造です。 7B? 13B? 175B?大規模モデルのパラメータを解釈するGPU サイズ (GB) は、利用可能な GPU メモリの合計量です

実際の例として、24GB の VRAM を備えた NVIDIA RTX 4090 GPU を使用していると仮定して、「Llama3 7B」のトレーニングに必要な GPU の数を計算します。 ' モデル、おおよそ:

    GPU の総数≈(7 * 18 * 1.25)/24、これは 7 にほぼ等しい
  • 推論の場合、トレーニング段階の 1/8 ~ 1/9 に単純化できます。もちろん、これらは一般的な意味での概算にすぎません。

    4. 大規模なモデル パラメーターから分散トレーニングへ

    大規模なモデル パラメーターの構成と、そのメモリと GPU の要件を理解することは、エンジニアリングの実践における分散トレーニングが直面する課題を深く理解するのに役立ちます。

    分散トレーニング戦略の実装プロセスは、豊富なツールと API を提供する TensorFlow や PyTorch など、分散トレーニング用に設計されたフレームワークを採用することで大幅に簡素化できます。モデルを更新する前に勾配累積などの手法を使用するか、勾配圧縮などの手法を使用してノード間のデータ交換量を削減することにより、通信コストを効果的に削減できます。分散トレーニングの最適なバッチ サイズ (前述のパラメーター b) を決定することが重要です。a b の値が小さすぎると通信オーバーヘッドが増加する可能性があり、値が大きすぎるとメモリ不足が発生する可能性があります。

    LLMOps の重要性はますます高まっています。分散トレーニング用に構成されたパフォーマンス指標を定期的に監視し、ハイパーパラメーター、パーティショニング戦略、通信設定を調整してパフォーマンスを最適化することが、トレーニング効率を向上させる鍵となります。モデルにチェックポイント メカニズムを実装し、障害が発生した場合に効率的に回復することで、トレーニング プロセスを最初から開始することなく確実に継続できます。

    言い換えると、大規模モデルのトレーニング/推論は、本質的には次のような複雑な分散システム アーキテクチャのエンジニアリングの課題です。

    • 通信オーバーヘッド: 勾配計算とデータ更新を実行する際、通信に必要な時間が全体的な高速化効果に影響を与える可能性があります。 。
    • 同期の複雑さ: 複数のマシンが並行してトレーニングされる場合、同期の複雑さは慎重に設計する必要があります。
    • フォールトトレランスとリソース管理: モデルのトレーニングと推論、および CPU と GPU のリソース割り当てとスケジューリング戦略に対する単一点障害の影響。
    • ...

    しかし、実際には、ほとんどのエンジニアは特定のトレーニング作業には直接関与せず、アプリケーションを構築する際に大規模なモデルのパラメーターをどのように利用するかに重点を置いている可能性があります。

    7B? 13B? 175B?大規模モデルのパラメータを解釈する写真

    5. 大規模モデルアプリケーションで使用されるパラメータ

    ここでは主に、大規模モデルを使用してテキストを出力するときに設定できる 3 つのパラメータ、温度、Top-K、Top-P に焦点を当てます。

    温度パラメータは、モデルの創造性を制御するだけのスイッチであるとよく誤解されますが、実際には、そのより深い役割は、確率分布の「柔らかさ」を調整することです。温度値を高く設定すると、確率分布がより柔らかく均一になり、モデルがより多様で創造的な出力を生成することが促進されます。逆に、温度値が低いほど、分布がよりシャープになり、ピークがより明確になり、トレーニング データと同様の出力が生成される傾向があります。

    Top-K パラメーターは、各ステップで最も可能性の高い Top-K トークンを出力するようにモデルを制限するために使用されます。これにより、出力内の一貫性のないコンテンツや無意味なコンテンツを減らすことができます。この戦略は、出力の可能な限り最高の一貫性を維持しながら、ある程度の創造的なサンプリングを可能にすることの間のバランスを生み出します。

    Top-P は、設定された P 値 (0≤P≤1) に基づいて、累積確率が P 値を超える単語の最小セットを出力として選択する別の復号方法です。この方法では、次の単語の確率分布に基づいて、選択される単語の数を動的に増減できます。特に、P 値が 1 の場合、Top-P はすべての単語を選択します。これは分布全体からサンプリングすることと同等であり、それによってより多様な出力が生成されます。一方、P 値が 0 の場合、Top-P は単語のみを選択します。最も高い確率で、貪欲なデコードと同様に、出力がより集中的で一貫性のあるものになります。

    これら 3 つのパラメーターは連携してモデルの動作に影響を与えます。たとえば、Temperature=0.8、Top-K=36、Top-P=0.7 と設定すると、モデルはまずコンテキストに基づいて語彙全体の完全な非正規化対数確率分布を計算します。温度=0.8 は、各対数確率が 0.8 で除算されることを意味します。これにより、正規化前のモデルの予測における信頼性が効果的に高まります。 Top-K=36 は、周波数比対数確率が最も高い 36 個のマーカーを選択することを意味します。次に、Top-P=0.7 は、この Top-K=36 セットにフィルタリングを適用し、累積確率が 0.7 に達するまで、高確率から低確率への並べ替えを続けます。最後に、このフィルタリングされたセットは再正規化され、後続のサンプリング プロセスで使用されます。

    6. まとめ

    エンジニアリングの実践においては、大規模なモデルのパラメータを理解することが重要です。パラメータは、大規模モデルの動作、パフォーマンス、実装コスト、およびリソース要件を定義する決定的な役割を果たします。エンジニアリングにおいて大規模モデルのパラメータを理解するということは、モデルの複雑さ、パフォーマンス、機能の間の関係を把握することを意味します。ストレージとコンピューティングの観点からこれらのパラメーターを適切に構成および最適化すると、実際のアプリケーションでモデルをより適切に選択および最適化し、さまざまなタスク要件やリソース制約に適応できます。

    【参考】

    • ZeRO: 兆パラメータ モデルのトレーニングに向けたメモリの最適化、https://arxiv.org/pdf/1910.02054v3.pdf
    • 大規模変圧器モデルのアクティベーション再計算の削減、https://arxiv.org/pdf/2205.05198.pdf
    • https://timdettmers.com/2023/01/30/what-gpu-for-deep-learning/
    • https://blog.eleuther.ai/transformer-math/

以上が7B? 13B? 175B?大規模モデルのパラメータを解釈するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。