Exercício – Empacotar um aplicativo do 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 adicionais podem ajudar a distribuir esses aplicativos para ambientes de datacenter e de borda.

A containerização também fornece muitos benefícios durante o desenvolvimento e os testes. Os exemplos incluem:

  • Consistência do comportamento ao executar uma carga de trabalho em hardware homogêneo.
  • Atualizações incrementais devido a camadas do sistema de arquivos, o que pode reduzir o tempo de implantação.
  • Documentação clara das dependências devido à natureza de autodocumentação.

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 NGC (Contêineres de GPU NVIDIA). Esse serviço é o repositório oficial da NVIDIA para distribuir contêineres acelerados por GPU. Sua carga de trabalho requer acesso a esse repositório para efetuar pull do contêiner de base do DeepStream, que será usado pela nossa carga de trabalho conteinerizada. Para criar uma conta ou entrar com uma conta existente, acesse a página de entrada do NVIDIA NGC.

    1. Entre ou crie uma conta acessando a página de entrada do NVIDIA NGC. Depois de entrar no NVIDIA NGC, selecione seu nome de usuário no canto superior direito e escolha Configuração. Você verá as seguintes opções:

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

    2. Selecione Obter Chave de API. Na tela exibida, na parte superior direita, selecione Gerar Chave de API. Depois, selecione Confirmar no prompt exibido.

      Captura de tela que mostra a tela Chave da API de Geração de NGC.

    3. Forneça as credenciais para o runtime do Docker executando os seguintes comandos em um terminal no computador host:

      sudo docker login nvcr.io
      
    4. Quando for solicitado o Nome de usuário, insira $oauthtoken exatamente como mostrado. Quando for solicitada a Senha, insira o valor da chave de API gerada. Você deve receber a mensagem "Logon bem-sucedido".

  2. Agora que você tem acesso ao nvcr.io, será possível começar a criar contêineres que usam as imagens base fornecidas por meio do NVIDIA NGC. A ferramenta container-builder pode criar imagens fornecendo-a com um arquivo de configuração. Você usará um dos exemplos fornecidos no pacote de grafos de referência.

    1. Para invocar o container-builder para empacotar o aplicativo deepstream-test1, execute os seguintes comandos no computador 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ê deverá ver a saída que contém a mensagem "deepstream_test1_dgpu:latest marcado com êxito".

    Observação

    Caso o erro "docker.errors.DockerException" seja exibido ao executar os comandos anteriores, poderá ser uma indicação de que você não tem o runtime do Docker instalado no computador host. Para continuar, examine as instruções na seção "Instalar dependências do NVIDIA DeepStream Graph Composer" deste módulo sobre como instalar o Docker.

    Observação

    Caso o erro "docker.errors.BuildError: não autorizado: autenticação necessária" seja exibido, poderá ser uma indicação de que você não autenticou adequadamente a sua conta do NVIDIA NGC para usar com o Docker.

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

    Execute os seguintes comandos em um terminal no computador host para habilitar o acesso aos serviços do X11:

    sudo xhost +
    
  4. Confirme se a carga de trabalho conteinerizada é executada conforme o esperado executando o seguinte código em um terminal no computador host:

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

    Esse comando inicia uma instância da imagem de contêiner deepstream_test1_dgpu e fornece acesso a todos os componentes de hardware de GPU disponíveis no computador, fornecendo também acesso ao soquete e à corrente do X11 DISPLAY. Você deverá ver uma saída semelhante à execução anterior que foi invocada usando execute_graph.sh.

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

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