Introduzione all'intelligenza artificiale sul perimetro con NVIDIA Jetson e Azure

Completato

Internet delle cose (IoT, Internet of Things) è molto più che spie lampeggianti e sensori di lettura. IoT è anche un meccanismo per mettere a disposizione della massa i carichi di lavoro di intelligenza artificiale. Tradizionalmente, è tipico pensare a IoT come hardware specializzato con sensori fisici che segnalano le letture a un servizio cloud per l'elaborazione.

Con l'avvento di dispositivi abilitati per GPU e per FPGA (Field Programmable Gate Array) con fattore di forma ridotto, è diventato comune vedere applicazioni di intelligenza artificiale più pesanti in esecuzione direttamente su hardware incorporato. Questo paradigma consente di ridurre il flusso in uscita di dati, ma anche di concentrarsi sui risultati importanti provenienti dall'elaborazione dei dati sul perimetro.

Con il passaggio dall'affidarsi al cloud per l'elaborazione allo sfruttare i carichi di lavoro accelerati nel dispositivo, si ottengono risultati molto più veloci, anche in un ambiente offline. La piattaforma Azure IoT Edge di Microsoft è progettata esattamente per questo tipo di caso d'uso.

Azure IoT Edge esegue la distribuzione sicura del codice nei dispositivi IoT usando moduli in contenitori. I moduli possono includere forme di servizi di Azure comuni in contenitori, tra cui funzioni serverless, Analisi di flusso, moduli di Machine Learning, servizi di intelligenza artificiale di visione personalizzata e persino archiviazione locale con SQL Server. È possibile usare la piattaforma IoT Edge per ottenere le stesse potenti funzionalità dei servizi cloud già noti e apprezzati nell'ambiente perimetrale. È possibile modularizzare in modo analogo i carichi di lavoro in contenitori sviluppati tramite NVIDIA Graph Composer e quindi distribuire i carichi di lavoro in hardware che supporta IoT Edge.

In questo modulo si esplorerà lo sviluppo di carichi di lavoro con accelerazione GPU destinati ad hardware incorporato NVIDIA per distribuire un carico di lavoro di intelligenza artificiale sul perimetro usando Azure IoT Edge e i servizi di Azure IoT correlati.

Hardware incorporato NVIDIA Jetson

I carichi di lavoro con accelerazione GPU in dispositivi incorporati con fattore di forma ridotto ideali per gli ambienti perimetrali possono essere eseguiti nella piattaforma NVIDIA Jetson. L'hardware NVIDIA Jetson è un sistema SOM (System On Module) completo che dispone di tutti i componenti CPU, GPU e di memoria necessari per eseguire carichi di lavoro di visione artificiale in un dispositivo delle dimensioni di un telefono cellulare moderno.

NVIDIA offre vari dispositivi adatti per l'intelligenza artificiale sul perimetro nella linea di dispositivi Jetson. Le offerte includono i solidi dispositivi a 512 core Jetson AGX Xavier e Jetson Xavier NX, il dispositivo di gamma media a 256 core Jetson TX2 e il dispositivo nella fascia di ingresso a 128 core Jetson Nano.

Il grafico seguente illustra le specifiche per queste offerte hardware:

Diagramma di un grafico che mostra una panoramica dell'hardware e le opzioni di NVIDIA Jetson.

Tutti i dispositivi nella famiglia NVIDIA Jetson usano hardware CPU basato su ARM per l'elaborazione. La piattaforma Azure IoT Edge supporta questa architettura come destinazione, quindi è possibile instrumentare i dispositivi incorporati NVIDIA per interagire con il runtime IoT Edge e con i servizi di Azure IoT correlati.

Per seguire questo modulo, sarà necessario disporre di uno dei dispositivi incorporati NVIDIA Jetson seguenti di cui è stato eseguito il provisioning con JetPack 4.6:

Azure IoT Edge

Azure IoT Edge è progettato per semplificare il processo di produzione di analisi sul perimetro. IoT Edge usa un approccio moderno alla distribuzione delle applicazioni tramite carichi di lavoro in contenitori, noti come moduli. I dispositivi instrumentati con il runtime IoT Edge possono pubblicare informazioni dettagliate nel cloud di Azure usando protocolli di messaggistica ad alta velocità effettiva e bassa latenza. Un dispositivo può anche continuare a produrre tali informazioni in scenari offline. Grazie a queste e altre funzionalità, Azure IoT Edge è una soluzione ideale per l'adozione di carichi di lavoro di intelligenza artificiale in tempo reale negli ambienti perimetrali.

Una soluzione basata su IoT Edge include tre componenti:

  • Moduli IoT Edge: i moduli sono contenitori che eseguono servizi di Azure, servizi di terze parti o codice personalizzato. I contenitori vengono distribuiti usando una specifica definita in un hub in hub IoT di Azure e vengono eseguiti localmente nei dispositivi instrumentati per IoT Edge.
  • Runtime IoT Edge: il runtime è un servizio che viene eseguito in un dispositivo IoT Edge per gestire i carichi di lavoro del modulo, per fornire meccanismi per la messaggistica da modulo a modulo e da dispositivo a cloud/da cloud a dispositivo e per orchestrare i carichi di lavoro definiti in un hub.
  • Interfaccia basata sul cloud: l'interfaccia è una raccolta di servizi di Azure inclusi in un'istanza di risorsa hub IoT di Azure. I servizi forniscono un meccanismo per la registrazione sicura dei dispositivi, un meccanismo di velocità effettiva elevata per l'inserimento dei dati (tramite AMQP, MQTT o HTTPS), oltre alla possibilità di definire e applicare le specifiche di distribuzione, nonché di monitorare e gestire in remoto i dispositivi IoT Edge.

Una soluzione IoT Edge può incorporare facoltativamente un'istanza di Registro Azure Container per gestire la distribuzione sicura dei moduli in contenitori. Questo è l'approccio consigliato per scenari di distribuzione di produzione. L'immagine seguente mostra il possibile funzionamento dei tre componenti principali per usare un registro contenitore per ottenere un'architettura di soluzione dal perimetro al cloud end-to-end:

Diagramma che illustra come installare Azure IoT Edge.

Nell'immagine precedente, (1) hub IoT di Azure distribuisce una specifica di distribuzione che (2) definisce i moduli da eseguire in yourEdgeDevice, che è stato instrumentato con il runtime IoT Edge e registrato in modo sicuro come dispositivo IoT Edge nell'hub. Quindi, (3) il runtime IoT Edge riceve questa specifica, che (4) fa riferimento a un modulo sensor archiviato in Registro Azure Container. Questo modulo viene recuperato in modo sicuro ed eseguito localmente nel dispositivo perimetrale, in cui genera quindi dati di telemetria che passano dal dispositivo all'hub.

In questo modulo si distribuirà una soluzione con un'architettura simile a quella qui illustrata. La differenza principale è che si includerà una specifica di distribuzione che definisce un modulo IoT Edge basato su DeepStream per pubblicare i risultati del rilevamento oggetti in un hub IoT. La distribuzione viene eseguita in un dispositivo incorporato NVIDIA Jetson che supporta in modo nativo la distribuzione ARM64 del runtime IoT Edge.

Prova

Se il compito è distribuire una soluzione di intelligenza artificiale sul perimetro, come è possibile risparmiare tempo per la messa in produzione usando le offerte di servizi cloud? Quali vantaggi si otterrebbero usando un servizio come Azure IoT Edge durante l'implementazione?