本页面介绍了 Cloud Run 工作器池的 GPU 配置。 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 可用区级冗余和非可用区级冗余的费用有所不同。如需了解 GPU 价格详情,请参阅 Cloud Run 价格。
- GPU 工作器池无法自动扩缩。即使 GPU 未运行任何进程,只要工作器池 GPU 实例正在运行,您就需要为 GPU 付费。
- 工作器池的 CPU 和内存价格不同于服务和作业。不过,GPU SKU 的价格与服务和作业相同。
- 您必须至少使用 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 秒的费用较低。
SLA
Cloud Run GPU 的服务等级协议 (SLA) 取决于工作器池是使用可用区级冗余还是非可用区级冗余选项。如需了解详情,请参阅 SLA 页面。
申请增加配额
首次在某个区域中使用 Cloud Run nvidia-l4
GPU 的项目在创建首次部署时,会自动被授予 3 GPU 配额(可用区级冗余关闭)。如果您需要额外的 Cloud Run GPU,则必须为 Cloud Run 工作器池申请增加配额。点击以下按钮中提供的链接可申请所需的配额。
所需配额 | 配额链接 |
---|---|
关闭可用区级冗余的 GPU(价格较低) | 在不使用可用区级冗余的情况下申请 GPU 配额 |
开启可用区级冗余的 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 最佳实践:使用 GPU 的 Cloud Run 工作器池。
- 确保您的 Cloud Run 工作器池具有以下配置:
- 将结算设置配置为基于实例的结算方式。请注意,设置为基于实例的结算方式的工作器池仍可以缩减至零。
- 为工作器池至少配置 4 个 CPU,建议配置 8 个 CPU。
- 至少配置 16 GiB 的内存,建议配置 32 GiB。
- 确定并设置适合 GPU 用量的最佳并发数上限。
-
Cloud Run Developer (
roles/run.developer
) - Cloud Run 工作器池 -
Service Account User (
roles/iam.serviceAccountUser
) - 服务身份 在 Google Cloud 控制台中,前往 Cloud Run:
从菜单中选择工作器池,然后点击部署容器以配置新的工作器池。如果您要配置现有工作器池,请点击该工作器池,然后点击修改和部署新的修订版本。
如果您要配置新的工作器池,请填写初始工作器池设置页面,然后点击容器、卷、网络、安全性以展开工作器池配置页面。
点击容器标签页。
- 按照准备工作中的建议配置 CPU、内存、并发设置、执行环境和启动探测
- 勾选 GPU 复选框,然后从 GPU 类型菜单中选择 GPU 类型,并从 GPU 数量菜单中选择 GPU 数量。
- 默认情况下,可用区级冗余处于开启状态。如需更改当前设置,请选中 GPU 复选框以显示 GPU 冗余选项。
- 选择无可用区级冗余可关闭可用区级冗余
- 选择可用区级冗余可启用可用区级冗余。
点击创建或部署。
- WORKER_POOL:Cloud Run 工作器池的名称。
- IMAGE_URL:对包含工作器池的容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
。 - WORKER_POOL:Cloud Run 工作器池的名称。
- IMAGE_URL:对包含工作器池的容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
。 - 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)。 - GPU_ZONAL_REDUNDANCY:
no-gpu-zonal-redundancy
以关闭可用区级冗余,或gpu-zonal-redundancy
以开启可用区级冗余。 如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 YAML 配置:
gcloud run services describe SERVICE --format export > service.yaml
更新
nvidia.com/gpu:
属性和nodeSelector:
:
run.googleapis.com/accelerator:apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL spec: template: metadata: annotations: run.googleapis.com/launch-stage: BETA run.googleapis.com/gpu-zonal-redundancy-disabled: 'GPU_ZONAL_REDUNDANCY' spec: containers: - image: IMAGE_URL resources: limits: cpu: 'CPU' memory: 'MEMORY' nvidia.com/gpu: '1' nodeSelector: run.googleapis.com/accelerator: GPU_TYPE
替换以下内容:
- WORKER_POOL:Cloud Run 工作器池的名称。
- IMAGE_URL:对包含工作器池的容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
。 - CPU:CPU 数量。您必须至少指定
4
个 CPU。 - MEMORY:内存量。您必须至少指定
16Gi
(16 GiB)。 - GPU_TYPE:值
nvidia-l4
(nvidia-L
4 小写 L,而不是数值 14)。 - GPU_ZONAL_REDUNDANCY:
false
以开启 GPU 可用区级冗余,或true
以关闭 GPU 可用区级冗余。
使用以下命令创建或更新服务:
gcloud run services replace service.yaml
- SERVICE:Cloud Run 服务的名称。
- GPU_ZONAL_REDUNDANCY:
false
以开启 GPU 可用区级冗余,或true
以关闭 GPU 可用区级冗余。 - IMAGE_URL:对包含工作器池的容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
。 - CPU:CPU 数量。您必须至少指定
4
个 CPU。 - MEMORY:内存量。您必须至少指定
16Gi
(16 GiB)。 - GPU_TYPE:值
nvidia-l4
(nvidia-L
4 小写 L,而不是数值 14)。 在 Google Cloud 控制台中,前往 Cloud Run 工作池页面:
点击您感兴趣的工作器池以打开工作器池详情页面。
点击修改和部署新的修订版本。
在配置详细信息中找到 GPU 设置。
使用以下命令:
gcloud beta run worker-pools describe WORKER_POOL
在返回的配置中找到 GPU 设置。
在 Google Cloud 控制台中,前往 Cloud Run:
从菜单中选择工作器池,然后点击部署容器以配置新的工作器池。如果您要配置现有工作器池,请点击该工作器池,然后点击修改和部署新的修订版本。
如果您要配置新的工作器池,请填写初始工作器池设置页面,然后点击容器、卷、网络、安全性以展开工作器池配置页面。
点击容器标签页。
- 取消选中 GPU 复选框。
- 点击创建或部署。
如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 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
所需的角色
如需获得配置和部署 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
如需创建启用了 GPU 的服务,请使用 gcloud run deploy 命令:
gcloud beta run worker-pools deploy WORKER_POOL \ --image IMAGE_URL \ --gpu 1
替换以下内容:
如需更新服务的 GPU 配置,请使用 gcloud run services update 命令:
gcloud beta run worker-pools update WORKER_POOL \ --image IMAGE_URL \ --cpu CPU \ --memory MEMORY \ --gpu GPU_NUMBER \ --gpu-type GPU_TYPE \ --GPU_ZONAL_REDUNDANCY
替换以下内容:
YAML
Terraform
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
resource "google_cloud_run_v2_worker_pool" "default" {
provider = google-beta
name = "WORKER_POOL"
location = "REGION"
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"
}
}
}
替换以下内容:
查看 GPU 设置
如需查看 Cloud Run 工作器池的当前 GPU 设置,请执行以下操作:
控制台
gcloud
移除 GPU
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 移除 GPU。
控制台
gcloud
如需移除 GPU,请将 GPU 数量设置为 0
:
gcloud beta run worker-pools update WORKER_POOL --gpu 0
将 WORKER_POOL 替换为 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) 向后兼容。