Introdução ao NVIDIA DeepStream Graph Composer

Concluído

Anteriormente, apresentamos o SDK do NVIDIA DeepStream. Os desenvolvedores podem usá-lo para criar aplicativos de IVA (análise inteligente de vídeo) otimizados que podem ingerir várias fontes de entrada de vídeo, aplicar inferência em cascata em quadros processados e produzir telemetria que pode ser publicada em serviços de nuvem como o Microsoft Azure.

Vimos o desenvolvimento de aplicativos com o SDK do NVIDIA DeepStream usando uma abordagem orientada por arquivos de configuração. Esse método é uma estratégia altamente habilitada para o desenvolvimento de IVA, mas o NVIDIA Graph Composer leva essa abordagem ainda mais além. Você pode usá-lo para gerar pipelines de IVA compatíveis com o DeepStream usando um editor visual com componentes do tipo "arrastar e soltar". Ao usar esse mecanismo, você pode simplificar ainda mais o desenvolvimento e também vê como os componentes se relacionam entre si em um grafo interativo.

Captura de tela mostrando o aplicativo NVIDIA DeepStream Graph Composer.

Os componentes disponíveis podem parecer familiares para você devido aos Grupos de Configuração que usamos anteriormente. Esses componentes e os Grupos de Configuração são derivados de funções fornecidas nas bibliotecas C do SDK do DeepStream. Esses componentes são disponibilizados para o aplicativo Composer usando um Registro local que efetua pull e armazena extensões fornecidas pela NVIDIA. O aplicativo Composer também permite importar extensões personalizadas para dar suporte a componentes.

Depois que um grafo estiver pronto para produção, a ferramenta container-builder incluída permite que os desenvolvedores empacotem grafos do Composer em cargas de trabalho em contêineres capazes de serem executadas em dispositivos x86 ou ARM64. É possível usar esse recurso com o Graph Composer para criar pipelines de IVA conteinerizados que podem ser implantados em dispositivos compatíveis com a borda ou de classe de servidor.

O processo completo desse fluxo de trabalho é mostrado aqui.

Diagrama mostrando um fluxo de trabalho do NVIDIA DeepStream Graph Composer.

Integrar cargas de trabalho conteinerizadas do Graph Composer aos serviços de Internet das Coisas do Azure

Ao empacotar cargas de trabalho do DeepStream Graph Composer contêineres, os aplicativos de IVA podem ser executados em cenários de borda para nuvem com várias funcionalidades, como:

  • Sistema de mensagens de dispositivo para nuvem.
  • Sistema de mensagens de nuvem para dispositivo.
  • Monitoramento de dispositivo.
  • Atualizações remotas.
  • Implantação escalonável por meio da integração a Azure IoT Edge.

Com essa oferta de serviço, você pode instrumentar um dispositivo compatível com um runtime que fornece orquestração de cargas de trabalho conteinerizadas e conectividade segura em um ponto de ingestão conhecido como hub IoT.

O runtime do IoT Edge é executado no dispositivo físico em que as cargas de trabalho conteinerizadas são chamadas de módulos. Esses módulos podem se comunicar entre si usando o roteamento de mensagens. Por exemplo, um módulo pode produzir telemetria e outro pode agregar mensagens das primeiras mensagens usando o Azure Stream Analytics na borda. As mensagens desse módulo podem ser publicadas diretamente na nuvem por meio de uma conexão com um hub IoT.

Diagrama mostrando um tempo de execução do Azure IoT Edge.

Com dispositivos registrados e gerenciados com segurança em um hub IoT, é possível implantar perfeitamente cargas de trabalho atualizadas em dispositivos, além de monitorar o status de conectividade de uma frota inteira. Como resultado, você pode colocar seus aplicativos do DeepStream Graph Composer em produção com suporte para todas as fases do ciclo de vida de desenvolvimento do software. Essas áreas incluem suporte a plug-in para o Azure DevOps, a capacidade de modificar cargas de trabalho execução usando módulos gêmeos e implantações direcionadas com base nos metadados do dispositivo.

Diagrama mostrando uma interface de nuvem do Hub IoT do Azure.

Neste módulo, exploraremos como desenvolver aplicativos usando o DeepStream Graph Composer. Depois, vamos empacotar o resultado em uma carga de trabalho conteinerizada. Por fim, prepararemos esse contêiner para produção publicando-o em uma instância do Registro de Contêiner do Azure. No módulo de acompanhamento, veremos como efetuar pull dessa carga de trabalho de um registro de contêiner seguro e implantá-la em um dispositivo NVIDIA inserido que executa o IoT Edge.

Experimente fazer isto

Imagine que você tenha sido encarregado de desenvolver um aplicativo de IVA para contar o número de pessoas que entram em um restaurante. Agora suponha que o CEO adora sua prova de conceito e deseja implantar esse aplicativo em mil locais em todo o mundo. Como você pode criar uma estratégia para realizar essa implantação? Quais ferramentas você pode usar para acelerar o ciclo de desenvolvimento e teste?