このチュートリアルでは、MaxText と Cluster Toolkit を使用して、Tensor Processing Unit(TPU)v6e クラスタで教師ありファインチューニング(SFT)を実行する方法について説明します。 Cluster Toolkit を使用して、マルチホスト トレーニング ワークロードを実行し、サービングのために結果を Hugging Face 形式でエクスポートします。
目標
- Cluster Toolkit とその依存関係をインストールする。
- MaxText とその依存関係をインストールする。
- Cluster Toolkit クラスタをデプロイする。
- Hugging Face モデルを MaxText 形式に変換する。
- TPU で SFT トレーニング ワークロードを実行する。
- ファインチューニングされたモデルをサービングのために Hugging Face 形式に変換する。
費用
このドキュメントでは、課金対象である次の コンポーネントを使用します Google Cloud:
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、 クリーンアップをご覧ください。
始める前に
このチュートリアルを使用するには、Hugging Face アクセス トークンが必要です。Hugging Faceで 無料アカウントに登録できます。アカウントを取得したら、アクセス トークンを生成します。
- [Welcome to Hugging Face] ページで、 アカウントのアバターをクリックし、[**Access tokens**] を選択します。
- [Access tokens] ページで、[Create new token] をクリックします。
- [Read] トークンタイプを選択し、トークンの名前を入力します。
- アクセス トークンが表示されます。トークンを安全な場所に保存します。
- Hugging Face ウェブサイトで、トレーニングするモデルのライセンス
契約に同意します。このチュートリアルでは、モデル
gemma4-31bを使用します。
このチュートリアルを完了するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
このチュートリアルを完了するには:
- TPU 管理者 (
roles/tpu.admin) - サービス アカウント ユーザー (
roles/iam.serviceAccountUser) - Compute 編集者 (
roles/compute.editor)
- TPU 管理者 (
-
MaxText コンテナ イメージを準備するには:
- Cloud Build 編集者 (
roles/cloudbuild.builds.editor) - Artifact Registry 管理者 (
roles/artifactregistry.admin) - ストレージ管理者 (
roles/storage.admin) - Service Usage 管理者 (
roles/serviceusage.serviceUsageAdmin)
- Cloud Build 編集者 (
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
環境変数を設定する
次のスクリプトを実行して、環境変数を設定します。
次のように置き換えます。
- YOUR_PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- YOUR_REGION: クラスタをデプロイするリージョン。
- YOUR_ZONE: クラスタをデプロイするゾーン。
- YOUR_REPOSITORY_NAME: MaxText イメージの Artifact Registry リポジトリの名前。
- YOUR_RESERVATION_NAME: 予約の名前。
- YOUR_HF_TOKEN: Hugging Face アクセス トークン。
- YOUR_BUCKET_NAME: Cloud Storage バケットのグローバルに一意の名前。
Cluster Toolkit の依存関係をインストールする
Linux または macOS クライアントまたはワークステーションからこのチュートリアルを完了するには、 Cluster Toolkit ドキュメントの 依存関係をインストールするの手順に沿って操作してください。
Cloud Shell を使用している場合は、このセクションをスキップできます。
Cluster Toolkit をインストールする
Cluster Toolkit をインストールする の手順に沿って、 Cluster Toolkit の事前ビルド済みバンドルをインストールします。
MaxText コンテナ イメージを準備する
必要な依存関係のインストールなど、MaxText コンテナ イメージを準備する手順は次のとおりです。
Cloud Storage バケットを作成します。
Artifact Registry リポジトリを作成します。
リポジトリのルート ディレクトリに、ファイル名
cloudbuild.yamlで次の内容のファイルを作成します。Cloud Build を使用して MaxText Docker イメージをビルドします。
Cluster Toolkit クラスタを作成する
32 個の v6e TPU チップを使用して Cluster Toolkit クラスタを作成してデプロイする手順は次のとおりです。
gke.gcsfuse.profileUserという名前の Identity and Access Management(IAM)カスタムロールを作成します。Cloud Storage バケットを作成します。
デフォルトでは、クラスタ ノードプールのサービス アカウントには、Cloud Storage バケットに書き込むために必要な権限がありません。ノードプール サービス アカウントが Cloud Storage バケットに書き込めるようにするには、
Storage Adminロールを付与する必要があります。このロールを付与するには、node_pool_service_accountモジュールを更新して、ファイルgke-tpu-v6e-advanced.yamlを編集します。ブループリント
gke-tpu-v6e-advanced.yamlを使用し、--varsフラグを使用して必要な変数を渡して、Cluster Toolkit クラスタをデプロイします。
モデルを MaxText 形式に変換する
MaxText 形式でモデルをトレーニングするには、Hugging Face 形式から MaxText 形式に変換する必要があります。
Cluster Toolkit クラスタの作成が完了したら、Docker を構成します。
以降のコマンドを簡略化するため、デフォルトのプロジェクト、クラスタ、ロケーションを構成します。
モデルを Hugging Face 形式から MaxText 形式に変換して Cloud Storage バケットに保存するには、次のスクリプトを実行します。
変換ジョブのステータスを確認するには、次のコマンドを実行します。
トレーニング ワークロードを開始する
変換プロセスが完了したら、次のコマンドを実行して SFT ワークロードを開始できます。
トレーニング ジョブのステータスを確認するには、次のコマンドを実行します。
トレーニング済みモデルを Hugging Face 形式に変換する
トレーニング ワークロードが完了したら、モデルを Hugging Face 形式に変換します。
変換ジョブのステータスを確認するには、次のコマンドを実行します。
クリーンアップ
追加の料金が発生しないように、このチュートリアルで作成したリソースを削除します。
次のステップ
- Cloud TPU の詳細については、 Cloud TPU の概要をご覧ください。
v6e-32TPU のアーキテクチャと構成の詳細については、 TPU v6e をご覧ください。