本页面介绍了 Cloud Run 作业的 GPU 配置。 GPU 非常适合 AI 工作负载,例如使用您偏好的框架训练大语言模型 (LLM)、对 LLM 执行批处理或离线推理,以及将视频处理和图形渲染等其他计算密集型任务作为后台作业来处理。 Google 提供的 NVIDIA L4 GPU 配备 24 GB GPU 内存 (VRAM),该内存与实例内存分开。
Cloud Run 上的 GPU 是全托管式 GPU,无需额外的驱动程序或库。GPU 功能提供按需可用性且无需预留,与 Cloud Run 中的按需 CPU 和按需内存的工作方式类似。
挂接了预安装驱动程序的 L4 GPU 的 Cloud Run 实例会在大约 5 秒内启动,然后容器中运行的进程便可以开始使用该 GPU。
您可以为每个 Cloud Run 实例配置一个 GPU。如果您使用边车容器,请注意 GPU 只能挂接到一个容器。
支持的区域
asia-southeast1
(新加坡)asia-south1
(孟买) . 此区域仅限受邀者使用。如果您对该区域感兴趣,请与您的 Google 客户支持团队联系。europe-west1
(比利时)二氧化碳排放量低
europe-west4
(荷兰)二氧化碳排放量低
us-central1
(爱荷华)二氧化碳排放量低
us-east4
(北弗吉尼亚)
支持的 GPU 类型
您可以为每个 Cloud Run 实例可以使用一个 L4 GPU。L4 GPU 预安装了以下驱动程序:
- 当前 NVIDIA 驱动程序版本:535.216.03 (CUDA 12.2)
价格影响
如需了解 GPU 价格详情,请参阅 Cloud Run 价格。请注意以下要求和注意事项:
- 作业的 GPU 遵循非可用区级冗余价格(预览版)。
- 您必须至少使用 4 个 CPU 和 16 GiB 内存。
- GPU 的费用按实例生命周期的整个时长计费。
- 当您使用
gcloud beta
从源代码部署具有 GPU 配置的服务或函数时,Cloud Run 会使用e2-highcpu-8
机器类型,而不是默认的e2-standard-2
机器类型(预览版)。较大的机器类型可提供更高的 CPU 支持和更高的网络带宽,从而缩短构建时间。
GPU 非可用区级冗余
Cloud Run 作业功能仅为启用 GPU 的实例提供非可用区级冗余支持(预览版)。启用非可用区级冗余后,Cloud Run 会尽最大努力为启用 GPU 的作业尝试故障切换。只有在当时有足够的 GPU 容量时,Cloud Run 才会将作业执行路由到其他可用区。此选项无法保证在故障切换场景中预留容量,但每 GPU 秒的费用较低。
如需详细了解如何启用非可用区级冗余,请参阅配置具有 GPU 的 Cloud Run 作业。
申请增加配额
如果您的项目没有 GPU 配额,请部署 Cloud Run 服务,以便自动获授予该区域的 3 个 nvidia-l4
GPU 配额(不启用可用区级冗余)。请注意,此自动配额授予取决于您的 CPU 和内存容量。删除未使用的服务后,分配的配额保持不变。
如果作业需要额外的 Cloud Run GPU,请申请增加配额。
可并行运行的 GPU 作业实例(任务)数量上限受以下配额的限制:
不具备可用区级冗余的作业 GPU 实例配额。默认情况下,此配额设置为
5
。
并行性值必须小于不具备可用区级冗余的 GPU 配额或不具备可用区级冗余的作业 GPU 实例配额,具体取决于哪个配额更严格。
准备工作
以下列表介绍了在 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.
-
Verify 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run API.
- 如需了解在使用带有 GPU 的 Cloud Run 作业时如何优化性能,请参阅最佳实践:带有 GPU 的 Cloud Run 作业。
-
Cloud Run Developer (
roles/run.developer
) - Cloud Run 作业 -
Service Account User (
roles/iam.serviceAccountUser
) - 服务身份 - 将 JOB_NAME 替换为 Cloud Run 作业的名称。
- IMAGE_URL:对容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/job:latest
。 - 将 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
(nvidiaL
4 小写 L,而不是数值 14)。 - 将 PARALLELISM 替换为小于您为项目分配的适用配额限制最低值的整数值。
如果您要创建新的作业,请跳过此步骤。如果您要更新现有作业,请下载其 YAML 配置:
gcloud run jobs describe JOB_NAME --format export > job.yaml
更新
nvidia.com/gpu
属性、annotations: run.googleapis.com/launch-stage
(发布阶段)和nodeSelector:
:
run.googleapis.com/acceleratorapiVersion: 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: metadata: annotations: run.googleapis.com/gpu-zonal-redundancy-disabled: 'true' 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-L
4 小写 L,而不是数值 14)。
使用以下命令创建或更新作业:
gcloud run jobs replace job.yaml
使用以下命令:
gcloud run jobs describe JOB_NAME
在返回的配置中找到 GPU 设置。
如果您要创建新的作业,请跳过此步骤。如果您要更新现有作业,请下载其 YAML 配置:
gcloud run jobs describe JOB_NAME --format export > job.yaml
删除
nvidia.com/gpu:
、run.googleapis.com/gpu-zonal-redundancy-disabled: 'true'
和nodeSelector: run.googleapis.com/accelerator: nvidia-l4
行。使用以下命令创建或更新作业:
gcloud run jobs replace job.yaml
所需的角色
如需获得配置 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。
gcloud
如需启用非可用区级冗余,您必须指定 --no-gpu-zonal-redundancy
。这是使用 GPU 进行作业所必需的。
如需创建启用了 GPU 的作业,请使用 gcloud beta run jobs create 命令:
gcloud beta run jobs create JOB_NAME \ --image=IMAGE \ --gpu=1 \ --no-gpu-zonal-redundancy
您需要进行如下替换:
如需更新作业的 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 \ --no-gpu-zonal-redundancy
您需要进行如下替换:
YAML
您必须将注释 run.googleapis.com/gpu-zonal-redundancy-disabled:
设置为“true”。这会启用非可用区级冗余,而这是作业使用 GPU 所必需的。
查看 GPU 设置
如需查看 Cloud Run 作业的当前 GPU 设置,请执行以下操作:
gcloud
移除 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
库
默认情况下,所有 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 作业实例配额设置为 5
。如需申请增加配额,请参阅如何增加配额。GPU 任务会尽快启动,并达到最大值,具体取决于您为项目分配的 GPU 配额和所选区域。如果您将并行性设置为高于 GPU 配额限制的值,Cloud Run 部署会失败。
如需计算作业每次执行所使用的 GPU 配额,请将每个作业任务的 GPU 数量乘以并行性值。例如,如果您的 GPU 配额为 10,并使用 --gpu=1
、--parallelism=10
部署 Cloud Run 作业,则该作业会使用全部 10 个 GPU 配额。或者,如果您使用 --gpu=1
、--parallelism=20
进行部署,则部署会失败。
如需了解详情,请参阅最佳实践:带有 GPU 的 Cloud Run 作业。