本页面介绍了 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 只能挂接到一个容器。
支持的区域
us-central1
(爱荷华) 二氧化碳排放量低asia-southeast1
(新加坡)
价格影响
如需了解 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 时适用的相关要求和限制:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run API.
- 如需使用 GPU 功能,您必须为受支持的区域申请增加配额。所需配额为
Total Nvidia L4 GPU allocation, per project per region
,该配额位于 Cloud Run Admin API 下。 - 如需了解有关构建容器映像和加载大型模型的建议,请参阅最佳实践:使用 GPU 在 Cloud Run 上进行 AI 推理。
- 确保您的 Cloud Run 服务具有以下配置:
- CPU 必须配置为始终分配 CPU。请注意,始终分配 CPU 的服务仍然可以缩减至零。
- 为您的服务至少配置 4 个 CPU,建议配置 8 个 CPU。
- 至少配置 16 GiB 的内存,建议配置 32 GiB。
- 确定并设置适合 GPU 用量的最佳并发数上限。
- 实例数上限必须设置为低于允许的每个区域每个项目的 GPU 配额的数量。请参阅GPU 和实例数上限简介。
所需的角色
如需获得配置和部署 Cloud Run 服务所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
Cloud Run 服务的 Cloud Run Developer (
roles/run.developer
) 角色 -
服务身份的 Service Account User (
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。
控制台
在 Google Cloud 控制台中,前往 Cloud Run:
点击部署容器,然后选择服务以配置新服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本。
如果您要配置新服务,请根据需要填写初始服务设置页面,然后点击容器、网络、安全性以展开服务配置页面。
点击容器标签页。
- 按照准备工作中的建议配置 CPU、内存、并发设置、执行环境和启动探测。
- 勾选 GPU 复选框,然后从 GPU 类型菜单中选择 GPU 类型,并从 GPU 数量菜单中选择 GPU 数量。
点击创建或部署。
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
(nvidiaL
4 小写 L,而不是数值 14)。 - 将 MAX_INSTANCE 替换为实例数上限。此数量不能超过为您的项目分配的 GPU 配额。
YAML
如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 YAML 配置:
gcloud run services describe SERVICE --format export > service.yaml
更新
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-L
4 小写 L,而不是数值 14)。 - 将 MAX_INSTANCE 替换为实例数上限。此数量不能超过为您的项目分配的 GPU 配额。
使用以下命令创建或更新服务:
gcloud run services replace service.yaml
查看 GPU 设置
如需查看 Cloud Run 服务的当前 GPU 设置,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud Run:
点击您感兴趣的服务以打开“服务详细信息”页面。
点击修订版本标签页。
在右侧的详细信息面板中,“容器”标签页下列出了 CPU 设置。
gcloud
使用以下命令:
gcloud run services describe SERVICE
在返回的配置中找到 GPU 设置。
移除 GPU
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 移除 GPU。
控制台
在 Google Cloud 控制台中,前往 Cloud Run:
点击部署容器,然后选择服务以配置新服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本。
如果您要配置新服务,请根据需要填写初始服务设置页面,然后点击容器、网络、安全性以展开服务配置页面。
点击容器标签页。
- 取消选中 GPU 复选框。
点击创建或部署。
gcloud
如需移除 GPU,请使用 gcloud beta run services update 命令将 GPU 的数量设置为 0
:
gcloud beta run services update SERVICE --gpu 0
将 SERVICE 替换为您的 Cloud Run 服务的名称。
YAML
如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 YAML 配置:
gcloud run services describe SERVICE --format export > service.yaml
删除
nvidia.com/gpu:
和nodeSelector: run.googleapis.com/accelerator: nvidia-l4
行。使用以下命令创建或更新服务:
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 的实例的数量受到以下两种限制:
- 实例数上限设置会限制每个服务的实例数。此数量不能设置为高于每个区域每个项目的 GPU 配额。
- 每个区域每个项目允许使用的 GPU 配额。这会限制同一区域内各项服务的实例数量。