「AWS Trainiumを使用した高速で費用効果の高いLLaMA 2の微調整」
「AWS Trainiumを活用した高速でコストパフォーマンスの高いLLaMA 2の微調整」
大型言語モデル(LLM)は、開発者、科学者、技術者、起業家、経営者など、さまざまな業界の人々の興味と関心を引きつけています。これらのモデルは、対話エージェントのカスタマーサポート、マーケティングのためのコンテンツ作成、コーディングアシスタントなどの応用において、質問応答、要約、翻訳などに使用することができます。
最近、Metaは研究者と商業企業の両方向けにLlama 2をリリースしました。これは、MosaicMLのMPTやFalconを含む他の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の一般的なスクリプトを使用しています。
- 「Amazon SageMaker JumpStartを使用してFalconでHCLS文書要約アプリケーションを作成する」
- 「時系列予測と再帰型ニューラルネットワーク」
- 「Googleバードを効果的に使用する5つの方法」
トレーニング環境では、分散トレーニングとスケジューリングを行うために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のシーケンス長ごとに、batchsize
やgradient_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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「すべてのビジネスが生成的AIを受け入れるのを支援するための新しいツールを発表します」と発表します
- 「グラフ彩色の魅力的な世界を探索する」
- 「ファウンデーションモデルの安全で準拠した利用を可能にする生成AIゲートウェイを作成する」
- 「Amazon SageMaker Canvas UIとAutoML APIを使用して、時系列の予測を最大50%高速化しましょう」
- 「CDS HooksとAWS HealthLakeを使用してCRDを自動化して事前承認を行う」
- AIにおける幻覚の克服:事実に基づく強化学習ハイブリッドフレームワークが大規模な多モーダルモデルのビジョン・言語の整合性を最適化する方法
- 『Qwen Large Language Models(LLMs)Seriesについて知っておくべきすべて』