このページでは、Cloud Run サービスの GPU 構成について説明します。GPU は、大規模言語モデル(LLM)などの AI 推論ワークロードや、動画のコード変換、3D レンダリングなどのコンピューティング集約型の AI 以外のユースケースに適しています。NVIDIA L4 GPU には、インスタンス メモリとは別に、24 GB の GPU メモリ(VRAM)が割り当てられます。
GPU 機能を使用するには、Total Nvidia L4 GPU allocation, per project per region
割り当てをリクエストする必要があります。詳細については、始める前にをご覧ください。
Cloud Run 上の GPU はフルマネージドです。追加のドライバやライブラリは必要ありません。Cloud Run でオンデマンドの CPU とオンデマンドのメモリが機能する仕組みと同様に、GPU 機能は予約なしでオンデマンドの可用性を提供します。GPU を使用するように構成された Cloud Run サービスのインスタンスは、未使用時にゼロにスケールダウンして、費用を節約できます。
ドライバがプリインストールされ、L4 GPU が割り当てられた Cloud Run インスタンスは約 5 秒で起動します。この時点で、コンテナで実行されているプロセスは GPU の使用を開始できます。
Cloud Run インスタンスごとに 1 つの GPU を構成できます。サイドカー コンテナを使用する場合、GPU は 1 つのコンテナにのみ接続できます。
サポートされているリージョン
料金への影響
GPU の料金の詳細については、Cloud Run の料金をご覧ください。次の重要な点に注意してください。
- リクエストごとの料金はありません。GPU 機能を使用するには常に割り当てられた CPU を使用する必要があります。そのため、最小インスタンスはアイドル状態の場合でも全額請求されます。
- 最低でも 4 CPU と 16 GiB のメモリを使用する必要があります。
- GPU は、インスタンスのライフサイクル全体に対して課金されます。
サポートされている GPU タイプ
Cloud Run インスタンスごとに 1 つの L4 GPU を使用できます。L4 GPU には、次のドライバがプリインストールされています。
- 現在の NVIDIA ドライバのバージョン: 535.129.03(CUDA 12.2)
始める前に
次のリストに、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.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run API.
- GPU 機能を使用するには、サポートされているリージョンの割り当ての増加をリクエストする必要があります。必要な割り当ては
Total Nvidia L4 GPU allocation, per project per region
で、Cloud Run Admin API にあります。 - コンテナ イメージのビルドと大規模モデルの読み込みに関する推奨事項については、ベスト プラクティス: GPU を使用した Cloud Run での AI 推論をご覧ください。
- Cloud Run サービスに次の構成があることを確認します。
- CPU は [CPU を常に割り当てる] に構成する必要があります。CPU が常に割り当てられるサービスは、ゼロにスケールダウンできます。
- サービスには少なくとも 4 個の CPU を構成します(8 個の CPU を推奨)。
- 少なくとも 16 GiB のメモリを構成します(32 GiB を推奨)。
- GPU 使用率に最適な最大同時実行数を判断して設定します。
- [最大インスタンス数] は、各リージョンのプロジェクトあたりの GPU の割り当ての下限に設定する必要があります。GPU と最大インスタンスについてをご覧ください。
必要なロール
Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
Cloud Run サービスに対する Cloud Run デベロッパー(
roles/run.developer
)ロール -
サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)ロール
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
GPU を使用して Cloud Run サービスを構成する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
Google Cloud コンソール、Google Cloud CLI、または YAML を使用して GPU を構成できます。
コンソール
Google Cloud コンソールで、[Cloud Run] に移動します。
[コンテナをデプロイ] をクリックし、[サービス] を選択して、新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。
[コンテナ] タブをクリックします。
- 始める前にの推奨事項に従って、CPU、メモリ、同時実行、実行環境、起動プローブを構成します。
- [GPU] チェックボックスをオンにして、[GPU のタイプ] メニューから GPU タイプを選択し、[GPU の数] メニューから GPU の数を選択します。
[作成] または [デプロイ] をクリックします。
gcloud
GPU を有効にしたサービスを作成するには、gcloud beta run deploy コマンドを使用します。
gcloud beta run deploy SERVICE \ --image IMAGE_URL \ --gpu 1
次のように置き換えます。
- SERVICE: Cloud Run サービスの名前。
- IMAGE_URL はコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。
サービスの GPU 構成を更新するには、gcloud beta run services update コマンドを使用します。
gcloud beta run services update SERVICE \ --image IMAGE_URL \ --cpu CPU \ --memory MEMORY \ --no-cpu-throttling \ --gpu GPU_NUMBER \ --gpu-type GPU_TYPE \ --max-instances MAX_INSTANCE
次のように置き換えます。
- SERVICE: Cloud Run サービスの名前。
- IMAGE_URL はコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。 - 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 で、数字の 14 ではありません)。 - MAX_INSTANCE: インスタンスの最大数。この数は、プロジェクトに割り当てられた GPU 割り当てを超えることはできません。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
nvidia.com/gpu:
属性とnodeSelector:
を更新します。
run.googleapis.com/accelerator:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: annotations: autoscaling.knative.dev/maxScale: 'MAX_INSTANCE' run.googleapis.com/cpu-throttling: 'false' spec: containers: - image: IMAGE_URL ports: - containerPort: CONTAINER_PORT name: http1 resources: limits: cpu: 'CPU' memory: 'MEMORY' nvidia.com/gpu: 'GPU_NUMBER' # Optional: use a longer startup probe to allow long starting containers startupProbe: failureThreshold: 1800 periodSeconds: 1 tcpSocket: port: CONTAINER_PORT timeoutSeconds: 1 nodeSelector: run.googleapis.com/accelerator: GPU_TYPE
次のように置き換えます。
- SERVICE: Cloud Run サービスの名前。
- IMAGE_URL はコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。 - CONTAINER_PORT: サービスに設定されているコンテナポート。
- CPU: CPU の数。少なくとも
4
個の CPU を指定する必要があります。 - MEMORY: メモリ容量。少なくとも
16Gi
(16 GiB)を指定する必要があります。 - GPU_NUMBER: 値
1
(1)。Cloud Run インスタンスごとに 1 つの GPU の接続のみをサポートしています。 - GPU_TYPE の値は
nvidia-l4
です。nvidia-L
4 の L は小文字で、数値の 14 ではありません。 - MAX_INSTANCE: インスタンスの最大数。この数は、プロジェクトに割り当てられた GPU 割り当てを超えることはできません。
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
GPU の設定を表示する
Cloud Run サービスの現在のコンテナ設定を表示するには:
コンソール
Google Cloud コンソールで、[Cloud Run] に移動します。
目的のサービスをクリックして、[サービスの詳細] ページを開きます。
[変更内容] タブをクリックします。
右側の詳細パネルの [コンテナ] タブに、GPU の設定が表示されます。
gcloud
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、GPU の設定を見つけます。
GPU の削除
GPU は、Google Cloud コンソール、Google Cloud CLI、または YAML を使用して削除できます。
コンソール
Google Cloud コンソールで、[Cloud Run] に移動します。
[コンテナをデプロイ] をクリックし、[サービス] を選択して、新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。
[コンテナ] タブをクリックします。
- GPU のチェックボックスをオフにします。
[作成] または [デプロイ] をクリックします。
gcloud
GPU を削除するには、gcloud beta run services update コマンドを使用して GPU の数を 0
に設定します。
gcloud beta run services update SERVICE --gpu 0
SERVICE は、Cloud Run サービスの名前に置き換えます。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その 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
ライブラリ
デフォルトでは、すべての NVIDIA L4 ドライバ ライブラリが /usr/local/nvidia/lib64
にマウントされます。
提供されたライブラリをサービスが見つけられない場合は、Dockerfile に ENV LD_LIBRARY_PATH /usr/local/nvidia/lib64:${LD_LIBRARY_PATH}
行を追加して、ダイナミック リンカーの検索パスを更新します。
既存のイメージがあり、更新された Dockerfile でイメージを再ビルドしない場合は、Cloud Run サービスの環境変数として LD_LIBRARY_PATH
を設定することもできます。
12.2 より大きい CUDA バージョンを使用する場合は、上位互換性パッケージがすでにインストールされている新しい NVIDIA ベースイメージを利用するのが最も簡単な方法です。別の方法として、NVIDIA の上位互換性パッケージを手動でインストールし、LD_LIBRARY_PATH
に追加することもできます。NVIDIA の互換性マトリックスを参照して、提供されている NVIDIA ドライバ バージョン(535.129.03)と上位互換性がある CUDA バージョンを確認します。
GPU と最大インスタンス数について
GPU を使用するインスタンスの数は、次の 2 つの方法で制限できます。
- [最大インスタンス数] の設定では、サービスごとのインスタンス数を制限します。これは、GPU のリージョンごとのプロジェクトあたりの割り当てよりも高く設定することはできません。
- 各リージョンのプロジェクトごとに許可される GPU の割り当て。これにより、同じリージョン内のサービス間のインスタンス数が制限されます。