このチュートリアルでは、MaxText と Cluster Toolkit を使用して、Tensor Processing Unit(TPU)v6e-32 クラスタでマルチホスト強化学習(RL)トレーニングを実行する方法について説明します。Cluster Toolkit を使用して、マルチホスト トレーニング ワークロードを実行し、結果を Hugging Face 形式でエクスポートしてサービングします。
目標
- Cluster Toolkit とその依存関係をインストールします。
- Cluster Toolkit クラスタをデプロイします。
- Hugging Face モデルを MaxText 形式に変換します。
- TPU v6e クラスタで RL トレーニング ワークロードを実行する。
- サービング用にファインチューニングされたモデルを Hugging Face 形式に変換します。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
このチュートリアルを使用するには、Hugging Face アクセス トークンが必要です。無料アカウントは Hugging Face で登録できます。アカウントを取得したら、アクセス トークンを生成します。
- [Welcome to Hugging Face] ページで、アカウントのアバターをクリックして [アクセス トークン] を選択します。
- [アクセス トークン] ページで、[新しいトークンを作成] をクリックします。
- [読み取り] トークン タイプを選択し、トークンの名前を入力します。
- アクセス トークンが表示されます。トークンは安全な場所に保存してください。
- Hugging Face ウェブサイトで、トレーニングするモデルのライセンス契約に同意します。このチュートリアルでは、モデル
qwen3-30b-a3bを使用します。
このチュートリアルを完了するために必要な権限を取得するには、プロジェクトに対する次の 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: クラスタをデプロイするリージョン。
- YOUR_ZONE: クラスタをデプロイするゾーン。
- YOUR_CLUSTER_NAME: Google Kubernetes Engine クラスタの名前(最大 20 文字)。
- YOUR_BUCKET_NAME: Cloud Storage バケットのグローバルに一意の名前。
- YOUR_RESERVATION_NAME: 予約の名前。
- YOUR_HF_TOKEN: Hugging Face アクセス トークン。
Cluster Toolkit の依存関係をインストールする
Linux または macOS のクライアントまたはワークステーションからこのチュートリアルを完了するには、Cluster Toolkit ドキュメントの依存関係をインストールするの手順に沿って操作します。
Cloud Shell を使用している場合は、このセクションをスキップできます。
Cluster Toolkit をインストールする
Cluster Toolkit をインストールするの手順に沿って、現在の作業ディレクトリに Cluster Toolkit のビルド済みバンドルをインストールします。
たとえば、次のようにバンドルをダウンロードして現在の作業ディレクトリに抽出できます。
バンドルを現在の作業ディレクトリに抽出すると、以降の手順で使用する gcluster バイナリと examples/ ブループリントが提供されます。
Cluster Toolkit クラスタを作成する
32 個の v6e TPU チップを使用して Cluster Toolkit クラスタを作成してデプロイするには、次の操作を行います。
Cloud Storage バケットを作成します。
Cluster Toolkit ブループリントを現在の作業ディレクトリにコピーします。
デフォルトでは、クラスタ ノードプール サービス アカウントに Cloud Storage バケットへの書き込みに必要な権限がありません。ノードプール サービス アカウントが Cloud Storage バケットに書き込めるようにするには、
Storage Adminロールを付与する必要があります。このロールを付与するには、node_pool_service_accountという名前のservice-accountモジュールを更新して、gke-tpu-v6e-advanced.yamlファイルを編集します。gcluster deployコマンドを使用して、ブループリントgke-tpu-v6e-advanced.yamlを使用して Cluster Toolkit クラスタをデプロイし、--varsフラグを使用して必要な変数を渡します。Container Registry 認証を構成し、GKE サービス アカウントにストレージ管理者ロール(
roles/storage.admin)を付与します。
モデルを MaxText 形式に変換する
MaxText 形式でモデルをトレーニングするには、Hugging Face 形式から MaxText 形式に変換する必要があります。
後続のコマンドを簡素化するには、
gcluster job configコマンドを使用して、デフォルトのプロジェクト、クラスタ、ロケーションを構成します。gcluster job submitコマンドを使用して、モデルを Hugging Face 形式から MaxText 形式に変換し、Cloud Storage バケットに保存します。gcluster job logsコマンドを使用して、変換ジョブのステータスを確認します。変換されたモデルファイルが Cloud Storage バケットで使用可能であることを確認します。
トレーニング ワークロードを開始する
変換プロセスが完了したら、RL トレーニング ワークロードを開始します。
トレーニング ジョブのステータスを確認するには:
トレーニングのチェックポイントが Cloud Storage バケットに生成されていることを確認するには:
トレーニング済みモデルを Hugging Face 形式に変換する
トレーニング ワークロードが完了したら、モデルを Hugging Face 形式に戻します。
変換ジョブのステータスを確認するには:
トレーニング済みの Hugging Face モデルの重みと構成ファイルが Cloud Storage バケットに存在することを確認するには:
クリーンアップ
追加料金が発生しないように、gcluster destroy コマンドを使用して、このチュートリアルで作成したリソースを削除します。
次のステップ
- Cloud TPU の詳細については、Cloud TPU の概要をご覧ください。
v6e-32TPU のアーキテクチャと構成の詳細については、TPU v6e をご覧ください。- Cluster Toolkit の詳細については、Cluster Toolkit の概要をご覧ください。