GPU(サービス)

このページでは、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 つのコンテナにのみ接続できます。

サポートされているリージョン

  • us-central1(アイオワ) リーフアイコン 低 CO2
  • asia-southeast1(シンガポール)
  • europe-west4(オランダ) リーフアイコン 低 CO2

料金への影響

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 を使用する場合の要件と制限事項を示します。

  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. GPU 機能を使用するには、サポートされているリージョンの割り当ての増加をリクエストする必要があります。必要な割り当ては Total Nvidia L4 GPU allocation, per project per region で、Cloud Run Admin API にあります。

    [割り当てとシステム上限] ページに移動

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

必要なロール

Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

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 の数を選択します。
  5. [作成] または [デプロイ] をクリックします。

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 です(nvidia L4 は小文字の L で、数字の 14 ではありません)。
  • MAX_INSTANCE: インスタンスの最大数。この数は、プロジェクトに割り当てられた GPU 割り当てを超えることはできません。

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
      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-L4 の L は小文字で、数値の 14 ではありません。
    • MAX_INSTANCE: インスタンスの最大数。この数は、プロジェクトに割り当てられた GPU 割り当てを超えることはできません。
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

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 beta run services update コマンドを使用して GPU の数を 0 に設定します。

  gcloud beta 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 にマウントされます。

提供されたライブラリをサービスが見つけられない場合は、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 つの方法で制限できます。