このページでは、Cloud Run ワーカープールの GPU 構成について説明します。NVIDIA L4 GPU には、インスタンス メモリとは別に、24 GB の GPU メモリ(VRAM)が割り当てられます。
Cloud Run 上の GPU はフルマネージドです。追加のドライバやライブラリは必要ありません。Cloud Run でオンデマンドの CPU とオンデマンドのメモリが機能する仕組みと同様に、GPU 機能は予約なしでオンデマンドの可用性を提供します。
ドライバがプリインストールされ、L4 GPU が割り当てられた Cloud Run インスタンスは約 5 秒で起動します。この時点で、コンテナで実行されているプロセスは GPU の使用を開始できます。
Cloud Run インスタンスごとに 1 つの GPU を構成できます。サイドカー コンテナを使用する場合、GPU は 1 つのコンテナにのみ接続できます。
サポートされるリージョン
asia-southeast1
(シンガポール)asia-south1
(ムンバイ)。このリージョンは招待制です。このリージョンにご興味をお持ちの場合は、Google アカウント チームにお問い合わせください。europe-west1
(ベルギー)低 CO2
europe-west4
(オランダ)低 CO2
us-central1
(アイオワ)低 CO2
us-east4
(北バージニア)
サポートされている GPU タイプ
Cloud Run インスタンスごとに 1 つの L4 GPU を使用できます。L4 GPU には、次のドライバがプリインストールされています。
- 現在の NVIDIA ドライバのバージョン: 535.216.03 (CUDA 12.2)
料金への影響
GPU の料金の詳細については、Cloud Run の料金をご覧ください。次の要件と考慮事項に注意してください。
- GPU ゾーン冗長性と非ゾーン冗長性では、費用が異なります。GPU の料金の詳細については、Cloud Run の料金をご覧ください。
- GPU ワーカープールは自動スケーリングできません。GPU がプロセスを実行していない場合でも、ワーカープールの GPU インスタンスが実行されている限り、GPU の料金が請求されます。
- ワーカープールの CPU とメモリの料金は、サービスとジョブの料金とは異なります。ただし、GPU SKU の料金はサービスとジョブと同じです。
- 最低でも 4 CPU と 16 GiB のメモリを使用する必要があります。
- GPU は、インスタンスのライフサイクル全体に対して課金されます。
GPU ゾーン冗長性オプション
デフォルトでは、Cloud Run はリージョン内の複数のゾーンにワーカープールをデプロイします。このアーキテクチャには、固有の復元力が備わっています。ゾーンが停止した場合、Cloud Run は影響を受けるゾーンから同じリージョン内の正常なゾーンにトラフィックを自動的に転送します。
GPU リソースを操作する場合は、GPU リソースに特定の容量制約があるので注意してください。ゾーンの停止中、GPU ワークロードの標準フェイルオーバー メカニズムは、残りの正常なゾーンで未使用の GPU 容量が十分に利用可能であることを前提としています。GPU の制約により、この容量が常に利用可能であるとは限りません。
ゾーン停止時の GPU アクセラレーション ワーカープールの可用性を高めるために、GPU 専用のゾーン冗長性を構成できます。
ゾーン冗長性がオン(デフォルト): Cloud Run は、複数のゾーンにわたってワーカープールの GPU 容量を予約します。これにより、影響を受けるゾーンからルート変更されたトラフィックをワーカープールが正常に処理できる可能性が大幅に高まり、ゾーン障害時の信頼性が向上します。ただし、GPU 秒あたりの費用が増加します。
ゾーン冗長性がオフ: Cloud Run は、GPU ワークロードのフェイルオーバーをベスト エフォート ベースで試みます。トラフィックは、その時点で十分な GPU 容量が使用可能な場合にのみ、他のゾーンにルーティングされます。このオプションでは、フェイルオーバー シナリオの予約容量は保証されませんが、GPU 秒あたりの費用は低くなります。
SLA
Cloud Run GPU の SLA は、ワーカープールがゾーン冗長性または非ゾーン冗長性のオプションを使用しているかどうかによって異なります。詳細については、SLA ページをご覧ください。
割り当ての増加をリクエストする
リージョンで Cloud Run nvidia-l4
GPU を初めて使用するプロジェクトには、最初のデプロイメントの作成時に 3 つの GPU 割り当て(ゾーン冗長性オフ)が自動的に付与されます。追加の Cloud Run GPU が必要な場合は、Cloud Run ワーカープールの割り当ての増加をリクエストする必要があります。以下のボタンにあるリンクから、必要な割り当てをリクエストしてください。
必要な割り当て | 割り当てリンク |
---|---|
ゾーン冗長性が「オフ」になっている GPU(低価格) | ゾーン冗長性のない GPU 割り当てをリクエストする |
ゾーン冗長性が「オン」になっている GPU(高価格) | ゾーン冗長性のある GPU 割り当てをリクエストする |
割り当ての増加のリクエストについて詳しくは、割り当てを増やす方法をご覧ください。
始める前に
次のリストに、Cloud Run で GPU を使用する場合の要件と制限事項を示します。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run API.
- 必要な割り当てをリクエストします。
- コンテナ イメージのビルドと大規模モデルの読み込みに関する推奨事項については、GPU のベスト プラクティス: GPU を使用した Cloud Run ワーカープールをご覧ください。
- Cloud Run ワーカープールに次の構成があることを確認します。
- 課金設定をインスタンス ベースの課金に構成します。インスタンス ベースの課金に設定されているワーカープールは、ゼロにスケールできます。
- ワーカープールには少なくとも 4 個の CPU を構成します(8 個の CPU を推奨)。
- 少なくとも 16 GiB のメモリを構成します(32 GiB を推奨)。
- GPU 使用率に最適な最大同時実行数を判断して設定します。
-
Cloud Run ワーカープールに対する Cloud Run デベロッパー(
roles/run.developer
) - サービス ID に対するサービス アカウント ユーザー ロール(
roles/iam.serviceAccountUser
) Google Cloud コンソールで Cloud Run に移動します。
メニューから [ワーカープール] を選択し、[コンテナをデプロイ] をクリックして新しいワーカープールを構成します。既存のワーカープールを構成する場合は、ワーカープールをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいワーカープールを構成する場合は、最初のワーカープール設定ページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてワーカープール構成ページを開きます。
[コンテナ] タブをクリックします。
- 始める前にの推奨事項に従って、CPU、メモリ、同時実行、実行環境、起動プローブを構成します。
- [GPU] チェックボックスをオンにして、[GPU のタイプ] メニューから GPU タイプを選択し、[GPU の数] メニューから GPU の数を選択します。
- デフォルトでは、ゾーン冗長性がオンになっています。現在の設定を変更するには、GPU チェックボックスをオンにして、GPU 冗長性オプションを表示します。
- [ゾーン冗長性なし] を選択して、ゾーンの冗長性を無効にします。
- [ゾーンの冗長性] を選択して、ゾーンの冗長性を有効にします。
[作成] または [デプロイ] をクリックします。
- WORKER_POOL: Cloud Run ワーカープールの名前。
- IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
など)。 - WORKER_POOL: Cloud Run ワーカープールの名前。
- IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
など)。 - CPU: CPU の数。少なくとも
4
個の CPU を指定する必要があります。 - MEMORY: メモリの量。少なくとも
16Gi
(16 GiB)を指定する必要があります。 - GPU_NUMBER: 値
1
(1)。これが指定されていないが GPU_TYPE が存在する場合、デフォルトは1
です。 - GPU_TYPE: GPU タイプ。これが指定されていないが GPU_NUMBER が存在する場合、デフォルトは
nvidia-l4
です(nvidiaL
4 の l は小文字の L、数値の 14 ではありません)。 - GPU_ZONAL_REDUNDANCY: ゾーン冗長性をオフにするには
no-gpu-zonal-redundancy
、ゾーン冗長性をオンにするにはgpu-zonal-redundancy
。 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
nvidia.com/gpu:
属性とnodeSelector:
を更新します。
run.googleapis.com/accelerator:apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL spec: template: metadata: annotations: run.googleapis.com/launch-stage: BETA run.googleapis.com/gpu-zonal-redundancy-disabled: 'GPU_ZONAL_REDUNDANCY' spec: containers: - image: IMAGE_URL resources: limits: cpu: 'CPU' memory: 'MEMORY' nvidia.com/gpu: '1' nodeSelector: run.googleapis.com/accelerator: GPU_TYPE
次のように置き換えます。
- WORKER_POOL: Cloud Run ワーカープールの名前。
- IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
など)。 - CPU: CPU の数。少なくとも
4
個の CPU を指定する必要があります。 - MEMORY: メモリの量。少なくとも
16Gi
(16 GiB)を指定する必要があります。 - GPU_TYPE の値は
nvidia-l4
です。nvidia-L
4 の l は小文字の L、数値の 14 ではありません。 - GPU_ZONAL_REDUNDANCY: GPU ゾーン冗長性をオンにするには
false
、オフにするにはtrue
。
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
- SERVICE: Cloud Run サービスの名前。
- GPU_ZONAL_REDUNDANCY: GPU ゾーン冗長性をオンにするには
false
、オフにするにはtrue
。 - IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
など)。 - CPU: CPU の数。少なくとも
4
個の CPU を指定する必要があります。 - MEMORY: メモリの量。少なくとも
16Gi
(16 GiB)を指定する必要があります。 - GPU_TYPE の値は
nvidia-l4
です。nvidia-L
4 の l は小文字の L、数値の 14 ではありません。 Google Cloud コンソールで、Cloud Run の [ワーカー プール] ページに移動します。
目的のワーカープールをクリックして、[ワーカープールの詳細] ページを開きます。
[新しいリビジョンの編集とデプロイ] をクリックします。
構成の詳細で GPU の設定を見つけます。
次のコマンドを使用します。
gcloud beta run worker-pools describe WORKER_POOL
返された構成で、GPU の設定を見つけます。
Google Cloud コンソールで Cloud Run に移動します。
メニューから [ワーカープール] を選択し、[コンテナをデプロイ] をクリックして新しいワーカープールを構成します。既存のワーカープールを構成する場合は、ワーカープールをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいワーカープールを構成する場合は、最初のワーカープール設定ページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてワーカープール構成ページを開きます。
[コンテナ] タブをクリックします。
- GPU のチェックボックスをオフにします。
- [作成] または [デプロイ] をクリックします。
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
nvidia.com/gpu:
行とnodeSelector: run.googleapis.com/accelerator: nvidia-l4
行を削除します。次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
必要なロール
Cloud Run のワーカープールの構成とデプロイに必要な権限を取得するには、ワーカープールに対する次の IAM ロールを付与するよう管理者に依頼してください。
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run ワーカープールがGoogle Cloud API(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
GPU を使用して Cloud Run ワーカープールを構成する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
Google Cloud コンソール、Google Cloud CLI、または YAML を使用して GPU を構成できます。
コンソール
gcloud
GPU を有効にしたサービスを作成するには、gcloud run deploy コマンドを使用します。
gcloud beta run worker-pools deploy WORKER_POOL \ --image IMAGE_URL \ --gpu 1
次のように置き換えます。
サービスの GPU 構成を更新するには、gcloud run services update コマンドを使用します。
gcloud beta run worker-pools update WORKER_POOL \ --image IMAGE_URL \ --cpu CPU \ --memory MEMORY \ --gpu GPU_NUMBER \ --gpu-type GPU_TYPE \ --GPU_ZONAL_REDUNDANCY
次のように置き換えます。
YAML
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
resource "google_cloud_run_v2_worker_pool" "default" {
provider = google-beta
name = "WORKER_POOL"
location = "REGION"
template {
gpu_zonal_redundancy_disabled = "GPU_ZONAL_REDUNDANCY"
containers {
image = "IMAGE_URL"
resources {
limits = {
"cpu" = "CPU"
"memory" = "MEMORY"
"nvidia.com/gpu" = "1"
}
}
}
node_selector {
accelerator = "GPU_TYPE"
}
}
}
次のように置き換えます。
GPU の設定を表示する
Cloud Run ワーカープールの現在の GPU 設定を表示するには:
コンソール
gcloud
GPU を削除する
GPU は、 Google Cloud コンソール、Google Cloud CLI、または YAML を使用して削除できます。
コンソール
gcloud
GPU を削除するには、GPU の数を 0
に設定します。
gcloud beta run worker-pools update WORKER_POOL --gpu 0
WORKER_POOL は、Cloud Run ワーカープールの名前に置き換えます。
YAML
ライブラリ
デフォルトでは、すべての NVIDIA L4 ドライバ ライブラリが /usr/local/nvidia/lib64
にマウントされます。Cloud Run は、このパスを GPU を含むコンテナの LD_LIBRARY_PATH
環境変数(${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64
)に自動的に追加します。これにより、ダイナミック リンカーは NVIDIA ドライバ ライブラリを見つけることができます。リンカーは、LD_LIBRARY_PATH
環境変数にリストされている順序でパスを検索して解決します。この変数で指定した値は、デフォルトの Cloud Run ドライバ ライブラリパス /usr/local/nvidia/lib64
よりも優先されます。
12.2 より大きい CUDA バージョンを使用する場合は、上位互換性パッケージがすでにインストールされている新しい NVIDIA ベースイメージを利用するのが最も簡単な方法です。別の方法として、NVIDIA の上位互換性パッケージを手動でインストールし、LD_LIBRARY_PATH
に追加することもできます。NVIDIA の互換性マトリックスを参照して、提供されている NVIDIA ドライバ バージョン(535.216.03)と上位互換性がある CUDA バージョンを確認します。