このチュートリアルでは、 上のマルチノード、マルチ GPU GKE クラスタで Gemma 3 大規模言語モデル(LLM)をファインチューニングする方法について説明します Google Cloud。 このクラスタは、8 個の NVIDIA B200 GPU を搭載した A4 仮想マシン(VM)インスタンスを使用します。
このチュートリアルで説明する主なプロセスは次のとおりです。
- GKE Autopilot を使用して、高性能な GKE クラスタをデプロイします。このデプロイの一環として、必要なソフトウェアがプリインストールされたカスタム VM イメージを作成します。
- クラスタがデプロイされたら、このチュートリアルに付属のスクリプト セットを使用して、分散ファインチューニング ジョブを実行します。このジョブでは、 the Hugging Face Accelerate ライブラリを使用します。
このチュートリアルは、GKE クラスタをデプロイして Google Cloud LLM をトレーニングすることに関心のある ML エンジニア、研究者、 プラットフォーム管理者、オペレーター、データ / AI スペシャリストを対象としています。
目標
Hugging Face を使用して Gemma 3 モデルにアクセスする。
環境を準備する。
A4 GKE クラスタを作成してデプロイする。
完全にシャーディングされたデータ並列処理(FSDP)で Hugging Face Accelerate ライブラリを使用して Gemma 3 モデルをファインチューニングする。
ジョブをモニタリングする。
クリーンアップする。
費用
このドキュメントでは、課金対象である次のコンポーネントを使用します。 Google Cloud
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- アカウントに Google Cloud ログインします。 を初めて使用する場合は、 Google Cloud、 アカウントを作成して、 実際のシナリオでプロダクトがどのように機能するかを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイに利用できる $300 分の無料クレジットも提供されます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します Google Cloud 。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクト Google Cloud を作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
必要な API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します Google Cloud 。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクト Google Cloud を作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
必要な API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com -
ユーザー アカウントにロールを付与します。次の IAM ロールごとに 1 回ずつ、次のコマンドを実行します。
roles/compute.admin, roles/iam.serviceAccountUser, roles/cloudbuild.builds.editor, roles/artifactregistry.admin, roles/storage.admin, roles/serviceusage.serviceUsageAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
次のように置き換えます。
PROJECT_ID: プロジェクト ID。USER_IDENTIFIER: ユーザー アカウントの識別子。例:myemail@example.com。ROLE: ユーザー アカウントに付与する IAM ロール。
- プロジェクトのデフォルト サービス アカウントを有効にします: Google Cloud
export PROJECT_NUMBER="$(gcloud projects describe "PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --project=PROJECT_ID
- デフォルト サービス アカウントに編集者ロール(
roles/editor)を付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role=roles/editor
- ユーザー アカウントのローカル認証情報を作成します。
gcloud auth application-default login
- プロジェクトで OS Login を有効にします。
gcloud compute project-info add-metadata --metadata=enable-oslogin=TRUE
- Hugging Face アカウントにログインするか、アカウントを作成します。
Hugging Face を使用して Gemma 3 にアクセスする
Hugging Face を使用して Gemma 3 にアクセスする手順は次のとおりです。
- Hugging Face にログインします。
- Hugging Face
writeアクセス トークンを作成します。
[Your Profile] > [Settings] > [Access tokens] > [+Create new token] をクリックします。 write accessトークン値をコピーして保存します。このチュートリアルの後半で使用します。
環境を準備する
環境を準備するには、次の設定を行います。
次のように置き換えます。
PROJECT_ID: GKE クラスタを作成する Google Cloud プロジェクト の名前。RESERVATION: 予約済みの容量の識別子。CLUSTER_NAME: 作成する GKE クラスタの名前。CLUSTER_REGION: GKE クラスタを作成するリージョン。クラスタは、予約が存在するリージョンにのみ作成できます。HF_TOKEN: 前のセクションで作成した Hugging Face アクセス トークン。ARTIFACT_REPO_LOCATION: Artifact Registry リポジトリを作成する場所。
Autopilot モードの GKE クラスタを作成する
Autopilot モードで GKE クラスタを作成するには、次のコマンドを実行します。
GKE クラスタの作成が完了するまでに時間がかかることがあります。クラスタの作成が完了したことを確認するには、 Google Cloud コンソールで Google Cloud [Kubernetes クラスタ] に移動します。
Hugging Face の認証情報用の Kubernetes Secret を作成する
Hugging Face の認証情報用の Kubernetes Secret を作成する手順は次のとおりです。
GKE クラスタと通信するように
kubectlを構成します。Hugging Face トークンを保存する Kubernetes Secret を作成します。
ワークロードを準備する
ワークロードを準備する手順は次のとおりです。
ワークロード スクリプトを作成する
ファインチューニング ワークロードで使用するスクリプトを作成する手順は次のとおりです。
ワークロード スクリプト用のディレクトリを作成します。このディレクトリを作業ディレクトリとして使用します。
Google Cloud Build を使用する
cloudbuild.yamlファイルを作成します。このファイルは、ワークロード コンテナを作成して Artifact Registry に保存します。ファインチューニング ジョブを実行する
Dockerfileファイルを作成します。accel_fsdp_gemma3_config.yamlファイルを作成します。この構成ファイルは、複数の GPU にチューニング ジョブを分割するように Hugging Face Accelerate に指示します。finetune.yamlファイルを作成します。finetune.pyファイルを作成します。
Docker と Cloud Build を使用してファインチューニング コンテナを作成する
Artifact Registry Docker リポジトリを作成します。
前の手順で作成した
llm-finetuning-gemmaディレクトリで、次のコマンドを実行してファインチューニング イメージを作成し、Artifact Registry に push します。イメージの URL をエクスポートします。このチュートリアルの後半で使用します。
ファインチューニング ワークロードを開始する
ファインチューニング ワークロードを開始する手順は次のとおりです。
finetune マニフェストを適用して、ファインチューニング ジョブを作成します。
GKE Autopilot モードでクラスタを使用しているため、GPU 対応ノードの起動に数分かかることがあります。
次のコマンドを実行して、ジョブをモニタリングします。
次のコマンドを実行して、ジョブのログを確認します。
ジョブ リソースはモデルデータをダウンロードし、8 つすべての GPU を使用してモデルをファインチューニングします。ダウンロードが完了するまでに 5 分ほどかかります。 ダウンロードが完了すると、ファインチューニング プロセスが完了するまでに約 2 時間 30 分かかります。
ワークロードをモニタリングする
GKE クラスタでの GPU の使用状況をモニタリングして、ファインチューニング ジョブが効率的に実行されていることを確認できます。これを行うには、ブラウザで次のリンクを開きます。
ワークロードをモニタリングすると、次の内容を確認できます。
- GPU の使用状況: ファインチューニング ジョブが正常に実行されている場合、 8 つの GPU すべての使用率が上昇し、高いレベルで安定することが トレーニング全体を通して予想されます。
- ジョブの期間: 指定した A4 クラスタでジョブが完了するまでに約 10 分かかります。
クリーンアップする。
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
リソースを削除する
ファインチューニング ジョブを削除するには、次のコマンドを実行します。
GKE クラスタを削除するには、次のコマンドを実行します。
プロジェクトの削除
プロジェクト Google Cloud を削除します。
gcloud projects delete PROJECT_ID