このチュートリアルでは、Google Kubernetes Engine(GKE)で Tensor Processing Unit(TPU)を使用して JAX で大規模言語モデル(LLM)をファインチューニングする方法について説明します。ファインチューニングでは、Gemma 3 などの基盤モデルを特定のドメインやタスクに適応させることができます。このプロセスでは、独自の特殊なデータセットでパラメータを更新することで、モデルの適合率と精度が向上します。
このガイドは、AI/ML ワークロードをファインチューニングする際に、マネージド Kubernetes での詳細な制御、カスタマイズ、スケーラビリティ、復元力、ポータビリティ、費用対効果が求められる場合の出発点として適しています。
背景
GKE で TPU を使用して Jax で LLM をファインチューニングすることで、マネージド Kubernetes のメリットをすべて活用した、本番環境対応の堅牢なファインチューニング ソリューションを構築できます。
Gemma
Gemma は、オープン ライセンスでリリースされて一般公開されている、軽量の生成 AI/ML マルチモーダル モデルのセットです。これらの AI モデルは、アプリケーション、ハードウェア、モバイル デバイス、ホスト型サービスで実行できます。Gemma 3 ではマルチモダリティが導入され、ビジョン言語入力とテキスト出力がサポートされています。最大 128,000 トークンのコンテキスト ウィンドウを処理でき、140 を超える言語に対応しています。また Gemma 3 では、構造化出力や関数呼び出しなど、数学、推論、チャット関連の機能が強化されています。
Gemma モデルはテキスト生成に使用できますが、特殊なタスク用にチューニングすることもできます。
詳細については、Gemma のドキュメントをご覧ください。
TPU
TPU は、Google が独自に開発した特定用途向け集積回路(ASIC)であり、TensorFlow、PyTorch、JAX などのフレームワークを使用して構築された ML モデルと AI モデルを高速化するために使用されます。
GKE で TPU を使用する前に、次の学習プログラムを完了することをおすすめします。
- Cloud TPU システム アーキテクチャで、現在の TPU バージョンの可用性について学習する。
- GKE の TPU についてを確認する。
JAX
JAX は、TPU と GPU で使用するように設計された高パフォーマンスの ML フレームワークです。JAX は、ML モデルの構築とトレーニング用の API を提供します。
詳細については、JAX リポジトリをご覧ください。
目標
このチュートリアルでは、次の手順について説明します。
- モデルの特性に基づいて推奨される TPU トポロジを持つ GKE Autopilot または Standard クラスタを作成します。このチュートリアルでは、単一ホスト ノードプールでファインチューニングを行います。
- Cloud Storage バケットにデータを追加し、Cloud Storage FUSE を介してコンテナにマウントします。
- LLM ファインチューニング ジョブを GKE にデプロイします。
- ファインチューニング ジョブをモニタリングし、ログを表示します。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分も差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
プロジェクトに次のロール(複数の場合あり)が割り当てられていることを確認します。 roles/container.admin、roles/iam.serviceAccountAdmin、roles/storage.admin
ロールを確認する
-
Google Cloud コンソールで、[IAM] ページに移動します。
IAM に移動 - プロジェクトを選択します。
-
[プリンシパル] 列で、自分または自分が所属するグループの行をすべて確認します。所属するグループについては、管理者にお問い合わせください。
- 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうか確認します。
ロールを付与する
-
Google Cloud コンソールで、[IAM] ページに移動します。
IAM に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] をクリックし、ロールを検索します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
-
- 16 個の TPU Trillium(v6e)チップに十分な割り当てがあることを確認します。このチュートリアルでは、16 個のチップとオンデマンド インスタンスを必要とするノードプール構成を使用します。
- Docker リポジトリがあることを確認します。ない場合は、Artifact Registry に標準リポジトリを作成します。
環境を準備する
このチュートリアルでは、Cloud Shell を使用して Google Cloudでホストされているリソースを管理します。Cloud Shell には、このチュートリアルに必要な kubectl や Google Cloud CLI などのソフトウェアがプリインストールされています。
Cloud Shell を使用して環境を設定するには、次の操作を行います。
Google Cloud コンソールで Cloud Shell セッションを起動し、
(Cloud Shell をアクティブにする)をクリックします。このアクションにより、 Google Cloud コンソールの下部ペインでセッションが起動します。
デフォルトの環境変数を設定します。
gcloud config set project PROJECT_ID gcloud config set billing/quota_project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)") export CLUSTER_NAME=CLUSTER_NAME export REGION=CONTROL_PLANE_LOCATION export ZONE=ZONE export GCS_BUCKET_NAME=BUCKET_NAME次の値を置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。CLUSTER_NAME: GKE クラスタの名前。CONTROL_PLANE_LOCATION: GKE クラスタと TPU ノードが配置されている Compute Engine リージョン。リージョンには、TPU Trillium(v6e)マシンタイプを使用できるゾーンが含まれている必要があります。ZONE: 選択したCONTROL_PLANE_LOCATIONリージョン内の、TPU Trillium(v6e)マシンタイプを使用できるゾーン。TPU Trillium(v6e)TPU を使用できるゾーンを一覧表示するには、次のコマンドを実行します。gcloud compute accelerator-types list --filter="name~ct6e" --format="value(zone)"BUCKET_NAME: トレーニング データを含む Cloud Storage バケットの名前。
サンプル リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git cd kubernetes-engine-samples作業ディレクトリに移動します。
cd ai-ml/llm-training-jax-tpu-gemma3
Google Cloud リソースを作成して構成する
このセクションでは、 Google Cloud リソースを作成して構成します。
GKE クラスタを作成する
GKE Autopilot クラスタまたは GKE Standard クラスタの TPU で LLM をファインチューニングできます。フルマネージドの Kubernetes エクスペリエンスを実現するには、Autopilot クラスタを使用することをおすすめします。ワークロードに最適な GKE の運用モードを選択するには、GKE の運用モードを選択するをご覧ください。
Autopilot
Workload Identity Federation for GKE を使用し、Cloud Storage FUSE が有効になっている GKE Autopilot クラスタを作成します。
gcloud container clusters create-auto ${CLUSTER_NAME} \
--location=${REGION}
クラスタの作成には数分かかることもあります。
標準
Workload Identity Federation for GKE を使用し、Cloud Storage FUSE が有効になっているリージョン GKE Standard クラスタを作成します。
gcloud container clusters create ${CLUSTER_NAME} \ --enable-ip-alias \ --addons GcsFuseCsiDriver \ --machine-type=n2-standard-4 \ --num-nodes=2 \ --workload-pool=${PROJECT_ID}.svc.id.goog \ --location=${REGION}クラスタの作成には数分かかることもあります。
単一ホストのノードプールを作成します。
gcloud container node-pools create jax-tpu-nodepool \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-1t \ --num-nodes=1 \ --location=${REGION} \ --node-locations=${ZONE} \ --workload-metadata=GKE_METADATA
GKE は、1x1 トポロジと 1 つのノードを持つ TPU Trillium ノードプールを作成します。--workload-metadata=GKE_METADATA フラグにより、GKE メタデータ サーバーを使用するようにノードプールが構成されます。
JobSet をインストールする
クラスタと通信を行うように
kubectlを構成します。gcloud container clusters get-credentials ${CLUSTER_NAME} --location=${REGION}最新リリースの JobSet をインストールします。
kubectl apply --server-side -f https://github.com/kubernetes-sigs/jobset/releases/download/JOBSET_VERSION/manifests.yamlJOBSET_VERSIONは、JobSet の最新リリース バージョンに置き換えます。例:v0.11.0JobSet のインストールを確認します。
kubectl get pods -n jobset-system出力は次のようになります。
NAME READY STATUS RESTARTS AGE jobset-controller-manager-6c56668494-l4dhc 1/1 Running 0 4m45sJobSet がリソースを待機している場合は、ノードを追加する必要がある場合があります。
Cloud Storage FUSE を構成する
LLM をファインチューニングするには、トレーニング データを提供する必要があります。このチュートリアルでは、Hugging Face の TinyStories データセットを使用します。このデータセットには、GPT-3.5 と GPT-4 によって合成的に生成された、限られた語彙を使用した短編小説が含まれています。
このセクションでは、Cloud Storage FUSE を構成して Cloud Storage バケットからデータを読み取る手順について説明します。
データセットをダウンロードします
wget https://huggingface.co/datasets/roneneldan/TinyStories/resolve/main/TinyStories-train.txt?download=true -O TinyStories-train.txtデータを新しい Cloud Storage バケットにアップロードします。
gcloud storage buckets create gs://${GCS_BUCKET_NAME} \ --location=${REGION} \ --enable-hierarchical-namespace \ --uniform-bucket-level-access gcloud storage cp TinyStories-train.txt gs://${GCS_BUCKET_NAME}ワークロードが Cloud Storage FUSE を介してデータを読み取れるようにするには、
default名前空間に Kubernetes ServiceAccount(jaxserviceaccount)を作成します。kubectl create serviceaccount jaxserviceaccount --namespace defaultjaxserviceaccountKubernetes ServiceAccount に、Cloud Storage バケットに対する Storage オブジェクト閲覧者ロール(roles/storage.objectViewer)を付与します。gcloud storage buckets add-iam-policy-binding gs://${GCS_BUCKET_NAME} \ --member="principal://iam.googleapis.com/projects/${PROJECT_NUMBER}/locations/global/workloadIdentityPools/${PROJECT_ID}.svc.id.goog/subject/ns/default/sa/jaxserviceaccount" \ --role="roles/storage.objectViewer" \ --condition=NonejaxserviceaccountServiceAccount を使用する GKE クラスタのdefaultNamespace で実行されている Pod は、gs://${GCS_BUCKET_NAME}バケットに保存されているオブジェクトに対する読み取りアクセス権を持つようになりました。これは、Cloud Storage FUSE を使用してデータセットにアクセスするために、ファインチューニング ジョブで必要になります。
ファインチューニング スクリプトを作成する
このセクションでは、Gemma 3 モデルでファインチューニング オペレーションを実行するトレーニング スクリプトについて説明します。このスクリプトでは Gemma3Tokenizer を使用します。
次の Gemma3LLMTrain.py ファインチューニング スクリプトを確認します。
このスクリプトでは、次のようになります。
Gemma3Tokenizerは、モデルが処理できるトークンにテキストデータを変換します。load_and_preprocess_data関数は、ファイルからトレーニング データを読み取り、個々のストーリーに分割し、トークナイザーを使用してテキストをトークンのパディングされたシーケンスに変換します。generate_text関数は、モデル、そのパラメータ、プロンプトを受け取ってテキストを生成します。train_step関数は、順伝播、損失計算(クロスエントロピーを使用)、グラデーション計算、パラメータ更新を含むトレーニングの単一のイテレーションを定義します。train_model関数は、指定されたエポック数だけデータセットを反復処理し、各バッチに対してtrain_step関数を呼び出します。run_training関数は、データ読み込み、Gemma 3 モデル(Gemma3_270M)とオプティマイザーの初期化、事前トレーニング済みパラメータの読み込み、並列処理用のデータ シャーディングの設定、テスト生成の実行、トレーニング ループの実行、ファインチューニングの効果を示す最終的なテキスト生成の実行というプロセス全体を調整します。- このスクリプトは、
argparseライブラリを使用して、maxlen、batch_size、datacountパラメータのコマンドライン引数を受け取ります。
ファインチューニング スクリプトを確認したので、GKE で実行できるようにコンテナ化します。
ファインチューニング スクリプトをコンテナ化する
GKE クラスタでファインチューニング スクリプトを実行する前に、コンテナ化する必要があります。このチュートリアルでは、ベースイメージとして JAX AI イメージを使用します。
Gemma3LLMTrain.pyファイルと同じディレクトリにあるDockerfileを開きます。この Dockerfile は、必要な依存関係をインストールし、
Gemma3LLMTrain.pyファイルをコンテナにコピーします。Docker イメージをビルドしてイメージ リポジトリに push します。
export REPOSITORY=REPOSITORY_NAME export IMAGE_NAME="jax-gemma3-training" export IMAGE_TAG="latest" export DOCKERFILE_PATH="./Dockerfile" export IMAGE_URI="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}" docker build -t "${IMAGE_URI}" -f "${DOCKERFILE_PATH}" . gcloud auth configure-docker "${REGION}-docker.pkg.dev" -q docker push "${IMAGE_URI}"REPOSITORY_NAMEは、Artifact Registry リポジトリの名前に置き換えます。サービス アカウントにロール バインディングを追加します。
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format 'get(projectNumber)') gcloud artifacts repositories add-iam-policy-binding ${REPOSITORY} \ --project=${PROJECT_ID} \ --location=${REGION} \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
リポジトリにイメージが保存されたので、ファインチューニング ジョブを GKE クラスタにデプロイできます。
LLM ファインチューニング ジョブをデプロイする
このセクションでは、LLM ファインチューニング ジョブを GKE クラスタにデプロイする方法について説明します。
training_singlehost.yamlマニフェストを開きます。次のようにマニフェストを適用します。
envsubst < training_singlehost.yaml | kubectl apply -f -
GKE は、TPU Trillium(v6e)ノードで Pod を起動する Job を作成します。この Pod は、Python ファインチューニング スクリプトを実行します。このスクリプトは、Cloud Storage FUSE を使用して、/data パスにマウントされた指定の Cloud Storage バケットからファインチューニング データにアクセスします。その後、スクリプトは Gemma モデルをファインチューニングします。
トレーニング Job をモニタリングする
このセクションでは、ファインチューニング ジョブの進行状況とパフォーマンスをモニタリングします。
ファインチューニングの進行状況を確認する
Pod を一覧表示します。
# Find the Pods kubectl get podsログ出力は次のとおりです。
kubectl logs -f pods/POD_NAMEPOD_NAMEは、Pod の名前に置き換えます。出力は次のようになります。
Global device count: 1 Batch size: 128, Max length: 256, Data count: 96000 I1028 00:12:55.925999 1387 google_auth_provider.cc:181] Running on GCE, using service account ... Generating response for: Once upon a time, there was a girl named Amy. Response: Amy lived in a small house. The house was in a big field. Amy liked to play in the big field. She Start training model Loss after batch 0: 10.25 Loss after batch 10: 4.3125 . . . Loss after batch 740: 1.41406 Completed training model. Total time for training 294.6791355609894 seconds Generating response for: Once upon a time, there was a girl named Amy. Response: She loved to play with her toys. One day, Amy's mom told her that she had to go to the store to出力を分析します。
Global device count: 1の線は、使用されている TPU コアを示します。- このファインチューニング実行の前に、モデルは事前トレーニング済みのチェックポイントから読み込むため、妥当なテキストを生成します。
- ファインチューニング後に生成された出力は、短編小説の冒頭に似たものになり、モデルが新しいデータセットから学習していることがわかります。
- データセット全体でファインチューニングを行うと、さらに洗練された出力が得られます。
指標をモニタリングする
TPU と CPU の指標を確認して、ファインチューニング ジョブのパフォーマンスを確認します。クラスタのオブザーバビリティ指標を表示するには、クラスタとワークロードのオブザーバビリティ指標を表示するの手順に沿って操作します。
代替のファインチューニング構成
このセクションでは、ファインチューニング ワークロードの代替構成について説明します。
モデルの選択
このチュートリアルでは、単一ホストの TPU Trillium(v6e)ノードプールに収まる小規模なモデルである Gemma3_270M モデルを使用しました。ファインチューニングに多くのメモリとコンピューティングが必要な大規模なモデルの場合は、マルチホストまたはマルチスライス ノードプール構成を使用できます。
使用可能なモデルの完全なリストについては、Gemma のドキュメントをご覧ください。
ノードプールの構成
このチュートリアルでは、単一ホストのノードプールを使用しました。必要に応じて、マルチホスト TPU スライス ノードプールまたはマルチスライス ノードプールを作成することもできます。
次のタブは、マルチホスト ノードプールとマルチスライス ノードプールを作成する方法を示しています。
マルチホスト
Cloud Shell で、次のコマンドを実行します。
gcloud container node-pools create jax-tpu-multihost1 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-4t \ --num-nodes=2 \ --tpu-topology=2x4 \ --location=${REGION} \ --node-locations=${ZONE}GKE は、
2x4トポロジと 2 つのノードを持つ TPU Trillium ノードプールを作成します。training_multihost_jobset.yamlジョブ定義を開きます。ファインチューニング Job をデプロイします。
envsubst < training_multihost_jobset.yaml | kubectl apply -f -
マルチスライス
Cloud Shell で、次のコマンドを実行します。
gcloud container node-pools create jax-tpu-multihost1 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-4t \ --num-nodes=2 \ --tpu-topology=2x4 \ --location=${REGION} \ --node-locations=${ZONE} gcloud container node-pools create jax-tpu-multihost2 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-4t \ --num-nodes=2 \ --tpu-topology=2x4 \ --location=${REGION} \ --node-locations=${ZONE}GKE は 2 つの TPU Trillium ノードプールを作成します。各ノードプールには、
2x4トポロジと 2 つのノードがあります。training_multislice_jobset.yamlジョブ定義を開きます。ファインチューニング Job をデプロイします。
envsubst < training_multislice_jobset.yaml | kubectl apply -f -
パフォーマンスの分析と最適化
ML ファインチューニングのパフォーマンスを分析して最適化するには、XProf を使用します。XProf は、JAX、TensorFlow、PyTorch/XLA で構築された ML ワークロードをプロファイリングして検査するツールスイートです。実行トレース、メモリ使用量、その他のデータを表示することで、XProf を使用してモデルとトレーニング設定を微調整し、効率を高めてトレーニングを高速化できます。
XProf を使用してファインチューニング ワークロードのパフォーマンスを分析するには、このセクションで次の手順を行います。
xprofパッケージをインストールします。XProf サーバーを起動するようにトレーニング スクリプトを変更します。- XProf ログのボリューム マウントを含めるように Kubernetes Job マニフェストを変更します。
- Kubernetes ServiceAccount に、Cloud Storage バケットに XProf ログを書き込む権限を付与します。
- Pod 内で XProf を実行し、XProf ダッシュボードにアクセスするようにポート転送を設定します。
XProf パッケージをインストールする
XProf サンプルが含まれているディレクトリに移動します。
cd ai-ml/llm-training-jax-tpu-gemma3/xprof-enabledDocker イメージをビルドしてイメージ リポジトリに push します。
export REPOSITORY=REPOSITORY_NAME export IMAGE_NAME="jax-gemma3-training-xp" export IMAGE_TAG="latest" export DOCKERFILE_PATH="./Dockerfile" export IMAGE_URI="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}" docker build -t "${IMAGE_URI}" -f "${DOCKERFILE_PATH}" . gcloud auth configure-docker "${REGION}-docker.pkg.dev" -q docker push "${IMAGE_URI}"REPOSITORY_NAMEは、Artifact Registry リポジトリの名前に置き換えます。Dockerfileスクリプトを実行します。この Dockerfile は XProf の依存関係をインストールします。
ファインチューニング スクリプトをコンテナにコピーする
このセクションでは、XProf ログに必要なボリューム マウントを含む Kubernetes Job マニフェストを作成して適用します。
training_singlehost.yamlジョブ定義を開きます。次のようにマニフェストを適用します。
envsubst < training_singlehost.yaml | kubectl apply -f -
Kubernetes ServiceAccount に XProf ログの書き込み権限を付与する
jaxserviceaccountKubernetes ServiceAccount が XProf ログの書き込みと読み取りを行えるようにするには、バケットに対する Storage オブジェクト ユーザーロール(roles/storage.objectUser)を付与します。export XPROF_GCS_BUCKET_NAME="XPROF_GCS_BUCKET_NAME" gcloud storage buckets add-iam-policy-binding "gs://${XPROF_GCS_BUCKET_NAME}" \ --member="principal://iam.googleapis.com/projects/${PROJECT_NUMBER}/locations/global/workloadIdentityPools/${PROJECT_ID}.svc.id.goog/subject/ns/default/sa/jaxserviceaccount" \ --role="roles/storage.objectUser" \ --project="${PROJECT_ID}" \ --condition=NoneXPROF_GCS_BUCKET_NAMEは、ロールを付与するバケットの名前に置き換えます。Pod 内で XProf を実行します。
kubectl exec POD_NAME -c training-container -it -- bash # exec into the container xprof --port 9001 --logdir /xprof # start xprofPOD_NAMEは、Pod の名前に置き換えます。
XProf ダッシュボードにアクセスする
Pod の XProf サーバーへのポート転送を設定します。
kubectl port-forward POD_NAME 9001:9001ブラウザのアドレスバーに次のように入力します。
http://localhost:9001/XProf トレース ビューアが開きます。
TensorBoard ウィンドウで、[プロファイルのキャプチャ] をクリックします。
[Profile Service URL(s) or TPU name] フィールドに「
localhost:9002」と入力します。詳細をキャプチャするには、[Host Trace (TraceMe) Level] で [verbose] を選択し、Python トレース ロギングを有効にします。
ダッシュボードを表示するには、[キャプチャ] をクリックします。
TensorBoard はプロファイルをキャプチャし、トレーニング スクリプトのパフォーマンスを分析できます。グラフには、TPU と CPU の両方のパフォーマンス プロファイルの実行タイムラインが表示されます。
トレーニング ワークロードのパフォーマンスを分析するためのその他のプロファイリング オプションについては、計算のプロファイリングに関する JAX ドキュメントをご覧ください。
本番環境でのファインチューニング
このチュートリアルでは、分散環境で JAX ベースのトレーニングをテストする方法について説明しました。本番環境で LLM のファインチューニングを最適化するには、Maxtext ライブラリを使用します。拡散モデルに関心がある場合は、Maxdiffusion 実装を使用します。
本番環境で長時間実行されるトレーニング ワークロードまたはファインチューニング ワークロードの場合は、障害発生時の進行状況の損失を最小限に抑えるようにワークロードのチェックポイント処理を設定します。多層チェックポイント処理の設定の詳細については、多層チェックポイント処理を使用して GKE で大規模な ML モデルをトレーニングするをご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
個々のリソースの削除
このチュートリアルで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して次のコマンドを実行して個々のリソースを削除します。
このチュートリアルで作成したリソースを削除します。
gcloud container clusters delete ${CLUSTER_NAME} --location=${REGION} gcloud storage rm --recursive gs://${GCS_BUCKET_NAME} gcloud artifacts docker images delete ${IMAGE_URI} --delete-tagsXProf によって生成されたデータが不要な場合は、XProf で使用されている Cloud Storage バケットを削除します。
gcloud storage rm --recursive gs://${XPROF_GCS_BUCKET_NAME}