このチュートリアルでは、MaxText と Cluster Toolkit を使用して、Tensor Processing Unit(TPU)v6e-32 クラスタでマルチホスト強化学習(RL)トレーニングを実行する方法について説明します。Cluster Toolkit を使用して、マルチホスト トレーニング ワークロードを実行し、結果を Hugging Face 形式にエクスポートしてサービングします。
ワークロードの概要
Cloud TPU と GKE でこの RL ポストトレーニング ワークロードを実行するには、次のコンポーネントが必要です。
- モデル: Gemma 4 26B A4B Instruct(
google/gemma-4-26b-a4b-it)。高度なオープンウェイトの指示チューニング済みモデルです。このチュートリアルでは、モデルの重みを Hugging Face からダウンロードし、MaxText 互換形式に変換して、Cloud TPU v6e インフラストラクチャを備えた GKE クラスタにデプロイします。 - 強化学習(RL)アルゴリズム: MaxText と Pathways を使用した Group Relative Policy Optimization(GRPO)。このワークロードは、MaxText の組み込み RL トレーナー(
maxtext.trainers.post_train.rl.train_rl)と vLLM サンプラー バックエンドを組み合わせて、スケーラブルなトレーニング後のパイプラインを実行します。GRPO は、プロンプトごとに一連の出力を生成し、個別の批評家モデルを必要とせずに相対的な報酬を評価することで、ポリシーを最適化します。 - データセットとテンプレート: OpenMathInstruct-2(
openmathinstruct2_rl.json)。大規模な数学指示チューニング データセット。このワークロードは、RL ロールアウト フェーズで構造化されたチャット テンプレートを使用して、マルチステップの数学的推論機能を強化します。 - インフラストラクチャとフレームワーク: Cloud TPU v6e(
ct6e-standard-4t、4x8トポロジのv6e-32スライス)で、Cluster Toolkit を使用して管理される GKE。フレームワークは、Pathways と JAX バックエンドを備えた MaxText(tpu_post_training:0.2.4)です。
目標
- Cluster Toolkit とその依存関係をインストールします。
- Cluster Toolkit クラスタをデプロイする。
- Hugging Face モデルを MaxText 形式に変換する。
- TPU v6e クラスタで RL トレーニング ワークロードを実行します。
- ファインチューニングされたモデルを Hugging Face 形式に戻してサービングする。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
このチュートリアルを使用するには、Hugging Face アクセス トークンが必要です。Hugging Face で無料アカウントに登録できます。アカウントを作成したら、アクセス トークンを生成します。
- [Welcome to Hugging Face] ページで、アカウントのアバターをクリックし、[アクセス トークン] を選択します。
- [アクセス トークン] ページで、[新しいトークンを作成] をクリックします。
- [Read] トークン タイプを選択し、トークンの名前を入力します。
- アクセス トークンが表示されます。トークンを安全な場所に保存します。
- Hugging Face の
google/gemma-4-26b-a4b-itモデルカードで、モデルの使用許諾契約に同意します。
このチュートリアルを完了するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- TPU 管理者 (
roles/tpu.admin) - Kubernetes Engine 管理者(
roles/container.admin) - Compute 管理者(
roles/compute.admin) - ストレージ管理者 (
roles/storage.admin) - サービス アカウント ユーザー(
roles/iam.serviceAccountUser) - サービス アカウント管理者 (
roles/iam.serviceAccountAdmin) - プロジェクト IAM 管理者 (
roles/resourcemanager.projectIamAdmin) - Service Usage 管理者(
roles/serviceusage.serviceUsageAdmin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
環境変数を設定する
環境変数を設定します。
次のように置き換えます。
YOUR_PROJECT_ID: 実際の Google Cloud プロジェクト ID。YOUR_REGION: TPU 予約が配置され、クラスタをデプロイするリージョン。YOUR_ZONE: TPU 予約が配置され、クラスタをデプロイするゾーン。YOUR_CLUSTER_NAME: GKE クラスタの名前。名前は、先頭を英小文字にして、英小文字、数字、ハイフンのみで構成される必要があります。長さは 20 文字以下です。YOUR_BUCKET_NAME: Cloud Storage バケットのグローバルに一意の名前。YOUR_RESERVATION_NAME: TPU v6e 予約の名前。YOUR_HF_TOKEN: Hugging Face アクセス トークン。
Cluster Toolkit の依存関係をインストールする
Linux または macOS のクライアントまたはワークステーションからこのチュートリアルを完了するには、Cluster Toolkit のドキュメントの依存関係をインストールするの手順に沿って操作します。
Cloud Shell を使用している場合は、このセクションをスキップできます。
Cluster Toolkit をインストールする
CLUSTER_TOOLKIT_VERSION(v1.103.0)で定義されている特定のバージョンの Cluster Toolkit のビルド済みバンドルをダウンロードして、現在の作業ディレクトリに展開します。
環境を認証する
デプロイ スクリプトを実行する前に、Google Cloud CLI を認証し、アプリケーションのデフォルト認証情報(ADC)を設定する必要があります。これにより、Cluster Toolkit はリソースをプロビジョニングし、イメージを Artifact Registry に push できます。
Cluster Toolkit クラスタを作成する
32 個の v6e TPU チップを含む Cluster Toolkit クラスタを作成してデプロイするには、次の手順を完了します。
Cloud Storage バケットを作成します。
gcluster deployコマンドを使用して、ブループリントgke-tpu-v6e-advanced.yamlを使用し、--varsフラグを使用して必要な変数を渡すことで、Cluster Toolkit クラスタをデプロイします。
モデルを MaxText 形式に変換する
MaxText 形式でモデルをトレーニングするには、Hugging Face 形式から MaxText 形式に変換する必要があります。
以降のコマンドを簡素化するには、
gcluster job configコマンドを使用して、デフォルトのプロジェクト、クラスタ、ロケーションを構成します。gcluster job submitコマンドを使用して、モデルを Hugging Face 形式から MaxText 形式に変換し、Cloud Storage バケットに保存します。このコマンドには
--await-job-completionフラグが含まれています。これは、変換が完了するまで現在のターミナルで待機することを意味します。省略可: ジョブの実行中に変換ログをストリーミングするには、
gclusterを抽出した作業ディレクトリで別のターミナルを開き、gcluster job logsコマンドを実行します。元のターミナルで、変換されたモデルファイルが Cloud Storage バケットで使用可能であることを確認します。
トレーニング ワークロードを開始する
変換プロセスが完了したら、RL トレーニング ワークロードを開始します。
ステータスを確認し、コーディネーター Pod の準備が整うまで待ってから、トレーニング ジョブのログをストリーミングします。
送信直後、GKE が Pathways コーディネーター CPU ノードプール(
cpu-np)をスケールアップしている間、./gcluster job listコマンドの出力にSuspendedが一時的に表示されることがあります。ジョブが開始されると、ステップ 0(Pre RL Training: ... mean_reward=...)で最初の事前トレーニング評価が出力され、最初の XLA コンパイル中にログ出力が数分間一時停止します。その後、50 ステップのトレーニングが行われ、ステップ番号なしで各ステップでReshard finishedとロールアウト生成が出力されます。次のステップに進む前に、ログに
Post RL Training: ... mean_reward=...が出力され、./gcluster job listコマンドの出力にgemma4-trainingのステータスがSucceededと表示されるまで待ちます。トレーニング チェックポイントが Cloud Storage バケットに生成されていることを確認します。
トレーニング済みモデルを Hugging Face 形式に変換する
トレーニング ワークロードが完了したら、モデルを Hugging Face 形式に戻します。
省略可: 最初のターミナルで上記の
--await-job-completionコマンドが待機している間に、ライブ変換ログをモニタリングするには、gclusterを抽出した作業ディレクトリで別のターミナルを開き、gcluster job logsコマンドを使用します。元のターミナルで、トレーニング済みの Hugging Face モデルの重みと構成ファイルが Cloud Storage バケットに存在することを確認します。
クリーンアップ
追加料金が発生しないようにするには、gcluster destroy コマンドを使用して、このチュートリアルで作成したリソースを削除します。
次のステップ
- Cloud TPU の詳細については、Cloud TPU の概要をご覧ください。
v6e-32TPU のアーキテクチャと構成の詳細については、TPU v6e をご覧ください。- Cluster Toolkit の詳細については、Cluster Toolkit の概要をご覧ください。