このチュートリアルでは、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 は、TensorFlow、PyTorch、JAX などのフレームワークを使用して構築された ML モデルと AI モデルを高速化するために、Google が独自に開発した特定用途向け集積回路(ASIC)です。
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 を介してコンテナにマウントします。
- GKE に LLM ファインチューニング ジョブをデプロイします。
- ファインチューニング ジョブをモニタリングし、ログを表示します。
始める前に
- 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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. 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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. 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 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 を介してデータを読み取れるようにするには、Kubernetes サービス アカウント(KSA)を作成し、必要な権限を追加します。
permissionsetup.shスクリプトを実行します。このスクリプトを実行すると、Google Cloud プロジェクトと GKE クラスタに次のリソースが構成されます。
- プロジェクトに
gcs-fuse-saという名前の新しい IAM サービス アカウントが作成されます。 - 作成された Google Cloud サービス アカウント(GSA)(
gcs-fuse-sa)には、${GCS_BUCKET_NAME}で指定された Cloud Storage バケットに対するroles/storage.objectViewerロールが付与されます。この権限により、GSA はバケットからオブジェクトを読み取ることができます。 - GKE クラスタ内の
defaultNamespace に、jaxserviceaccountという名前の新しい KSA が作成されます。 - GSA の IAM ポリシーが更新され、KSA に
roles/iam.workloadIdentityUserロールが付与されます。この権限により、KSA は GSA を偽装できます。 KSA にアノテーションを付けて、GSA にリンクします。このアノテーションは、Workload Identity を使用して KSA がどの GSA を偽装するかを GKE に伝えます。
jaxserviceaccountサービス アカウントを使用する GKE クラスタのdefaultNamespace で実行されている Pod は、gcs-fuse-saGSA として認証できるようになります。これらの 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 マニフェストを変更します。
- 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 -
サービス アカウントに XProf ログを書き込む権限を付与する
サービス アカウントで書き込みと読み取りを有効にするには、
"roles/storage.objectUser"ロールを追加します。export GSA_NAME="GSA_NAME" # Same as used in initial setup # Automatically get the current project ID export PROJECT_ID=$(gcloud config get-value project) # Cloud Storage Bucket details export XPROF_GCS_BUCKET_NAME="XPROF_GCS_BUCKET_NAME" # Derived Variables export GSA_EMAIL="${GSA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" gcloud storage buckets add-iam-policy-binding "gs://${XPROF_GCS_BUCKET_NAME}" \ --member="serviceAccount:${GSA_EMAIL}" \ --role="roles/storage.objectUser" \ --project="${PROJECT_ID}"次のように置き換えます。
GSA_NAME: ロールを付与する Google サービス アカウントの名前。XPROF_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 ウィンドウで [Capture profile] をクリックします。
[Profile Service URL(s) or TPU name] フィールドに「
localhost:9002」と入力します。詳細をキャプチャするには、[ホスト トレース(TraceMe)レベル] で [詳細] を選択し、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}