このチュートリアルでは、大規模言語モデル(LLM)用の高性能 JAX ベースのトレーニング
スタックである MaxText を使用して、 Google Cloud 上の単一の v6e-8
Tensor Processing Unit(TPU)仮想マシン(VM)
インスタンスで
強化学習(RL)トレーニングを実行する手順について説明します。
ワークロードの概要
Cloud TPU でこの RL 事後トレーニング ワークロードを実行するには、次のコンポーネントが必要です。
モデル: Llama 3.1 8B Instruct(
llama3.1-8b-Instruct)。会話と指示に従うタスクに最適化されたオープンウェイト LLM です。このチュートリアルでは、モデルの重みが Hugging Face 形式から MaxText 互換形式(mt-format)に変換され、JAX を使用してv6e-8TPU で分散実行できるように準備されます。強化学習(RL)アルゴリズム: Group Relative Policy Optimization(GRPO)。ワークロードは、MaxText の組み込み RL トレーナーを使用して、スケーラブルな事後トレーニング パイプラインを実行します。GRPO では、同じプロンプトに対して生成された出力のグループを評価し、相対報酬を使用してアクター ポリシーを効率的に最適化することで、個別の値モデルやクリティック モデルが不要になります。
データセットとテンプレート: Grade School Math 8K(GSM8K)。言語的に多様な小学生の数学の文章問題で構成される高品質のデータセットです。このワークロードでは、ロールアウトの生成、報酬の計算、RL アライメント フェーズでのマルチステップの推論機能の改善に使用されます。
インフラストラクチャとフレームワーク: MaxText(
maxtext[tpu-post-train])を使用する単一の Cloud TPUv6e-8ノード(ct6e-standard-8t)。JAX を搭載した高性能トレーニング スタックです。
目標
- Cloud TPU VM インスタンスを設定する。
- MaxText とその依存関係をインストールする。
- Hugging Face モデルを MaxText 形式に変換する。
- TPU で RL Group Relative Policy Optimization(GRPO)ワークロードを実行する。
- トレーニング済みモデルをサービング用に Hugging Face 形式に変換する。
費用
このドキュメントでは、課金対象である次のコンポーネントを使用します。 Google Cloud
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、 クリーンアップをご覧ください。
始める前に
このチュートリアルを使用するには、Hugging Face アクセス トークンが必要です。Hugging Faceで無料アカウントに登録できます 。アカウントを取得したら、アクセス トークンを生成します。
- [Welcome to Hugging Face] ページで、アカウントのアバターをクリックし、[アクセス トークン] を選択します。
- [アクセス トークン] ページで、[Create new token] をクリックします。
- [Read] トークンタイプを選択し、トークンの名前を入力します。
- アクセス トークンが表示されます。トークンを安全な場所に保存します。
- Hugging Face ウェブサイトで、トレーニングするモデルのライセンス
契約に同意します。このチュートリアルでは、モデル
llama3.1-8b-Instructを使用します。
このチュートリアルを完了するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- TPU 管理者 (
roles/tpu.admin) - サービス アカウント ユーザー (
roles/iam.serviceAccountUser) - Compute 編集者 (
roles/compute.editor)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
環境を設定する
次のスクリプトを実行して、環境変数を設定します。
次のように置き換えます。
- YOUR_PROJECT_ID: 実際の Google Cloud プロジェクト ID
- YOUR_ZONE: 使用するゾーン
- YOUR_RESERVATION_NAME: 容量予約
- YOUR_TPU_NAME: Cloud TPU VM インスタンスの名前
次のコマンドを実行して Google Cloud で認証します。
gcloud auth login
Cloud TPU VM を作成する
容量予約にバインドされた 8 個の v6e TPU チップを使用して、Cloud TPU VM インスタンスを作成します。
VM インスタンスが作成されたら、SSH を使用して接続します。
TPU VM インスタンス内で次の手順を完了します。
MaxText をインストールする
TPU VM インスタンス内のシステム パッケージを更新します。
MaxText に必要な Python 3.12 とその仮想環境パッケージをインストールします。
uv を使用して、Python パッケージのインストールを高速化します。
maxtext_venv という名前の仮想環境を作成して有効にします。
MaxText と、事後トレーニング タスクに必要な依存関係をインストールします。
次のコマンドを実行して、残りの必要な依存関係をインストールします。
モデルを MaxText 形式に変換する
MaxText 形式でモデルをトレーニングするには、Hugging Face 形式から MaxText 形式に変換する必要があります。
次の値を指定します。
- Hugging Face アクセス トークン
- 使用するモデルの名前
- MaxText 形式でモデルを保存するディレクトリ
- 読み込みと保存のオプション
YOUR_HF_TOKEN は、以前に作成した Hugging Face アクセス トークン に置き換えます。
モデルを Hugging Face 形式から MaxText 形式に変換するには、次のスクリプトを実行します。この変換には約 5 分かかります。
トレーニング ワークロードを開始する
変換プロセスが完了したら、RL ワークロードを開始できます。
RL ワークロードのトレーニング パラメータを構成します。
トレーニング ジョブを開始します。
v6e-8VM インスタンスでは約 10 分かかります。
トレーニング済みモデルを Hugging Face 形式に変換する
トレーニング ワークロードが完了したら、モデルを Hugging Face 形式に変換します。
エクスポートとトレーニング済みパラメータのパスを設定します。
Hugging Face 形式への変換を実行します。
変換が完了すると、/dev/shm/$MODEL_NAME/hf-trained に保存されているチューニング済みモデルを使用できるようになります。VM が再起動すると /dev/shm フォルダの内容にアクセスできなくなるため、チューニング済みモデルを永続ストレージに移動するか、Hugging Face Hub にアップロードする必要があります。
クリーンアップ
追加の料金が発生しないように、このチュートリアルで作成したリソースを削除します。
TPU VM インスタンスを削除する
Cloud TPU VM インスタンスを削除します。
次のステップ
- Cloud TPU の詳細については、 Cloud TPU の概要をご覧ください。
v6e-8TPU のアーキテクチャと構成の詳細については、 TPU v6e をご覧ください。