GPU(服务)

本页面介绍了 Cloud Run 服务的 GPU 配置。GPU 非常适合 AI 推理工作负载,例如大语言模型 (LLM) 或其他计算密集型非 AI 应用场景(如视频转码和 3D 渲染)。Google 提供的 NVIDIA L4 GPU 配备 24 GB GPU 内存 (VRAM),该内存与实例内存分开。

如需使用 GPU 功能,您必须申请 Total Nvidia L4 GPU allocation, per project per region 配额。如需了解详情,请参阅准备工作

Cloud Run 上的 GPU 是全托管式 GPU,无需额外的驱动程序或。GPU 功能提供按需可用性且无需预留,与 Cloud Run 中的按需 CPU 和按需内存的工作方式类似。已配置为使用 GPU 的 Cloud Run 服务的实例在不使用时可缩减至零,以节省费用。

挂接了预安装驱动程序的 L4 GPU 的 Cloud Run 实例会在大约 5 秒内启动,然后容器中运行的进程便可以开始使用该 GPU。

您可以为每个 Cloud Run 实例配置一个 GPU。请注意,如果您使用 Sidecar 容器,则 GPU 只能挂接到一个容器。

支持的区域

价格影响

如需了解 GPU 价格详情,请参阅 Cloud Run 价格。请注意以下重要事项:

  • 无需按请求付费。由于您必须使用 CPU always allocated 才能使用 GPU 功能,因此即使在空闲时,实例数下限也会按全费率计费。
  • 您必须至少使用 4 个 CPU 和 16 GiB 内存。
  • 系统会按实例生命周期的整个时长计费。

支持的 GPU 类型

您可以为每个 Cloud Run 实例可以使用一个 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 API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限管理访问权限

配置具有 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。网址格式为 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。网址格式为 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 配额

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。网址格式为 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • CONTAINER_PORT 替换为为您的服务设置的容器端口。
    • CPU 替换为 CPU 数量。您必须至少指定 4 个 CPU。
    • MEMORY 替换为内存量。您必须至少指定 16Gi (16 GiB)。
    • GPU_NUMBER 替换为值 1(一个),因为我们仅支持每个 Cloud Run 实例挂接一个 GPU。
    • GPU_TYPE 替换为值 nvidia-l4(nvidia-L4 小写 L,而不是数值 14)。
    • MAX_INSTANCE 替换为实例数上限。此数量不能超过为您的项目分配的 GPU 配额
  3. 使用以下命令创建或更新服务:

    gcloud run services replace service.yaml

查看 GPU 设置

如需查看 Cloud Run 服务的当前 GPU 设置,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

  2. 点击您感兴趣的服务以打开“服务详细信息”页面。

  3. 点击修订版本标签页。

  4. 在右侧的详细信息面板中,“容器”标签页下列出了 CPU 设置。

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. 点击部署容器,然后选择服务以配置新服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本

  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 下。

如果您的服务无法找到所提供的库,请通过将 ENV LD_LIBRARY_PATH /usr/local/nvidia/lib64:${LD_LIBRARY_PATH} 行添加到 Dockerfile 中来更新动态链接器的搜索路径。

请注意,如果您有现有映像,并且不想使用更新的 Dockerfile 重新构建该映像,也可以将 LD_LIBRARY_PATH 设置为 Cloud Run 服务的环境变量。

如果您想使用大于 12.2 的 CUDA 版本,最简单的方法是依赖于已安装向前兼容性软件包的较新 NVIDIA 基础映像。另一种方法是手动安装 NVIDIA 向前兼容性软件包,并将其添加到 LD_LIBRARY_PATH。请参阅 NVIDIA 的兼容性矩阵,确定哪些 CUDA 版本与提供的 NVIDIA 驱动程序版本 (535.129.03) 向后兼容。

关于 GPU 和实例数上限

具有 GPU 的实例的数量受到以下两种限制: