Exercício - Empacote um aplicativo NVIDIA DeepStream Graph Composer em uma carga de trabalho conteinerizada

Concluído

Você viu como o NVIDIA DeepStream Graph Composer pode ajudar no desenvolvimento de aplicativos IVA. Agora vamos mostrar como ferramentas extras podem ajudar a distribuir esses aplicativos para ambientes de datacenter e borda.

A conteinerização também oferece muitos benefícios durante o desenvolvimento e os testes. Exemplos incluem:

  • Consistência de comportamento quando você executa uma carga de trabalho em hardware homogêneo.
  • Atualizações incrementais devido à camada do sistema de arquivos, o que pode reduzir o tempo de implantação.
  • Documentação clara de dependências devido à natureza auto-documentante.

Para obter esses benefícios, você usará a ferramenta container-builder para empacotar o exemplo anterior como um contêiner.

  1. Antes de começar, você precisa configurar uma conta com o serviço NVIDIA GPU Containers (NGC). Este serviço é o repositório oficial da NVIDIA para distribuição de contêineres acelerados por GPU. Sua carga de trabalho requer acesso a esse repositório para obter o contêiner base do DeepStream, que nossa carga de trabalho em contêineres usará. Para criar uma conta ou iniciar sessão com uma conta existente, consulte a página de início de sessão NVIDIA NGC.

    1. Inicie sessão ou crie uma nova conta acedendo à página de início de sessão NVIDIA NGC. Depois de entrar no NVIDIA NGC, selecione seu nome de usuário no canto superior direito e selecione Configuração. Você verá as seguintes opções:

      Captura de tela que mostra o processo de configuração do NGC.

    2. Selecione Obter chave de API. Na tela exibida, no canto superior direito, selecione Gerar chave de API. Em seguida, selecione Confirmar no prompt resultante.

      Captura de tela que mostra a tela NGC Generate API Key.

    3. Forneça as credenciais para o tempo de execução do Docker executando os seguintes comandos em um terminal na máquina host:

      sudo docker login nvcr.io
      
    4. Quando lhe for pedido o nome de utilizador, introduza $oauthtoken exatamente como mostrado. Quando lhe for solicitada a palavra-passe, introduza o valor da chave de API gerada. Você deve receber a mensagem "Login bem-sucedido".

  2. Agora que você tem acesso ao nvcr.io, você pode começar a criar contêineres que usam as imagens base fornecidas através do NVIDIA NGC. A ferramenta container-builder pode criar imagens fornecendo-lhe um arquivo de configuração. Você usará um dos exemplos fornecidos no pacote de gráficos de referência.

    1. Para invocar o container-builder para empacotar o aplicativo deepstream-test1, execute os seguintes comandos na máquina host:

      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. Após a conclusão bem-sucedida, você verá a saída que contém a mensagem "Marcado com êxito deepstream_test1_dgpu:mais recente".

    Nota

    Se você receber um erro "docker.errors.DockerException" ao executar os comandos anteriores, isso pode indicar que você não tem o tempo de execução do Docker instalado na máquina host. Para continuar, consulte as instruções na seção "Install NVIDIA DeepStream Graph Composer Dependencies" deste módulo sobre como instalar o Docker.

    Nota

    Se você receber "docker.errors.BuildError: unauthorized: authentication required", essa mensagem indica que talvez você não tenha autenticado corretamente sua conta NVIDIA NGC para uso com o Docker.

  3. Antes de executar essa carga de trabalho em contêiner, é necessário conceder acesso ao ambiente de exibição X11 quando ele é executado a partir de um contêiner devido à carga de trabalho usando um coletor de saída do tipo EGL (tipo = 2).

    Execute os seguintes comandos a partir de um terminal na máquina host para habilitar o acesso aos serviços X11:

    sudo xhost +
    
  4. Confirme se a carga de trabalho em contêiner é executada conforme o esperado executando o seguinte código em um terminal na máquina host:

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

    Este comando inicia uma instância da deepstream_test1_dgpu imagem do contêiner e fornece acesso a todo o hardware de GPU disponível na máquina, ao mesmo tempo em que fornece acesso ao soquete X11 e à corrente DISPLAY. Você deve ver uma saída semelhante à execução anterior que foi invocada usando execute_graph.sh.

    Captura de tela que mostra o NVIDIA DeepStream Graph Composer Test1 em execução.

Agora você está pronto para publicar sua carga de trabalho em contêineres em um registro de contêiner seguro para distribuição.