Amazon Web Services ブログ
AWS Trainium、AWS Inferentia が AWS 上の Llama 3.1 モデルに高性能と低コストを提供
本日、AWS Trainium と AWS Inferentia による Llama 3.1 モデルのファインチューニングと推論のサポートを発表できることを嬉しく思います。Llama 3.1 ファミリーは、8B(80億)、70B(700億)、405B(4,050億)サイズの事前学習およびインストラクションチューニング済みの多言語大規模言語モデル(LLM)のコレクションです。
以前の投稿では、Amazon SageMaker JumpStart で AWS Trainium と Inferentia ベースのインスタンスに Llama 3 モデルをデプロイする方法について解説しました。今回の投稿では、AWS AI チップ上で そのコストパフォーマンスの利点と共に Llama 3.1 ファミリーのモデルのファインチューニング及びデプロイを実現する方法について概説します。
Llama 3.1 モデルの概要
Llama 3.1 ファミリーの多言語 LLM は、8B、70B、405B サイズの事前学習およびインストラクションチューニング済みの生成モデルのコレクションです(テキスト入力/テキストおよびコード出力)。すべてのモデルは長いコンテキスト長(128k)をサポートし、グループ化されたクエリアテンション(GQA)をサポートしているため、推論が高速です。
Llama 3.1 インストラクションチューニング済みモデル(8B、70B、405B)は多言語対話ユースケース向けに最適化されており、一般的な業界ベンチマークで多くの公開されているチャットモデルを上回るパフォーマンスを示します。これらは検索、画像生成、コード実行、数学的推論などの特定のツールのツールコールを生成するよう訓練されています。さらに、ゼロショットのツール使用もサポートしています。
Llama 3.1 405B は、Meta によると世界最大の公開利用可能な LLM です。このモデルは人工知能(AI)の新しい基準を設定し、エンタープライズレベルのアプリケーションや研究開発に理想的です。合成データ生成のようなタスクに適しており、モデルの出力をファインチューニング後に小規模な Llama モデルの改善に使用したり、405Bモデルから小規模モデルへの知識転移のためのモデル蒸留(distillations)に使用したりできます。このモデルは、一般知識、長文テキスト生成、多言語翻訳、機械翻訳、コーディング、数学、ツール使用、強化された文脈理解、高度な推論と意思決定において優れています。
アーキテクチャ的には、Llama 3 と Llama 3.1 のコア LLMは 同じ密(dense)なアーキテクチャです。これらは最適化されたトランスフォーマーアーキテクチャを使用する自己回帰言語モデルです。ファインチューニングされたバージョンは、有用性と安全性に関する人間の選好に合わせるために、教師ありファインチューニング(SFT : supervised fine-tuning )と人間のフィードバックによる強化学習(RLHF : einforcement learning with human feedback)を使用しています。
Meta の責任ある使用ガイドは、モデルをカスタマイズし最適化するために必要な追加のファインチューニングを、適切な安全性対策とともに実装する際に役立ちます。
AWS Trainium が Amazon Bedrock と Amazon SageMaker で Llama 3.1 を強化
AWS で Llama 3.1 を始める最速の方法は、目的に特化した AI インフラストラクチャ(AWS Trainium を含む)を利用するAmazon Bedrock です。完全に管理された API を通じて、Amazon Bedrock は目的に特化した AI インフラストラクチャの利点を提供し、これらの強力なモデルへのアクセスを簡素化するため、差別化された AI アプリケーションの構築に集中できます。
基盤となるリソースをより細かく制御する必要がある場合は、SageMakerでLlama 3.1モデルをファインチューニングおよびデプロイできます。SageMaker JumpStart での Llama 3.1 の Trainium サポートは近日公開予定です。
AWS Trainium と AWS Inferentia2 が Llama 3.1 モデルの高性能と低コストを実現
トレーニングと推論のための独自の ML パイプラインを構築して、より高い柔軟性と制御を得たい場合は、Amazon Elastic Compute Cloud(Amazon EC2)Trn1 および Inf2 インスタンスを使用して AWS AI チップ上で Llama 3.1 を開始できます。AWS Neuron SDK を使用して新しい Llama 3.1 8B/70B モデルを開始する方法を見てみましょう。
Trainium 上で Llama 3.1 をファインチューニング
Llama 3.1 8B または Llama 3.1 70B のファインチューニングを開始するには、NeuronX Distributed ライブラリを使用可能です。NeuronX Distributed は、より一般的な分散トレーニングおよび推論技術の実装を提供します。
ファインチューニングを開始するには、以下のサンプルを使用できます:
両方のサンプルは、Trainium クラスターインフラストラクチャを管理する AWS ParallelCluster と、ワークロード管理のためのSlurm の上に構築されています。以下は Llama3.1 70B のトレーニングを開始するための Slurm コマンドの例です:
Slurm スクリプト内で、クラスター上で分散トレーニングプロセスを起動します。ランナースクリプトでは、Metaが提供する事前学習済みの重みと設定をロードし、トレーニングプロセスを開始します:
Inferentia2 上で Llama 3.1 をデプロイ
モデルのデプロイ準備ができたら、以前の Llama 3 8B Neuron サンプルコードでモデルIDを更新することでデプロイできます。
同様のサンプル推論コードを使用できます:
ステップバイステップの詳細については、新しい Llama 3.1 のサンプルを参照してください:
- Meta Llama 3.1 8B
- Meta Llama 3.1 70B
- Meta Llama 3.1 8B 32k
- Meta Llama 3.1 405B on Trainium は近日公開予定です
また、Hugging Face の Optimum Neuron ライブラリを使用して、Hugging Face Model Hub から SageMaker を通じて直接モデルをすばやくデプロイすることもできます。Llama 3.1 モデルカードハブから、「Deploy」(デプロイ)を選択し、次に「SageMaker」を選び、最後に「AWS Inferentia & Trainium」を選択します。サンプルコードを SageMaker ノートブックにコピーし、「Run」(実行)を選択します。
さらに、vLLM を使用してモデルをデプロイしたい場合は、 continuous batching ガイドを参照して環境を作成できます。環境を構築した後、vLLM を使用して AWS Trainium または Inferentia に Llama 3.1 8B/70B モデルをデプロイできます。以下は Llama 3.1 8B をデプロイする例です:
結論
AWS Trainium と Inferentia は、Llama 3.1 モデルのファインチューニングとデプロイを高性能かつ低コストで提供可能です。これらの強力なモデルと目的に特化した AI インフラストラクチャを使用して、差別化された AI アプリケーションを構築する方法を見るのが楽しみです。AWS AI チップの使用開始方法の詳細については、AWS Neuron ドキュメントのモデルサンプルとチュートリアルを参照してください。
翻訳は Annapurna Labs の常世が担当しました。原文はこちらです。