本页面介绍使用 GPU 构建流水线的开发者工作流示例。
如需详细了解如何将 GPU 与 Dataflow 搭配使用,请参阅 Dataflow 对 GPU 的支持。如需了解如何在 Dataflow 作业中启用 GPU 的相关信息和示例,请参阅使用 GPU 和使用 GPU 处理 Landsat 卫星图像。
通过将 Apache Beam 与 NVIDIA GPU 搭配使用,您可以创建用于进行预处理和推断的大规模数据处理流水线。使用 GPU 进行本地开发时,请考虑以下信息:
通常,数据处理工作流使用您需要在启动环境和 Dataflow 工作器的执行环境中安装的其他库。此配置会向开发工作流添加步骤,用于配置流水线要求或在 Dataflow 中使用自定义容器。您可能希望本地开发环境尽可能接近生产环境。
如果您使用的库隐式使用了 NVIDIA GPU,并且您的代码无需进行任何更改即可支持 GPU,则您无需更改开发工作流来配置流水线要求或构建自定义的容器。
某些库不能以透明方式在 CPU 和 GPU 使用之间切换,因此需要特定的构建和不同的代码路径。如需复制此场景的“代码-运行-代码”开发生命周期,您将需要执行一些额外的步骤。
运行本地实验时,尽可能准确地复制 Dataflow 工作器的环境会很有用。根据具体库,您可能需要使用安装有 GPU 和所需 GPU 库的机器。您的本地环境中可能没有此类机器。您可以使用在配备有 GPU 的 Google Cloud 虚拟机上运行的容器来模拟 Dataflow 运行程序环境。
流水线不太可能完全由需要 GPU 的转换组成。典型的流水线具有注入阶段,该阶段使用 Apache Beam 提供的众多来源之一。该阶段后跟数据操纵或调整形状,然后馈入 GPU 转换。
下面的两阶段工作流展示了如何使用 GPU 构建流水线。该工作流会分别处理 GPU 相关和非 GPU 相关的问题,并缩短反馈环。
创建流水线
创建可在 Dataflow 上运行的流水线。将需要 GPU 的转换替换为不使用 GPU 但提供相同功能的转换:
创建与 GPU 使用相关的所有转换,例如数据注入和操纵。
通过简单的直通模式或架构更改为 GPU 转换创建存根。
在本地测试
在模拟 Dataflow 工作器执行环境的环境中测试流水线代码的 GPU 部分。以下步骤介绍了运行此测试的方法之一:
创建一个包含所有必要库的 Docker 映像。
开始开发 GPU 代码。
使用包含该 Docker 映像的 Google Cloud 虚拟机开始“代码-运行-代码”周期。要排除库不兼容,请在本地 Python 进程中独立于 Apache Beam 流水线运行 GPU 代码。然后,在直接运行程序上运行整个流水线,或在 Dataflow 上启动流水线。
使用运行容器优化型操作系统的虚拟机
对于满足最低要求的环境,请使用容器优化型虚拟机 (VM)。如需了解详情,请参阅创建挂接 GPU 的虚拟机。
常规工作流如下:
创建一个虚拟机。
连接到虚拟机并运行以下命令:
cos-extensions install gpu sudo mount --bind /var/lib/nvidia /var/lib/nvidia sudo mount -o remount,exec /var/lib/nvidia /var/lib/nvidia/bin/nvidia-smi
确认 GPU 可用:
./nvidia-smi
从作为卷装载的虚拟机启动包含 GPU 驱动程序的 Docker 容器。例如:
docker run --rm -it --entrypoint /bin/bash --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 --volume /var/lib/nvidia/bin:/usr/local/nvidia/bin --privileged gcr.io/bigdatapivot/image_process_example:latest
如需查看 Dockerfile 示例,请参阅构建自定义容器映像。请务必将流水线所需的所有依赖项都添加到该 Dockerfile 中。
如需详细了解如何使用预先配置使用 GPU 的 Docker 映像,请参阅使用已为使用 GPU 而配置的现有映像。
使用容器优化型系统时的实用工具
如需将 Docker CLI 配置为使用
docker-credential-gcr
作为默认 Google Container Registry (GCR) 注册表集的凭据帮助程序,请使用以下命令:docker-credential-gcr configure-docker
如需详细了解如何设置 Docker 凭据,请参阅 docker-credential-gcr。
如需向虚拟机或从虚拟机复制文件(例如流水线代码),请使用
toolbox
。此方法在使用 Custom-Optimized 映像时很有用。 例如:toolbox /google-cloud-sdk/bin/gsutil cp gs://bucket/gpu/image_process/* /media/root/home/<userid>/opencv/
如需了解详情,请参阅使用工具箱调试节点问题。
后续步骤
- 详细了解 Dataflow 对 GPU 的支持。
- 详细了解使用 GPU 的任务。
- 学习使用 GPU 处理 Landsat 卫星图像。