本页面提供有关 GPU 如何与 Dataflow 配合使用的背景信息。
在开始使用 GPU 进行开发作业之前,请参阅使用 GPU 进行开发,了解有关使用 GPU 构建流水线的开发者工作流和提示。
如需了解如何在 Dataflow 作业中启用 GPU 的相关信息和示例,请参阅使用 GPU 和使用 GPU 处理 Landsat 卫星图像。如需查看其他示例,请参阅:
在 Dataflow 作业中使用 GPU 可以加快某些数据处理任务的速度。GPU 执行某些计算的速度比 CPU 更快。这些计算通常是数字或线性代数,通常用于图像处理和机器学习用例。性能提高的程度因用例、计算类型和处理的数据量而异。
在 Dataflow 中使用 GPU 的前提条件
Dataflow 会在 Docker 容器内的工作器虚拟机中执行用户代码。这些工作器虚拟机运行 Container-Optimized OS。为了让 Dataflow 作业使用 GPU,必须完成以下安装:
- GPU 驱动程序安装在工作器虚拟机上,并可供 Docker 容器访问。如需了解详情,请参阅安装 GPU 驱动程序。
- 您的流水线所需的 GPU 库(例如 NVIDIA CUDA-X 库或 NVIDIA CUDA 工具包)安装在自定义容器映像中。 如需了解详情,请参阅配置容器映像。
价格
使用 GPU 的作业按 Dataflow 价格页面中指定的费用收费。
注意事项
机器类型规范
如需详细了解每种 GPU 型号支持的机器类型,请参阅 GPU 平台。支持 N1 机器类型的 GPU 同时也支持自定义 N1 机器类型。
GPU 的类型和数量决定了工作器可以拥有的 vCPU 和内存数量的上限。如需了解对应的限制,请参阅可用性部分。
指定更多 CPU 或内存时,您可能需要指定更多 GPU。
如需了解详情,请参阅 Compute Engine 上的 GPU。
GPU 和工作器并行性
对于使用 Dataflow Runner v2 架构的 Python 流水线,Dataflow 会为每个虚拟机核心启动一个 Apache Beam SDK 进程。每个 SDK 进程都在其各自的 Docker 容器中运行,从而产生许多线程,每个线程都会处理传入的数据。
GPU 使用多个进程架构,并且 Dataflow 工作器中的 GPU 对所有进程和线程都可见。因此,为了避免 GPU 内存超额订阅,您可能需要管理 GPU 访问权限。如果您使用的是 TensorFlow,则以下任何建议都可以帮助您避免 GPU 内存超额订阅:
无论工作器 vCPU 数量是多少,请将 Dataflow 工作器配置为仅启动一个容器化的 Python 进程。如需进行此配置,请在启动作业时使用以下流水线选项:
--experiments=no_use_multiple_sdk_containers
--number_of_worker_harness_threads
如需详细了解要使用的线程数,请参阅减少线程数
请使用只有一个 vCPU 的机器类型。
当多个 TensorFlow 进程使用同一 GPU 时,您可能需要将每个进程配置为仅占用部分 GPU 内存。此配置有助于防止所有进程过度订阅 GPU 内存。 由于进行该配置并不简单,因此请限制 TensorFlow 进程的数量。
是否空闲
如需了解可用的 GPU 类型和工作器虚拟机配置,请参阅 Dataflow 位置。
后续步骤
- 详细了解使用 GPU 的任务。
- 学习使用 GPU 处理 Landsat 卫星图像。