このチュートリアルでは、Cloud TPU で MaxText を使用して Qwen3-14b モデルで教師ありファインチューニング(SFT)を実行する手順を説明します。このチュートリアルでは、特殊なコンテナ イメージをビルドする方法、Accelerated Processing Kit(XPK)を使用して Pathways で Google Kubernetes Engine(GKE)クラスタをプロビジョニングする方法、マルチホスト トレーニング ワークロードを実行する方法について説明します。
目標
- トレーニング後の最適化されたカスタム MaxText コンテナ イメージをビルドする方法について学習します。
- Pathways を有効にして XPK を使用して GKE クラスタをプロビジョニングする。
- Qwen3 14b モデルを Hugging Face 形式から MaxText 形式に変換します。
- Cloud TPU でマルチホスト SFT トレーニング ワークロードを実行します。
- サービング用にファインチューニングされたモデルを Hugging Face 形式に戻します。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
- Google Kubernetes Engine
- Cloud TPU
- Cloud Storage
- Artifact Registry
- Compute Engine, for the temporary build virtual machine (VM)
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
- ユーザー アカウントまたはサービス アカウントに次のロールがあることを確認します。
roles/compute.admin: ビルド VM を作成します。roles/artifactregistry.admin: Docker リポジトリを管理するroles/storage.admin: データバケットを管理するroles/container.admin: Google Kubernetes Engine クラスタの作成と管理roles/iam.serviceAccountAdmin: ワークロード サービス アカウントを作成するroles/resourcemanager.projectIamAdmin: Identity and Access Management(IAM)ポリシーを設定するroles/iam.serviceAccountUser: サービス アカウントとして機能する
- Google Cloud CLI をインストールして初期化します。
- ワークステーションに Python 3.12 以降がインストールされていることを確認します。
このチュートリアルを使用するには、Hugging Face アクセス トークンが必要です。無料アカウントは Hugging Face で登録できます。アカウントを取得したら、アクセス トークンを生成します。
- [Welcome to Hugging Face] ページで、アカウントのアバターをクリックして [アクセス トークン] を選択します。
- [アクセス トークン] ページで、[新しいトークンを作成] をクリックします。
- [読み取り] トークン タイプを選択し、トークンの名前を入力します。
- アクセス トークンが表示されます。トークンは安全な場所に保存してください。
環境を設定する
次のスクリプトを実行して、環境変数を設定します。
次のように置き換えます。
- YOUR_PROJECT_ID: 実際の Google Cloud プロジェクト ID
- YOUR_REGION: 使用するリージョン
- YOUR_ZONE: 使用するゾーン
- YOUR_CLUSTER_NAME: Google Kubernetes Engine クラスタの名前
- YOUR_GCS_BUCKET: Cloud Storage バケットの一意の名前
- YOUR_RESERVATION_NAME: 容量予約
- YOUR_HF_TOKEN: Hugging Face アクセス トークン
MaxText コンテナ イメージを準備する
必要な依存関係のインストールなど、MaxText コンテナ イメージを準備するには、次の手順を行います。
Cloud Storage バケットを作成します。
Artifact Registry リポジトリを作成します。
リポジトリのルート ディレクトリに、ファイル名
cloudbuild.yamlで次の内容のファイルを作成します。Cloud Build を使用して MaxText Docker イメージをビルドします。
Google Kubernetes Engine クラスタを作成する
Qwen3 14b モデルで SFT トレーニングを実行するには、TPU チップを搭載した Google Kubernetes Engine クラスタが必要です。Accelerated Processing Kit(XPK)をインストールし、Pathways をサポートする GKE クラスタを作成します。
トレーニング用にモデルを準備する
CPU ベースのワークロードを使用して、ベースモデルを MaxText 形式に変換します。このタスクを複数のマシンで並行して実行しないでください。次のコマンドには、変換が 1 つの TPU ノードでのみ実行されるようにするためのチェックが含まれています。
モデル変換の進行状況を追跡する
変換の進行状況を追跡する手順は次のとおりです。
- GKE クラスタでスケジュールされた Pod を一覧表示するには、
kubectl get podコマンドを実行します。 qwen-hf-to-mt-slice-job-0-0-HASHという名前の Pod を見つけます。- Pod の出力をリアルタイムで検査するには、
kubectl logs -f POD_NAMEコマンドを実行します。
トレーニング ワークロードを開始する
変換プロセスが完了したら、XPK を使用して SFT ファインチューニング ワークロードを開始できます。
トレーニング ワークロードをモニタリングする
XPK コマンドライン インターフェース(CLI)を使用して、ワークロードのステータスをモニタリングします。
xpk workload list --cluster ${CLUSTER_NAME} --project ${PROJECT} --zone ${ZONE}
ログと TPU 使用率を表示するには、Google Cloud コンソールを使用します。次のコマンドを実行してログを表示することもできます。
kubectl logs -f qwen-training-pathways-head-0-0-HASH
HASH は、Pod 名の数値ハッシュに置き換えます。このハッシュの値を確認するには、kubectl get pod コマンドを実行して、返された Pod のリストを確認します。
トレーニング済みモデルを Hugging Face 形式に変換する
トレーニング ワークロードが完了したら、チェックポイントを Hugging Face 形式に戻します。
変換の進行状況を追跡するには、kubectl logs -f qwen-mt-to-hf-slice-job-0-0-HASH コマンドを実行します。HASH は、Pod 名の数値ハッシュに置き換えます。
変換が完了すると、gs://$GCS_BUCKET/qwen-3-14b/hf-trained/ に保存されているチューニング済みモデルを使用できるようになります。
クリーンアップ
追加料金が発生しないように、このチュートリアルで作成したリソース(Google Kubernetes Engine クラスタ、Cloud Storage バケット、Artifact Registry リポジトリなど)を削除します。
このチュートリアル用に作成したリソースを削除するには、次のコマンドを実行します。
次のステップ
- Cloud TPU の詳細については、Cloud TPU の概要をご覧ください。
v6e-32TPU のアーキテクチャと構成の詳細については、TPU v6e をご覧ください。