Introdução à IA na borda com NVIDIA Jetson e Azure
A IoT (Internet das Coisas) é muito mais do que luzes piscantes e sensores de leitura. A IoT também é um mecanismo para entregar cargas de trabalho de IA às massas. Tradicionalmente, é comum considerar a IoT como um hardware especializado com sensores físicos que relatam leituras para processamento em um serviço de nuvem.
Com o advento dos dispositivos habilitados para GPU de fator forma pequeno e para FPGA (matriz de porta programável no campo), tornou-se comum ver aplicativos de IA mais pesados sendo executados diretamente em hardware inserido. Com esse paradigma, você pode reduzir o fluxo de saída de dados, além de se concentrar nos resultados importantes gerados pelo processamento de dados na borda.
Quando você deixa de depender da nuvem para processamento e passa a tirar proveito das cargas de trabalho aceleradas no dispositivo, obtém resultados muito mais rápidos, mesmo em um ambiente offline. A plataforma Azure IoT Edge da Microsoft foi projetada para exatamente esse tipo de caso de uso.
O Azure IoT Edge realiza a implantação segura de código em dispositivos IoT usando módulos conteinerizados. Os módulos podem incluir formas conteinerizadas de serviços populares do Azure, incluindo funções sem servidor, Stream Analytics, módulos de Machine Learning, serviços de IA de Visão Personalizada e até mesmo armazenamento local com o SQL Server. Você pode usar a plataforma IoT Edge para obter os mesmos recursos e funcionalidades avançados dos serviços de nuvem que já conhece e adora no seu ambiente de borda. Você pode, de maneira semelhante, modularizar cargas de trabalho conteinerizadas desenvolvidas usando o NVIDIA Graph Composer e, depois, implantar as cargas de trabalho em hardware compatível com o IoT Edge.
Neste módulo, você explorará o desenvolvimento de cargas de trabalho aceleradas por GPU que visam o hardware NVIDIA inserido para implantar uma carga de trabalho de IA na borda usando Azure IoT Edge e os serviços de Internet das Coisas do Azure relacionados.
Hardware NVIDIA Jetson inserido
Cargas de trabalho aceleradas por GPU em dispositivos inseridos de fator forma pequeno ideais para ambientes de borda podem ser executadas na plataforma NVIDIA Jetson. O hardware NVIDIA Jetson é um SOM (sistema em módulo) completo que conta com CPU, GPU e memória necessárias para executar cargas de trabalho da pesquisa visual computacional em um dispositivo com aproximadamente o tamanho de um celular moderno.
A NVIDIA oferece vários dispositivos adequados para IA na borda de sua linha Jetson de ofertas de dispositivos. As ofertas incluem os robustos Jetson AGX Xavier com 512 núcleos e o Jetson Xavier NX, o Jetson TX2 com 256 núcleos de médio alcance e o produto de entrada, o Jetson Nano com 128 núcleos.
O gráfico abaixo mostra as especificações dessas ofertas de hardware:
Todos os dispositivos da família NVIDIA Jetson usam hardware de CPU baseada em ARM para processamento. A plataforma Azure IoT Edge pode ser direcionada para essa arquitetura, de modo que você possa instrumentar os dispositivos NVIDIA inseridos para trabalhar com o runtime do IoT Edge e com os serviços de Internet das Coisas do Azure relacionados.
Para acompanhar esse módulo, você precisará de um dos seguintes dispositivos NVIDIA Jetson inseridos provisionados com o JetPack 4.6:
Azure IoT Edge
O Azure IoT Edge foi projetado para simplificar o processo de produção de análise na borda. O IoT Edge usa uma abordagem moderna para a distribuição de aplicativos por meio de cargas de trabalho conteinerizadas, conhecidas como módulos. Os dispositivos instrumentados com o runtime do IoT Edge podem publicar insights na nuvem do Azure usando protocolos de mensagens com alta taxa de transferência e baixa latência. Um dispositivo pode até mesmo continuar a gerar esses insights em cenários offline. Por causa desses e de outros recursos, o Azure IoT Edge é a solução ideal para a adoção de cargas de trabalho de IA em tempo real em ambientes de borda.
Uma solução baseada no IoT Edge tem três componentes:
- Módulos do IoT Edge: contêineres que executam serviços do Azure, serviços de terceiros ou códigos personalizados. Os contêineres são implantados usando uma especificação definida em um hub no Hub IoT do Azure e são executados localmente nos dispositivos instrumentados do IoT Edge.
- Runtime do IoT Edge: serviço executado em um dispositivo IoT Edge para gerenciar cargas de trabalho de módulo, fornecer mecanismos para mensagens módulo para módulo e dispositivo para nuvem/nuvem para dispositivo, além de orquestrar as cargas de trabalho definidas em um hub.
- Interface baseada em nuvem: a interface é uma coleção de serviços do Azure incluídos em uma instância de recurso do Hub IoT do Azure. Os serviços fornecem um mecanismo para o registro seguro de dispositivos, um mecanismo com alta taxa de transferência para ingestão de dados (via AMQP, MQTT ou HTTPS), capacidade de definir e aplicar especificações de implantação e capacidade de monitorar e gerenciar remotamente dispositivos IoT Edge.
Como opção, uma solução IoT Edge pode incorporar uma instância do Registro de Contêiner do Azure para fornecer distribuição segura de módulos conteinerizados. Essa abordagem é recomendada para cenários de implantação de produção. A imagem abaixo mostra como os três componentes principais podem trabalhar para usar um registro de contêiner para obter uma arquitetura de solução de ponta a ponta de borda para nuvem:
Na imagem anterior, (1) o Hub IoT do Azure distribui uma especificação de implantação que (2) define os módulos a serem executados em seuDispositivoDeBorda, que foi instrumentado com o runtime do IoT Edge e registrado com segurança como um dispositivo IoT Edge no hub. Depois, (3) o runtime do IoT Edge recebe essa especificação, que (4) se refere a um módulo de sensor armazenado no Registro de Contêiner do Azure. Esse módulo é recuperado com segurança e executado localmente no dispositivo de borda, no qual é produzido a telemetria que é transmitida do dispositivo para o hub.
Neste módulo, você implantará uma solução que tem uma arquitetura semelhante à mostrada aqui. A principal diferença é que você incluirá uma especificação de implantação que define um módulo do IoT Edge baseado no DeepStream para publicar resultados de detecção de objetos em um hub IoT. A implantação é executada em um dispositivo NVIDIA Jetson inserido que dá suporte nativo à distribuição ARM64 do runtime do IoT Edge.
Experimente fazer isto
Se a sua tarefa for implantar uma solução de IA na borda, como você economizará tempo de produção usando ofertas de serviço de nuvem? Quais vantagens você obteria usando um serviço como o Azure IoT Edge durante a implementação?