服務的 GPU 支援

本頁面說明 Cloud Run 服務的 GPU 設定。GPU 適用於 AI 推論工作負載,例如大型語言模型 (LLM),或其他需要大量運算資源的非 AI 用途,例如影片轉碼和 3D 算繪。Google 提供的 NVIDIA L4 GPU 配備 24 GB 的 GPU 記憶體 (VRAM),與執行個體記憶體分開。

Cloud Run 上的 GPU 是全代管服務,不需要額外的驅動程式或程式庫。GPU 功能提供隨選可用性,無須預先保留,類似於 Cloud Run 中的隨選 CPU 和隨選 記憶體 運作方式。已設定為使用 GPU 的 Cloud Run 服務執行個體,可在未使用時調降至零,以節省成本。

在附加 L4 GPU 且預先安裝驅動程式的情況下,Cloud Run 執行個體可在約 5 秒內啟動,此時在容器中執行的程序就能開始使用 GPU。

您可以為每個 Cloud Run 執行個體設定一個 GPU。如果您使用附屬容器,請注意 GPU 只能連接至一個容器。

支援的地區

支援的 GPU 類型

每個 Cloud Run 執行個體可使用一個 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 的費用。

服務水準協議

Cloud Run GPU 的 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. 請參閱最佳做法:在 Cloud Run 中使用 GPU 進行 AI 推論,瞭解建構容器映像檔和載入大型模型的最佳做法。
  9. 請確認 Cloud Run 服務具有下列設定:
  10. 必要的角色

    如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予您服務的以下 IAM 角色:

    • Cloud Run 開發人員 (roles/run.developer) - Cloud Run 服務
    • 服務帳戶使用者 (roles/iam.serviceAccountUser) - 服務身分

    如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果您的 Cloud Run 服務介面與Google Cloud API (例如 Cloud 用戶端程式庫) 連結,請參閱服務身分設定指南。如要進一步瞭解如何授予角色,請參閱部署權限管理存取權

    設定含 GPU 的 Cloud Run 服務

    任何設定變更都會建立新的修訂版本。除非您明確做出更新,否則後續的修訂版本也會自動取得這個設定。

    您可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 設定 GPU。

    控制台

    1. 前往 Google Cloud 控制台的 Cloud Run:

      前往 Cloud Run

    2. 從選單中選取「Services」(服務),然後按一下「Deploy container」(部署容器),即可設定新的服務。如果您要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」

    3. 如果您要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」展開服務設定頁面。

    4. 按一下「Container」分頁標籤。

      圖片

      • 請按照「事前準備」一節的建議,設定 CPU、記憶體、並行處理、執行環境和啟動探測。
      • 勾選 GPU 核取方塊,然後從「GPU type」選單中選取 GPU 類型,並從「Number of GPUs」選單中選取 GPU 數量。
      • 根據預設,系統會為新服務啟用區域備援功能。如要變更目前設定,請選取 GPU 核取方塊,顯示 GPU 備援機制選項。
        • 選取「無可用區備援機制」,關閉可用區備援機制
        • 選取「可用區備援機制」即可開啟可用區備援機制。
    5. 按一下 [Create] (建立) 或 [Deploy] (部署)

    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。網址的形狀為 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。網址的形狀為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • CPU 與 CPU 數量。您必須至少指定 4 CPU。
    • MEMORY 與記憶體大小。您必須至少指定 16Gi (16 GiB)。
    • GPU_NUMBER 的值為 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。網址的形狀為 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 搭配 false 可開啟 GPU 區域備援功能,搭配 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 搭配 false 可開啟 GPU 區域備援功能,搭配 true 則可關閉。
    • IMAGE_URL 與容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用的是 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的形狀為 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 服務目前的 GPU 設定,請按照下列步驟操作:

    控制台

    1. 前往 Google Cloud 控制台的 Cloud Run:

      前往 Cloud Run

    2. 按一下您感興趣的服務,開啟「服務詳細資料」頁面。

    3. 按一下「Revisions」(修訂版本) 分頁標籤。

    4. 在右側的詳細資料面板中,「GPU」設定會列在「容器」分頁下方。

    gcloud

    1. 使用下列指令:

      gcloud run services describe SERVICE
    2. 在傳回的設定中找出 GPU 設定。

    移除 GPU

    您可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 移除 GPU。

    控制台

    1. 前往 Google Cloud 控制台的 Cloud Run:

      前往 Cloud Run

    2. 從選單中選取「Services」(服務),然後按一下「Deploy container」(部署容器),即可設定新的服務。如果您要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」

    3. 如果您要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」展開服務設定頁面。

    4. 按一下「Container」分頁標籤。

      圖片

      • 取消勾選 GPU 核取方塊。
    5. 按一下 [Create] (建立) 或 [Deploy] (部署)

    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 的相容性矩陣,判斷哪些 CUDA 版本與提供的 NVIDIA 驅動程式版本 (535.216.03) 相容。

    關於 GPU 和最大執行個體

    含有 GPU 的執行個體數量有兩種限制:

    • 「Maximum instances」設定會限制每項服務的執行個體數量。這項值不得高於 每個區域的 GPU 專案配額
    • 每個區域每個專案允許的 GPU 配額。這項限制會限制同一個地區中各項服務的執行個體數量