費用効率の高いGPT NeoXおよびPythiaモデルの訓練における節約と正確性:AWS Trainiumの活用
『AWS Trainiumの活用による、費用効率の高いGPT NeoXおよびPythiaモデルの訓練における節約と正確性』
大型言語モデル(LLMs)は、日常的な会話のトピックになっています。その採用の速さは、100万人のユーザーに達するのにかかる時間が「Facebookで4.5年」から「ChatGPTでわずか2か月」までと、過去最低になったことからも明らかです。ジェネレーティブプリトレーニングトランスフォーマー(GPT)は、因果自己回帰の更新を使用して予測を行います。これらのモデルアーキテクチャによって、音声認識、テキスト生成、質問応答などさまざまなタスクが驚異的な性能を示すことが実証されています。最近のいくつかのモデル(NeoX、Falcon、Llama)は、バックボーンとしてGPTアーキテクチャを使用しています。LLMsのトレーニングには膨大な計算時間が必要であり、数百万ドルの費用がかかります。この記事では、AWS Trainiumというディープラーニングトレーニングに最適化された特別な機械学習(ML)アクセラレータであるAWS Trainium上のGPT NeoXのトレーニング手順を要約します。AWS Trainiumを使用して、モデルの品質を損なうことなく、3.2 Mトークン/$のコスト効果的にこのようなモデルをトレーニングした方法を紹介します。
ソリューションの概要
GPT NeoXとPythiaモデル
GPT NeoXとPythiaは、Eleuther-AIが開発したオープンソースの因果関係言語モデルで、NeoXは約200億のパラメータを、Pythiaは69億を持っています。どちらもChat GPT3と同じようなアーキテクチャデザインに従ったデコーダーモデルです。しかし、これらのモデルには多くの追加機能もあり、Llamaなどの最近のモデルでも広く採用されています。特に、ヘッド次元全体にわたる部分的な回転を持つ回転位置埋め込み(ROPE)があります。元のモデル(NeoXとPythia 6.9B)は、Pileデータセットを使用してdeduplicationおよびMegatronおよびDeepspeedバックエンドを利用してトレーニングされています。
私たちは、Neuron NeMoライブラリを使用して、AWS TrainiumベースのTrn1インスタンス上でこれらのモデルの事前トレーニングと微調整を実証します。コンセプトの証明と迅速な再現を確立するために、GPT2バイトペアエンコーディング(BPE)トークナイザを使用してトークン化された小さなウィキペディアデータセットのサブセットを使用します。
解説
次のように、トークン化されたウィキペディアデータセットをダウンロードします。
- このAI論文は、イギリスのインペリアルカレッジロンドンとEleuther AIが対話エージェントの行動を理解するための枠組みとしてロールプレイを探究しています
- 「Mixtral 8x7Bについて知っていること ミストラルの新しいオープンソースLLM」
- 「このAIニュースレターは、あなたが必要とするすべてです #77」
export DATA_DIR=~/examples_datasets/gpt2mkdir -p ${DATA_DIR} && cd ${DATA_DIR}wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-vocab.jsonwget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-merges.txtaws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/my-gpt2_text_document.bin . --no-sign-requestaws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/my-gpt2_text_document.idx . --no-sign-requestaws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/license.txt . --no-sign-request
NeoX 20BとPythia 6.9Bの両方は、部分的な回転を使用するROPEを使用しています。たとえば、ヘッドの寸法の25%を回転させ、残りの部分は回転させません。AWS Trainiumアクセラレータで部分回転を効率的に実装するために、回転する寸法と回転しない寸法を連結する代わりに、回転しない寸法のためにゼロの周波数を追加し、その後、全体のヘッド寸法セットを回転させます。この単純なトリックにより、AWS Trainium上のスループット(処理されるシーケンス数/秒)を向上させることができました。
トレーニング手順
トレーニングを実行するために、私たちはSLURMで管理されたマルチノードAmazon Elastic Compute Cloud(Amazon EC2)のTrn1クラスターを使用しています。各ノードにはtrn1.32xlインスタンスが含まれています。各trn1.32xlには、アクセラレータが16個あり、アクセラレータあたり2つのワーカーがあります。最新のNeuron NeMoパッケージをダウンロードした後、最適化されたハイパーパラメータを使用して、提供されたneoxおよびpythiaの事前学習および微調整スクリプトを実行し、4ノードトレーニングのために以下を実行してください。
-
コンパイル:モデルを3回のトレーニングイテレーションで事前コンパイルしてグラフを生成および保存します。
sbatch --nodes 4 compile.slurm ./neoX_20B_slurm.sh
-
実行:キャッシュされたグラフをロードしてトレーニングを実行します
sbatch --nodes 4 run.slurm ./neoX_20B_slurm.sh
-
結果のモニタリング
tensorboard --logdir=nemo_experiments/megatron_neox
同じ手順は、neox_20B_slurm.sh
をpythia_6.9B_slurm.sh
で置き換えてPythia 6.9Bモデルを実行するためにも行う必要があります。
事前学習および微調整の実験
私たちは、Neuron NeMoライブラリを使用してAWS Trainium上でGPT-NeoXおよびPythiaモデルの事前学習を10kイテレーションでデモンストレーションし、これらのモデルの1kステップでの微調整も示しています。事前学習では、NeMo内部のGPT2 BPEトークナイザーを使用し、オリジナルモデルで使用される設定と同じ手順に従います。AWS Trainiumでのファインチューニングでは、いくつかのパラメータ(例:ボキャブラリーサイズの分割係数)を変更する必要がありますが、これらはMegatronとNeMoの違いおよびGPUとAWS Trainiumの変更に対応するためにファインチューニングスクリプトで提供されています。ノードの数を変えた場合のマルチノード分散トレーニングのスループットに関する情報は、表1に示されています。
モデル | テンソル並列 | パイプライン並列 | インスタンス数 | コスト($/時間) | シーケンス長 | グローバルバッチサイズ | スループット(シーケンス/秒) | コストとスループットの比率(トークン/$) |
Pythia 6.9B | 8 | 1 | 1 | 7.59 | 2048 | 256 | 10.4 | 10,102,387 |
8 | 1 | 4 | 30.36 | 2048 | 256 | 35.8 | 8,693,881 | |
NeoX 20B | 8 | 4 | 4 | 30.36 | 2048 | 16384 | 13.60 | 3,302,704 |
8 | 4 | 8 | 60.72 | 2048 | 16384 | 26.80 | 3,254,134 | |
8 | 4 | 16 | 121.44 | 2048 | 16384 | 54.30 | 3,296,632 | |
8 | 4 | 32 | 242.88 | 2048 | 16384 | 107.50 | 3,263,241 | |
8 | 4 | 64 | 485.76 | 2048 | 16384 | 212.00 | 3,217,708 |
表1。 GPT NeoXとPythiaモデルの平均スループットを比較し、ノード数の変化によるトレーニングステップ500までの訓練の結果を比較します。 trn1.32xlの価格は、3年間の予約有効時間あたりのレートに基づいています。
次に、AWS Trainiumでのモデルトレーニングの損失の軌跡を評価し、Nvidia A100 GPUコアを使用したP4dクラスタでの対応する実行と比較します。トレーニングの損失に加えて、トレーニングの進行状況を監視するために、トレーニングの各イテレーションで計算されるモデル勾配の2ノルムといった有用な指標とも比較します。トレーニングの結果は、図1、2に示されており、NeoX 20Bのファインチューニングは図3に示されています。
図1。 GPUとTrainiumの4つのノードで小規模なウィキデータセット上でトレーニングされたNeoX 20Bのトレーニング損失(左)および勾配ノルム(右)。トレーニングのハイパーパラメータ(グローバルバッチサイズ=256)は、GPUとAWS Trainiumの両方で同じです。GPUはBF16とデフォルトの混合精度を使用し、AWS TrainiumはBF16を完全に使用しています。GPUとAWS Trainiumの損失と勾配ノルムの軌跡は一致しています。
図2。 GPUとTrainiumの4つのノードで小規模なウィキデータセット上でトレーニングされたPythia 6.9Bのトレーニング損失(左)および勾配ノルム(右)。図1のGPT NeoXと同様に、GPUとTrainiumの損失と勾配ノルムの軌跡は一致しています。
図3。 GPUおよびAWS TrainiumでGPT NeoX 20Bモデルのファインチューニングと、すべてのワーカーで平均化されたトレーニング損失(左)および勾配ノルム(右)。小規模なウィキデータセットを使用してファインチューニングのデモンストレーションを行っています。GPUとAWS Trainiumの損失と勾配ノルムの軌跡は一致しています。
この投稿では、AWSのディープラーニングハードウェアでの費用効果の高いLLMのトレーニングを紹介しました。 Neuron NeMoライブラリを使用して、AWS Trn1でGPT NeoX 20BおよびPythia 6.9Bモデルをトレーニングしました。 Trainiumを使用した20ビリオンモデルの費用正規化スループットは、約3.2Mトークン/$です。 AWS Trainiumでの費用効率の良いトレーニングに加えて、トレーニングステップの損失と勾配ノルムの軌跡からも同様のモデルの精度を得ることができます。また、AWS TrainiumでNeoX 20Bモデルの利用可能なチェックポイントもファインチューニングしました。AWS TrainiumでNeMo Megatronを使用した分散トレーニングの詳細については、NeMo Megatron用のAWS Neuronリファレンスを参照してください。 Llamaモデルのファインチューニングを始めるための良いリソースは、Llama2ファインチューニングで見つけることができます。 Amazon SageMakerで管理されたAWS Trainiumで始めるには、AWS TrainiumとAmazon SageMakerでMLモデルをトレーニングするを参照してください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「マシンラーニングプロジェクトで私が犯した同じ過ちを com 因さないでください!」
- 『クラウド上で大規模な言語モデルを使用する際の性能とコストの最適化戦略』
- 「LLMアプリを作成するための5つのツール」
- このAI論文は、コントロール可能なマルチビュー画像生成および3Dコンテンツ作成を革新するニューラルネットワークアーキテクチャー、MVControlを紹介しています
- 「これらの完全自動の深層学習モデルは、スマートフォンの統合を使用して、猫の苦痛指標スケール(FGS)を使用した痛み予測に使用できます」
- 「ハグフェース上のトップ10大きな言語モデル」
- メタAIは、オープンで創造的なAIモデルを使って倫理的に建設するために、パープルラマをコミュニティの支援として発表しました