练习 - 将 NVIDIA DeepStream Graph Composer 应用程序打包成容器化的工作负载

已完成

你已经了解了 NVIDIA DeepStream Graph Composer 如何帮助开发 IVA 应用程序。 现在将展示额外工具如何帮助将这些应用程序分发到数据中心和边缘环境。

容器化在开发和测试期间也提供许多好处。 示例包括:

  • 在同类硬件上执行工作负载时的行为一致性。
  • 由于文件系统分层而进行的增量更新,可以缩短部署时间。
  • 由于其自我记录的特性,有着清晰的依赖关系文档。

为了实现这些好处,将使用 container-builder 工具将前面的示例打包为容器

  1. 在开始之前,需要使用 NVIDIA GPU Containers (NGC) 服务设置一个帐户。 该服务是 NVIDIA 用于分发 GPU 加速容器的官方存储库。 工作负载需要访问此存储库才能拉入 DeepStream 基础容器,我们的容器化工作负载将使用该容器。 要创建帐户或使用现有帐户登录,请参阅 NVIDIA NGC 登录页面

    1. 转到 NVIDIA NGC 登录页面,登录或创建一个新帐户。 登录 NVIDIA NGC 后,在右上角选择用户名,然后选择“设置”。 将看到以下选项:

      显示 NGC 设置过程的屏幕截图。

    2. 选择“获取 API 密钥”。 在出现的屏幕上,在右上角选择“生成 API 密钥”。 然后在出现的提示中选择“确认”

      显示 NGC 生成 API 密钥屏幕的屏幕截图。

    3. 通过在主机上的终端中执行以下命令,将凭据提供给 Docker 运行时:

      sudo docker login nvcr.io
      
    4. 当系统提示输入“用户名”时,请按照所示原样输入“$oauthtoken”。 当系统提示输入“密码”时,输入生成的 API 密钥的值。 应该会收到“登录成功”消息。

  2. 现在已访问 nvcr.io,可以开始生成使用通过 NVIDIA NGC 提供的基础映像的容器。 可以通过向 container-builder 工具提供配置文件来生成映像。 将使用参考图形包中提供的示例之一。

    1. 要调用 container-builder 来打包 deepstream-test1 应用程序,请在主机上运行以下命令

      cd /opt/nvidia/deepstream/deepstream-6.0/reference_graphs/deepstream-test1
      sudo container_builder -c ds_test1_container_builder_dgpu.yaml -d /opt/nvidia/graph-composer/config/target_x86_64_cuda_11_4.yaml
      
    2. 成功完成后,应该会看到包含消息“成功标记 deepstream_test1_dgpu:latest”的输出。

    注意

    如果在运行上述命令时收到“docker.errors.DockerException”错误,则可能表明未在主机上安装 Docker 运行时。 要继续,请查看本模块“安装 NVIDIA DeepStream Graph Composer 依赖项”部分中有关如何安装 Docker 的说明。

    注意

    如果收到“docker.errors.BuildError:未授权:需要身份验证”消息,则表明可能没有正确验证用于 Docker 的 NVIDIA NGC 帐户。

  3. 在运行此容器化工作负载之前,需要通过使用 EGL 类型的输出接收器(类型 = 2)授予对 X11 显示环境的访问权限,因为它是从容器运行的。

    从主机上的终端运行以下命令以启用对 X11 服务的访问:

    sudo xhost +
    
  4. 通过在主机上的终端中运行以下代码,确认容器化工作负载按预期运行:

    sudo docker run -it --rm --gpus all -v /tmp/.X11-unix/:/tmp/.X11-unix/ -e DISPLAY=:0 
    deepstream_test1_dgpu
    

    此命令启动 deepstream_test1_dgpu 容器映像的实例,并为其提供对计算机上所有可用 GPU 硬件的访问权限,同时还提供对 X11 套接字和当前 DISPLAY 的访问权限。 应该会看到与使用 execute_graph.sh 调用的上次运行类似的输出。

    显示运行 NVIDIA DeepStream Graph Composer Test1 的屏幕截图。

现已准备好将工作中的容器化工作负载发布到安全的容器注册表中以进行分发。