「AWS Trainiumを使用した高速で費用効果の高いLLaMA 2の微調整」

「AWS Trainiumを活用した高速でコストパフォーマンスの高いLLaMA 2の微調整」

大型言語モデル(LLM)は、開発者、科学者、技術者、起業家、経営者など、さまざまな業界の人々の興味と関心を引きつけています。これらのモデルは、対話エージェントのカスタマーサポート、マーケティングのためのコンテンツ作成、コーディングアシスタントなどの応用において、質問応答、要約、翻訳などに使用することができます。

最近、Metaは研究者と商業企業の両方向けにLlama 2をリリースしました。これは、MosaicMLのMPTFalconを含む他のLLMのリストに加わるものです。この記事では、LLMのトレーニング時間とコストを削減するために専用のアクセラレータであるAWS Trainium上でLlama 2をファインチューニングする方法、AWS Neuron SDK (NeMo Megatron-LMを使用) が提供するファインチューニングスクリプト、使用したさまざまな設定、そして見られたスループットの結果について解説します。

Llama 2モデルについて

Llama 1モデルやGPTのような他のモデルと同様に、Llama 2はTransformerのデコーダー専用アーキテクチャを使用しています。3つのサイズで提供されており、7兆、13兆、70兆のパラメータを持っています。Llama 1と比較して、Llama 2はコンテキストの長さを2,000から4,000に倍増させ、グループ化クエリアテンション(70兆の場合のみ)を使用しています。Llama 2の事前学習モデルは2兆トークンで学習され、ファインチューニングモデルは100万以上の人間の注釈で学習されています。

Llama 2の分散トレーニング

2,000と4,000のシーケンス長でLlama 2を用いるために、NeMo Megatronを使用してデータ並列化(DP)、テンソル並列化(TP)、およびパイプライン並列化(PP)をサポートするスクリプトを実装しました。具体的には、単語埋め込み、回転埋め込み、RMSNorm、Swiglu活性化などのいくつかの新機能の実装により、Llama 2トレーニングスクリプトのサポートにGPT Neuron Megatron-LMの一般的なスクリプトを使用しています。

トレーニング環境では、分散トレーニングとスケジューリングを行うためにNeMoフレームワークの下で管理されているマルチインスタンスクラスタを使用します。

まず、Llama 2モデルとトレーニングデータセットをダウンロードし、Llama 2トークナイザを使用して前処理を行います。たとえば、RedPajamaデータセットを使用する場合、次のコマンドを使用します:

wget https://data.together.xyz/redpajama-data-1T/v1.0.0/book/book.jsonlpython nemo/scripts/nlp_language_modeling/preprocess_data_for_megatron.py

モデルのダウンロードと前処理スクリプトの引数の詳細なガイダンスについては、Download LlamaV2 dataset and tokenizerを参照してください。

次に、モデルをコンパイルします:

sbatch --nodes 4 compile.slurm ./llama_7b.sh

モデルがコンパイルされたら、次のスクリプトを使用して最適な設定とハイパーパラメータが組み込まれたLlama 2のトレーニングジョブを起動します(例のコードに含まれています):

sbatch --nodes 4 run.slurm ./llama_7b.sh

最後に、TensorBoardを監視してトレーニングの進捗状況を追跡します:

tensorboard --logdir ./

言及した完全なサンプルコードとスクリプトについては、Llama 7BのチュートリアルおよびNeuron SDKのNeMoコードを参照して、詳細な手順を確認してください。

ファインチューニングの実験

OSCRA(Open Super-large Crawled ALMAnaCH coRpus)とQNLI(Question-answering NLI)のデータセットで7BモデルをNeuron 2.12環境(PyTorch)でファインチューニングしました。2,000と4,000のシーケンス長ごとに、batchsizegradient_accumulationなどの設定を最適化してトレーニング効率を向上させました。ファインチューニング戦略として、すべてのパラメーター(約500ステップ)の完全なファインチューニングを採用しました。この戦略は、より長いステップと大規模なデータセット(たとえば、1T RedPajama)によるより長時間のプレトレーニングに拡張することができます。NeMo Megatronを使用して、4,000のより大きなシーケンス長でモデルのファインチューニングが成功するように、シーケンス並列処理も有効にすることができます。以下の表は、Llama 7Bのファインチューニング実験の設定とスループットの結果を示しています。スループットは、インスタンス数が4まで増加するにつれてほぼ線形にスケールします。

分散ライブラリ データセット シーケンス長 インスタンス数 テンソルパラレル データパラレル パイプラインパラレル グローバルバッチサイズ スループット(seq/s)
Neuron NeMo Megatron OSCAR 4096 1 8 4 1 256 3.7
. . 4096 2 8 4 1 256 7.4
. . 4096 4 8 4 1 256 14.6
. QNLI 4096 4 8 4 1 256 14.1

最後のステップは、ベースモデルでの正確性を検証することです。GPU実験のための参照スクリプトを実装し、GPUとTrainiumのトレーニングカーブが一致することを確認しました。以下の図は、QNLIデータセットでのトレーニングステップの数に対する損失カーブを示しています。GPUでは混合精度(青色)が採用され、Trainiumではデフォルトのストキャスティック丸めとbf16(オレンジ色)が採用されました。

トレーニングカーブ

結論

この記事では、TrainiumがLlama 2の高性能で費用効果の高い微調整を提供することを示しました。Trainiumを使用してNeMo Megatronを利用した分散事前学習とジェネレーティブAIモデルの微調整に関するリソースについては、AWS Neuron Reference for NeMo Megatronを参照してください。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI研究

「自己教師あり学習とトランスフォーマー? - DINO論文の解説」

「一部の人々は、Transformerのアーキテクチャを愛し、それをコンピュータビジョンの領域に歓迎しています他の人々は、新しい...

機械学習

「ステーブル拡散」は実際にどのように機能するのでしょうか?直感的な説明

この短い記事では、初心者に対して安定した拡散(Stable Diffusion)が直感的にどのように機能するかを説明していますこれは...

人工知能

「製造業におけるAIの10の注目すべきユースケース」

現代製造業の急速な進化の中で、人工知能(AI)の導入が類を見ない革命を引き起こしました。本記事では、製造業におけるAIの...

AI研究

「サリー大学の研究者が開発した新しいソフトウェアは、AIが実際にどれだけの情報を知っているかを検証することができます」

ここ数年、人工知能(AI)のドメインでいくつかの技術的なブレークスルーがあり、いくつかの産業やセクターに深い影響を与え...

機械学習

「Mozilla Common Voiceにおける音声言語認識 — 音声変換」

これは、Mozilla Common Voiceデータセットに基づく話し言葉認識に関する3番目の記事です第1部では、データの選択とデータの...

AIニュース

「デリー政府、提案された電子都市にAIハブを建設する計画」

技術の進歩に向けた重要な一歩として、デリー政府は提案された電子都市にAIハブを構築することを計画しています。この都市は...