為 Cloud Run 工作設定 GPU

本頁面說明如何為 Cloud Run 作業設定 GPU。GPU 非常適合用於 AI 工作負載,例如使用偏好的架構訓練大型語言模型 (LLM)、對 LLM 執行批次或離線推論,以及處理其他需要大量運算資源的工作,例如以背景工作處理影片和繪圖。Google 提供 NVIDIA L4 GPU,內含 24 GB 的 GPU 記憶體 (VRAM),與執行個體記憶體不同。

Cloud Run 上的 GPU 為全代管服務,不需要額外的驅動程式或程式庫。GPU 功能提供隨選可用性,無須預訂,與 Cloud Run 中的隨選 CPU 和隨選記憶體運作方式類似。

附加 L4 GPU 並預先安裝驅動程式的 Cloud Run 執行個體,大約會在 5 秒內啟動,屆時容器中執行的程序就能開始使用 GPU。

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

支援的地區

支援的 GPU 類型

每個 Cloud Run 執行個體最多可使用一個 L4 GPU。L4 GPU 已預先安裝下列驅動程式:

  • 目前的 NVIDIA 驅動程式版本:535.216.03 (CUDA 12.2)

價格影響

如需 GPU 定價詳細資料,請參閱 Cloud Run 定價。請注意下列規定和考量事項:

  • 工作使用的 GPU 採用非可用區備援定價 (預先發布版)。
  • 最少須使用 4 個 CPU 和 16 GiB 的記憶體。
  • 系統會針對執行個體生命週期的整個期間收取 GPU 費用。

GPU 非可用區備援機制

Cloud Run 作業提供非區域性備援支援 (預先發布版),適用於啟用 GPU 的執行個體。啟用非可用區備援機制後,Cloud Run 會盡可能為啟用 GPU 的工作執行容錯移轉。只有在當時有足夠的 GPU 容量時,Cloud Run 才會將工作執行作業轉送至其他可用區。這個選項無法保證容錯移轉情境的預留容量,但每秒 GPU 的費用較低。

申請提高配額

如果專案沒有 GPU 配額,請部署 Cloud Run 服務,系統就會自動授予該區域 3 個 nvidia-l4 GPU 配額 (關閉可用區備援)。請注意,這項自動配額授予功能取決於 CPU 和記憶體容量,因此不一定適用。刪除未使用的服務後,配額不會變動。

如果需要更多 Cloud Run 作業的 GPU,請申請提高配額

可平行執行的 GPU 工作執行個體 (工作) 數量上限受下列配額限制:

視哪個配額限制較嚴格而定,並行值必須小於不具可用區備援功能的 GPU 配額,或不具可用區備援功能的 Jobs 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. 如要在使用含 GPU 的 Cloud Run 作業時提升效能,請參閱「最佳做法:使用 GPU 的 Cloud Run 作業」。

必要的角色

如要取得設定 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。

gcloud

如要建立啟用 GPU 的工作,請使用 gcloud beta run jobs create 指令:

gcloud beta run jobs create JOB_NAME --image=IMAGE --gpu=1

取代:

  • JOB_NAME 改為您的 Cloud Run 工作名稱。
  • IMAGE_URL,並參照容器映像檔,例如 us-docker.pkg.dev/cloudrun/container/job:latest

如要更新工作的 GPU 設定,請使用 gcloud beta run jobs update 指令:

    gcloud beta run jobs update JOB_NAME \
      --image IMAGE_URL \
      --cpu CPU \
      --memory MEMORY \
      --gpu GPU_NUMBER \
      --gpu-type GPU_TYPE \
      --parallelism PARALLELISM

取代:

  • JOB_NAME 改為您的 Cloud Run 工作名稱。
  • IMAGE_URL,並參照容器映像檔,例如 us-docker.pkg.dev/cloudrun/container/job:latest
  • CPU,且作業至少需要 4 個 CPU。建議值為 8
  • MEMORY,最低為 16Gi (16 GiB)。建議值為 32Gi
  • GPU_NUMBER,值為 1 (一)。如果未指定這個值,但存在 GPU_TYPE,則預設值為 1
  • GPU_TYPE,並指定 GPU 類型。如未指定,但存在 GPU_NUMBER,則預設為 nvidia-l4 (nvidia L4 小寫 L,而非數值 14)。
  • PARALLELISM,且整數值小於您為專案分配的適用配額限制最低值。

YAML

  1. 如果您要建立新工作,請略過這個步驟。 如要更新現有工作,請下載其 YAML 設定

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 更新 nvidia.com/gpu 屬性、annotations: run.googleapis.com/launch-stage (適用於發布階段) 和 nodeSelector:
    run.googleapis.com/accelerator

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
      labels:
        cloud.googleapis.com/location: REGION
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
    template:
      spec:
        template:
          spec:
            containers:
            - image: IMAGE_URL
              limits:
                cpu: 'CPU'
                memory: 'MEMORY'
                nvidia.com/gpu: 'GPU_NUMBER'
            nodeSelector:
              run.googleapis.com/accelerator: GPU_TYPE

    取代:

    • JOB_NAME 改為您的 Cloud Run 工作名稱。
    • IMAGE_URL,並參照容器映像檔,例如 us-docker.pkg.dev/cloudrun/container/job:latest
    • CPU 替換為 CPU 數量。您必須指定至少 4 個 CPU。
    • MEMORY 替換為記憶體大小。您必須指定至少 16Gi (16 GiB)。
    • GPU_NUMBER,值為 1 (一),因為每個 Cloud Run 執行個體僅支援附加一個 GPU。
    • GPU_TYPE,值為 nvidia-l4 (nvidia-L4,小寫 L,不是數字 14)。
  3. 使用下列指令建立或更新作業:

    gcloud run jobs replace job.yaml

查看 GPU 設定

如要查看 Cloud Run 作業目前的 GPU 設定:

gcloud

  1. 使用下列指令:

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

移除 GPU

您可以使用 Google Cloud CLI 或 YAML 移除 GPU。

gcloud

如要移除 GPU,請使用 gcloud beta run jobs update 指令,將 GPU 數量設為 0

  gcloud beta run jobs update JOB_NAME --gpu 0
  

JOB_NAME 替換為 Cloud Run 工作名稱。

YAML

  1. 如果您要建立新工作,請略過這個步驟。 如要更新現有工作,請下載其 YAML 設定

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 刪除 nvidia.com/gpu:nodeSelector: run.googleapis.com/accelerator: nvidia-l4 行。

  3. 使用下列指令建立或更新作業:

    gcloud run jobs replace job.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 和平行處理

如果您在工作執行期間執行平行工作,請判斷並將 parallelism 值設為低於您為專案分配的適用配額限制最低值。依預設,平行執行的工作會將 GPU 工作執行個體配額設為 5。如要申請提高配額,請參閱「如何提高配額」。GPU 工作會盡快啟動,並視您為專案和所選區域分配的 GPU 配額而定,最多可啟動的數量會有所不同。如果將平行處理設定為超過 GPU 配額限制,Cloud Run 部署作業就會失敗。

如要計算工作在每次執行時使用的 GPU 配額,請將每個工作任務的 GPU 數量乘以平行處理值。舉例來說,假設您有 10 個 GPU 配額,並使用 --gpu=1--parallelism=10 部署 Cloud Run 作業,則作業會耗用所有 10 個 GPU 配額。或者,如果您使用 --gpu=1--parallelism=20 部署,部署作業就會失敗。

詳情請參閱最佳做法:使用 GPU 的 Cloud Run 作業