「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ニュース

「生成AIにおける高度なエンコーダとデコーダの力」

はじめに 人工知能のダイナミックな領域では、技術と創造性の融合が人間の想像力の限界を押し上げる革新的なツールを生み出し...

機械学習

ニューラルネットワークにおける活性化関数の種類

ニューラルネットワークの活性化関数は、ディープラーニングの重要な部分であり、トレーニングモデルの精度と効率を決定しま...

機械学習

AIがYouTubeの多言語吹替を開始します

世界最大の動画共有プラットフォームであるYouTubeは、AI技術の統合により、コンテンツクリエイターが世界中の観客と接触する...

AI研究

カールスルーエ工科大学(KIT)の研究者たちは、深層学習を用いた降水マッピングに取り組み、空間および時間の分解能向上に向けて進化させました

気候変動のため、特に激しい降水イベントがより頻繁に起こると予想されています。洪水や地滑りなどの多くの自然災害は、激し...

機械学習

高性能意思決定のためのRLHF:戦略と最適化

はじめに 人間の要因/フィードバックからの強化学習(RLHF)は、RLの原則と人間のフィードバックを組み合わせた新興の分野で...

人工知能

「6週間でCassandraにベクトル検索を追加するのにAIがどのように役立ったのか」

「DataStaxは、この基礎となるAI機能を追加するために迅速に動かなければなりませんでしたChatGPT、Copilot、および他のAIツ...