Présentation de l’IA en périphérie avec NVIDIA Jetson et Azure

Effectué

L’Internet des objets (IoT) est tellement plus que les lumières clignotantes et les capteurs de lecture. L’IoT est également un mécanisme permettant de transmettre des charges de travail d’IA aux masses. Traditionnellement, il est courant de considérer l’IoT comme un matériel spécialisé avec des capteurs physiques qui signalent des lectures dans un service cloud à des fins de traitement.

Avec l’avènement des appareils FPGA et compatibles avec le GPU, il est devenu courant de voir des applications IA plus lourdes qui s’exécutent directement sur du matériel incorporé. Avec ce paradigme, vous pouvez réduire la débordement des données, mais également vous concentrer sur les résultats importants qui proviennent du traitement des données sur la périphérie.

Lorsque vous faites confiance au cloud pour le traitement afin de tirer parti des charges de travail accélérées sur l’appareil, les résultats sont beaucoup plus rapides, même dans un environnement hors connexion. La plateforme Azure IoT Edge de Microsoft est conçue pour ce type de cas d’usage.

Azure IoT Edge effectue un déploiement sécurisé du code sur les appareils IoT à l’aide de modules conteneurisés. Les modules peuvent inclure des formulaires conteneurisés de services Azure populaires, notamment des fonctions serverless, Stream Analytics, des modules Machine Learning, des services IA Custom Vision et même un stockage local avec SQL Server. Vous pouvez utiliser la plateforme IoT Edge pour obtenir les mêmes fonctionnalités puissantes que les services cloud que vous connaissez et aimez dans votre environnement de périphérie. De même, vous pouvez modulariser les charges de travail conteneurisées qui ont été développées à l’aide de NVIDIA Graph Composer, puis déployer les charges de travail sur du matériel IoT Edge.

Dans ce module, vous allez explorer le développement de charges de travail accélérées par GPU qui ciblent le matériel NVIDIA incorporé pour déployer une charge de travail IA en périphérie à l’aide d’Azure IoT Edge et des services Azure IoT associés.

Matériel incorporé NVIDIA Jetson

Les charges de travail accélérées par GPU sur des appareils intégrés de petite taille et qui sont idéales pour les environnements de périphérie peuvent s’exécuter sur la plateforme NVIDIA Jetson. Le matériel NVIDIA Jetson est un système complet sur un module (SOM) qui dispose de l’UC, du GPU et de la mémoire nécessaires à l’exécution des charges de travail de vision par ordinateur sur un appareil de la taille d’un téléphone portable moderne.

NVIDIA offre divers appareils adaptés à l’IA à la périphérie dans sa gamme Jetson d’appareils. Les offres incluent les robustes 512-core Jetson AGX Xavier et Jetson Xavier NX, le Jetson TX2 256 cœurs milieu de gamme et le Jetson Nano 128 cœurs d’entrée de gamme.

Le graphique suivant présente les spécifications de ces offres matérielles :

Diagram of a chart that shows an NVIDIA Jetson hardware overview and options.

Tous les appareils de la famille NVIDIA Jetson utilisent le matériel d’UC ARM pour le traitement. La plateforme Azure IoT Edge peut cibler cette architecture, ce qui vous permet d’instrumenter des appareils NVIDIA incorporés pour fonctionner avec le runtime IoT Edge et avec les services Azure IoT associés.

Pour suivre ce module, vous avez besoin de l’un des appareils incorporés NVIDIA Jetson suivants provisionné avec Jetpack 4.6 :

Azure IoT Edge

Azure IoT Edge est conçu pour simplifier le processus de production d’analyses à la périphérie. IoT Edge utilise une approche moderne de la distribution d’applications par le biais de charges de travail conteneurisées, appelées modules. Les appareils instrumentés avec le runtime IoT Edge peuvent publier des informations sur le cloud Azure à l’aide des protocoles de messagerie à débit élevé et à faible latence. Un appareil peut même continuer à produire ces insights dans les scénarios hors connexion. En raison de ces fonctionnalités et d’autres fonctionnalités, Azure IoT Edge est une solution idéale pour l’adoption de charges de travail d’IA en temps réel dans les environnements de périphérie.

Une solution basée sur IoT Edge comporte trois composants :

  • Modules IoT Edge : les modules sont des conteneurs qui exécutent les services Azure, les services tiers ou votre code personnalisé. Les conteneurs sont déployés à l’aide d’une spécification qui est définie dans un concentrateur Azure IoT Hub et qui sont exécutés localement sur des appareils IoT Edge instrumentés.
  • Runtime IoT Edge : le runtime est un service qui s’exécute sur un appareil IoT Edge pour gérer les charges de travail de module, fournir des mécanismes pour la messagerie module-à-module et appareil-à-cloud/cloud-à-appareil, et orchestrer les charges de travail définies dans un concentrateur.
  • Interface basée sur le cloud : l’interface est une collection de services Azure incluse dans une instance de ressource Azure IoT Hub. Les services fournissent un mécanisme pour sécuriser l’inscription des appareils, un mécanisme à débit élevé pour l’ingestion des données (via AMQP, MQTT ou HTTPS), la possibilité de définir et d’appliquer des spécifications de déploiement, ainsi que la surveillance et la gestion à distance des appareils IoT Edge.

Une solution IoT Edge peut éventuellement incorporer une instance Azure Container Registry pour fournir une distribution sécurisée de modules conteneurisés. Cette approche est recommandée pour les scénarios de déploiement de production. L’illustration suivante montre comment les trois composants principaux peuvent utiliser un registre de conteneurs pour obtenir une architecture de solution de périphérie à cloud de bout en bout :

Diagram that depicts how to install Azure IoT Edge.

Dans l’image précédente, (1) Azure IoT Hub distribue une spécification de déploiement qui (2) définit les modules à exécuter sur yourEdgeDevice, qui a été instrumenté avec le runtime IoT Edge et enregistré en toute sécurité en tant qu’appareil IoT Edge dans le concentrateur. Ensuite, (3) le runtime IoT Edge reçoit cette spécification, qui (4) fait référence à un module de capteur qui est stocké dans Azure Container Registry. Ce module est extrait en toute sécurité et exécuté localement sur l’appareil de périphérie, sur lequel il produit ensuite des données de télémétrie qui circulent de l’appareil vers le concentrateur.

Dans ce module, vous allez déployer une solution dont l’architecture est semblable à celle présentée ici. La principale différence réside dans le fait que vous inclurez une spécification de déploiement qui définit un module IoT Edge basé sur DeepStream pour publier les résultats de la détection d’objets dans un IoT Hub. Le déploiement s’exécute sur un appareil NVIDIA Jetson incorporé qui prend en charge en mode natif la distribution ARM64 du runtime IoT Edge.

Essayez ceci

Si votre tâche consiste à déployer une solution d’IA à la périphérie, comment pouvez-vous gagner du temps en production à l’aide des offres de service cloud ? Quels sont les avantages de l’utilisation d’un service comme Azure IoT Edge pendant l’implémentation ?