サービスの GPU サポート

このページでは、Cloud Run サービスの GPU 構成について説明します。GPU は、大規模言語モデル(LLM)などの AI 推論ワークロードや、動画のコード変換、3D レンダリングなどのコンピューティング集約型の AI 以外のユースケースに適しています。NVIDIA L4 GPU には、インスタンス メモリとは別に、24 GB の GPU メモリ(VRAM)が割り当てられます。

Cloud Run 上の GPU はフルマネージドです。追加のドライバやライブラリは必要ありません。Cloud Run でオンデマンドの CPU とオンデマンドのメモリが機能する仕組みと同様に、GPU 機能は予約なしでオンデマンドの可用性を提供します。GPU を使用するように構成された Cloud Run サービスのインスタンスは、未使用時にゼロにスケールダウンして、費用を節約できます。

ドライバがプリインストールされ、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 ゾーン冗長性と非ゾーン冗長性では、費用が異なります。GPU の料金の詳細については、Cloud Run の料金をご覧ください。
  • 最低でも 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 を使用する場合の要件と制限事項を示します。

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Run API.

    Enable the API

  7. 必要な割り当てをリクエストします
  8. コンテナ イメージのビルドと大規模モデルの読み込みに関する推奨事項については、ベスト プラクティス: GPU を使用した Cloud Run での AI 推論をご覧ください。
  9. Cloud Run サービスに次の構成があることを確認します。
  10. 必要なロール

    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 を構成できます。

    コンソール

    1. Google Cloud コンソールで Cloud Run に移動します。

      Cloud Run に移動

    2. メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

    3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。

    4. [コンテナ] タブをクリックします。

      画像

      • 始める前にの推奨事項に従って、CPU、メモリ、同時実行、実行環境、起動プローブを構成します。
      • [GPU] チェックボックスをオンにして、[GPU のタイプ] メニューから GPU タイプを選択し、[GPU の数] メニューから GPU の数を選択します。
      • デフォルトでは、新しいサービスのゾーン冗長性がオンになっています。現在の設定を変更するには、GPU チェックボックスをオンにして、GPU 冗長性オプションを表示します。
        • [ゾーン冗長性なし] を選択して、ゾーンの冗長性を無効にします。
        • [ゾーンの冗長性] を選択して、ゾーンの冗長性を有効にします。
    5. [作成] または [デプロイ] をクリックします。

    gcloud

    GPU を有効にしたサービスを作成するには、gcloud run deploy コマンドを使用します。

      gcloud 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 run services update コマンドを使用します。

      gcloud 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
        --GPU_ZONAL_REDUNDANCY
        

    次のように置き換えます。

    • 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 です(nvidia L4 の L は小文字、数値 14 ではありません)。
    • MAX_INSTANCE: インスタンスの最大数。この数は、プロジェクトに割り当てられた GPU 割り当てを超えることはできません。
    • GPU_ZONAL_REDUNDANCY は、ゾーン冗長性をオフにするには no-gpu-zonal-redundancy、ゾーン冗長性をオンにするには gpu-zonal-redundancy に置き換えます。

    YAML

    1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

      gcloud run services describe SERVICE --format export > service.yaml
    2. nvidia.com/gpu: 属性と nodeSelector:
      run.googleapis.com/accelerator:
      を更新します。

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE
      spec:
        template:
          metadata:
            annotations:
              autoscaling.knative.dev/maxScale: 'MAX_INSTANCE'
              run.googleapis.com/cpu-throttling: 'false'
              run.googleapis.com/gpu-zonal-redundancy-disabled: 'GPU_ZONAL_REDUNDANCY'
          spec:
            containers:
            - image: IMAGE_URL
              ports:
              - containerPort: CONTAINER_PORT
                name: http1
              resources:
                limits:
                  cpu: 'CPU'
                  memory: 'MEMORY'
                  nvidia.com/gpu: '1'
              # 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_TYPE の値は nvidia-l4 です。nvidia-L4 の L は小文字で、数値の 14 ではありません。
      • MAX_INSTANCE: インスタンスの最大数。この数は、プロジェクトに割り振られた GPU 割り当てを超えることはできません。
      • GPU_ZONAL_REDUNDANCY は、GPU ゾーン冗長性をオンにするには false、オフにするには true に置き換えます。
    3. 次のコマンドを使用して、サービスを作成または更新します。

      gcloud run services replace service.yaml

    Terraform

    Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

    Terraform 構成の google_cloud_run_v2_service リソースに次の内容を追加します。

    resource "google_cloud_run_v2_service" "default" {
      provider = google-beta
      name     = "SERVICE"
      location = "europe-west1"
    
      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"
        }
      }
    }
    

    次のように置き換えます。

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • GPU_ZONAL_REDUNDANCY は、GPU ゾーン冗長性をオンにするには false、オフにするには true に置き換えます。
    • 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_TYPE の値は nvidia-l4 です。nvidia-L4 の L は小文字で、数値の 14 ではありません。

    GPU の設定を表示する

    Cloud Run サービスの現在のコンテナ設定を表示するには:

    コンソール

    1. Google Cloud コンソールで Cloud Run に移動します。

      Cloud Run に移動

    2. 目的のサービスをクリックして、[サービスの詳細] ページを開きます。

    3. [変更内容] タブをクリックします。

    4. 右側の詳細パネルの [コンテナ] タブに、GPU の設定が表示されます。

    gcloud

    1. 次のコマンドを使用します。

      gcloud run services describe SERVICE
    2. 返された構成で、GPU の設定を見つけます。

    GPU の削除

    GPU は、 Google Cloud コンソール、Google Cloud CLI、または YAML を使用して削除できます。

    コンソール

    1. Google Cloud コンソールで Cloud Run に移動します。

      Cloud Run に移動

    2. メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

    3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。

    4. [コンテナ] タブをクリックします。

      画像

      • GPU のチェックボックスをオフにします。
    5. [作成] または [デプロイ] をクリックします。

    gcloud

    GPU を削除するには、gcloud run services update コマンドを使用して GPU の数を 0 に設定します。

      gcloud run services update SERVICE --gpu 0
      

    SERVICE は、Cloud Run サービスの名前に置き換えます。

    YAML

    1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

      gcloud run services describe SERVICE --format export > service.yaml
    2. nvidia.com/gpu: 行と nodeSelector: run.googleapis.com/accelerator: nvidia-l4 行を削除します。

    3. 次のコマンドを使用して、サービスを作成または更新します。

      gcloud run services replace service.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 バージョンを確認します。

    GPU と最大インスタンス数について

    GPU を使用するインスタンスの数は、次の 2 つの方法で制限できます。