使用 GPU 进行开发

本页面介绍使用 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 相关的问题,并缩短反馈环。

  1. 创建流水线

    创建可在 Dataflow 上运行的流水线。将需要 GPU 的转换替换为不使用 GPU 但提供相同功能的转换:

    1. 创建与 GPU 使用相关的所有转换,例如数据注入和操纵。

    2. 通过简单的直通模式或架构更改为 GPU 转换创建存根。

  2. 在本地测试

    在模拟 Dataflow 工作器执行环境的环境中测试流水线代码的 GPU 部分。以下步骤介绍了运行此测试的方法之一:

    1. 创建一个包含所有必要库的 Docker 映像。

    2. 开始开发 GPU 代码。

    3. 使用包含该 Docker 映像的 Google Cloud 虚拟机开始“代码-运行-代码”周期。要排除库不兼容,请在本地 Python 进程中独立于 Apache Beam 流水线运行 GPU 代码。然后,在直接运行程序上运行整个流水线,或在 Dataflow 上启动流水线。

使用运行容器优化型操作系统的虚拟机

对于满足最低要求的环境,请使用容器优化型虚拟机 (VM)。如需了解详情,请参阅创建挂接 GPU 的虚拟机

常规工作流如下:

  1. 创建一个虚拟机。

  2. 连接到虚拟机并运行以下命令:

    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
    
  3. 确认 GPU 可用:

    ./nvidia-smi
    
  4. 从作为卷装载的虚拟机启动包含 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/
    

    如需了解详情,请参阅使用工具箱调试节点问题

后续步骤