Introdução à IA na borda com NVIDIA Jetson e Azure

Concluído

A Internet das Coisas (IoT) é muito mais do que luzes piscantes e sensores de leitura. A IoT também é um mecanismo para entregar cargas de trabalho de IA para as massas. Tradicionalmente, é típico pensar em IoT como hardware especializado com sensores físicos que relatam leituras até um serviço de nuvem para processamento.

Com o advento de dispositivos habilitados para GPU de formato pequeno e FPGA (field programmable gate array), tornou-se comum ver aplicativos de IA mais pesados sendo executados diretamente em hardware incorporado. Com esse paradigma, você pode reduzir o fluxo de saída de dados, mas também se concentrar nos resultados importantes que vêm do processamento de dados na borda.

Quando você deixa de depender da nuvem para processamento para tirar proveito de 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 exatamente para esse tipo de caso de uso.

O Azure IoT Edge realiza a implantação segura de código em dispositivos IoT usando módulos em contêineres. 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 poderosos dos serviços de nuvem que você já conhece e adora em seu ambiente de borda. Da mesma forma, você pode modularizar cargas de trabalho em contêineres que foram desenvolvidas usando o NVIDIA Graph Composer e, em seguida, implantar as cargas de trabalho em hardware compatível com IoT Edge.

Neste módulo, você explorará o desenvolvimento de cargas de trabalho aceleradas por GPU que visam hardware incorporado NVIDIA para implantar uma carga de trabalho de IA na borda usando o Azure IoT Edge e serviços relacionados do Azure IoT.

Hardware incorporado NVIDIA Jetson

Cargas de trabalho aceleradas por GPU em dispositivos incorporados de formato pequeno que são ideais para ambientes de borda podem ser executadas na plataforma NVIDIA Jetson. O hardware NVIDIA Jetson é um sistema completo em módulo (SOM) que tem toda a CPU, GPU e memória necessárias para executar cargas de trabalho de visão computacional em um dispositivo do tamanho de um telefone celular moderno.

A NVIDIA oferece vários dispositivos que são adequados para IA na borda em sua linha Jetson de ofertas de dispositivos. As ofertas incluem o robusto Jetson AGX Xavier Xavier e Jetson Xavier NX de 512 núcleos, o Jetson TX2 de gama média de 256 núcleos e o Jetson Nano de entrada de 128 núcleos.

O gráfico a seguir mostra as especificações para essas ofertas de hardware:

Diagrama de um gráfico que mostra uma visão geral e opções de hardware NVIDIA Jetson.

Todos os dispositivos da família NVIDIA Jetson usam hardware de CPU baseado em ARM para processamento. A plataforma Azure IoT Edge pode direcionar essa arquitetura, para que você possa instrumentar dispositivos incorporados NVIDIA para trabalhar com o tempo de execução do IoT Edge e com os serviços relacionados do Azure IoT.

Para acompanhar este módulo, você precisará de um dos seguintes dispositivos incorporados NVIDIA Jetson provisionados com o JetPack 4.6:

Azure IoT Edge

O Azure IoT Edge foi projetado para simplificar o processo de produção de análises na borda. O IoT Edge usa uma abordagem moderna para a distribuição de aplicativos por meio de cargas de trabalho em contêineres, conhecidas como módulos. Os dispositivos instrumentados com o tempo de execução do IoT Edge podem publicar informações na nuvem do Azure usando protocolos de mensagens de alta taxa de transferência e baixa latência. Um dispositivo pode até continuar a produzir essas informações em cenários offline. Devido a esses e outros recursos, o Azure IoT Edge é uma solução ideal para adotar 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: os módulos são contêineres que executam serviços do Azure, serviços de terceiros ou código personalizado. Os contêineres são implantados usando uma especificação definida em um hub no Hub IoT do Azure e são executados localmente em dispositivos instrumentados do IoT Edge.
  • Tempo de execução do IoT Edge: o tempo de execução é um serviço executado em um dispositivo IoT Edge para gerenciar cargas de trabalho de módulo, fornecer mecanismos para mensagens de módulo para módulo e de dispositivo para nuvem/nuvem para dispositivo e orquestrar 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 registro seguro de dispositivos, um mecanismo de alta taxa de transferência para ingestão de dados (via AMQP, MQTT ou HTTPS), uma capacidade de definir e aplicar especificações de implantação e uma capacidade de monitorar e gerenciar remotamente dispositivos IoT Edge.

Opcionalmente, 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 em contêineres. Essa abordagem é recomendada para cenários de implantação de produção. A imagem a seguir 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:

Diagrama que descreve como instalar o Azure IoT Edge.

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 yourEdgeDevice, que foi instrumentado com o tempo de execução do IoT Edge e registrado com segurança como um dispositivo IoT Edge no hub. Em seguida, (3) o tempo de execução 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 ele produz telemetria que flui do dispositivo para o hub.

Neste módulo, você implantará uma solução que tenha uma arquitetura semelhante à mostrada aqui. A principal diferença é que você incluirá uma especificação de implantação que define um módulo IoT Edge baseado em DeepStream para publicar resultados de deteção de objetos em um hub IoT. A implantação é executada em um dispositivo incorporado NVIDIA Jetson que suporta nativamente a distribuição ARM64 do tempo de execução do IoT Edge.

Experimente isto

Se sua tarefa é implantar uma solução de IA na borda, como você pode economizar tempo para a produção usando ofertas de serviços em nuvem? Quais benefícios você obteria usando um serviço como o Azure IoT Edge durante a implementação?