Introduktion till NVIDIA DeepStream Graph Composer
Tidigare introducerade vi NVIDIA DeepStream SDK. Utvecklare kan använda den för att skapa optimerade IVA-program (Intelligent Video Analytics) som kan mata in flera videoindatakällor, tillämpa sammanhängande slutsatsdragning på bearbetade ramar och producera telemetri som kan publiceras till molntjänster som Microsoft Azure.
Vi har tittat på att utveckla program med NVIDIA DeepStream SDK med hjälp av en konfigurationsfildriven metod. Den här metoden är en mycket aktiv strategi för IVA-utveckling, men NVIDIA Graph Composer tar den här metoden vidare. Du kan använda den för att generera DeepStream-kompatibla IVA-pipelines med hjälp av en visuell redigerare med dra och släpp-komponenter. Genom att använda den här mekanismen kan du förenkla utvecklingen ytterligare samtidigt som du visar hur komponenter relaterar till varandra i ett interaktivt diagram.
De tillgängliga komponenterna kan verka bekanta för dig på grund av de konfigurationsgrupper som vi använde tidigare. Dessa komponenter och konfigurationsgrupperna härleds båda från funktioner som tillhandahålls i DeepStream SDK C-biblioteken. Dessa komponenter görs tillgängliga för Composer-programmet med hjälp av ett lokalt register som hämtar och lagrar tillägg som tillhandahålls av NVIDIA. Composer-programmet gör det också möjligt att importera anpassade tillägg för att stödja komponenter.
När ett diagram är klart för produktion kan utvecklare paketera Composer Graphs i containerarbetsbelastningar som kan köras på x86- eller ARM64-enheter med ett inkluderat containerverktyg . Du kan använda den här funktionen med Graph Composer för att skapa containerbaserade IVA-pipelines som kan distribueras till serverklass eller gränskompatibla enheter.
Den fullständiga processen för det här arbetsflödet visas här.
Integrera containerbaserade Graph Composer-arbetsbelastningar med Azure IoT-tjänster
Genom att paketera DeepStream Graph Composer-arbetsbelastningar i containrar kan IVA-program köras i scenarier från gränsen till molnet med olika funktioner, till exempel:
- Meddelanden från enhet till moln.
- Meddelanden från moln till enhet.
- Enhetsövervakning.
- Fjärruppdateringar.
- Skalbar distribution via integrering med Azure IoT Edge.
Med det här tjänsterbjudandet kan du instrumentera en kompatibel enhet med en körning som tillhandahåller orkestrering av containerbaserade arbetsbelastningar och säker anslutning till en inmatningsplats som kallas en IoT-hubb.
IoT Edge-körningen körs på den fysiska enhet där containerbaserade arbetsbelastningar kallas moduler. Dessa moduler kan kommunicera med varandra med hjälp av meddelanderoutning. En modul kan till exempel producera telemetri och en annan modul kan aggregera meddelanden från de första meddelandena med hjälp av Azure Stream Analytics vid gränsen. Meddelanden från den här modulen kan sedan publiceras direkt till molnet via en anslutning till en IoT-hubb.
Med enheter registrerade och hanterade på ett säkert sätt från en IoT-hubb är det möjligt att sömlöst distribuera uppdaterade arbetsbelastningar till enheter och även övervaka anslutningsstatusen för en hel flotta. Därför kan du sätta dina DeepStream Graph Composer-program i produktion med stöd för alla steg i livscykeln för programvaruutveckling. Dessa områden omfattar plugin-stöd för Azure DevOps, möjligheten att ändra arbetsbelastningar som körs med hjälp av modultvillingar och riktade distributioner baserat på enhetsmetadata.
I den här modulen utforskar vi hur du utvecklar program med hjälp av DeepStream Graph Composer. Nu ska vi paketera utdata till en containerbaserad arbetsbelastning. Slutligen förbereder vi containern för produktion genom att publicera den till en instans av Azure Container Registry. I uppföljningsmodulen tittar vi på hur du hämtar arbetsbelastningen från ett säkert containerregister och distribuerar den till en NVIDIA-baserad inbäddad enhet som kör IoT Edge.
Prova detta
Anta att du har fått i uppgift att utveckla ett IVA-program för att räkna antalet personer som kommer in på en restaurang. Anta nu att VD:n älskar ditt konceptbevis och vill distribuera programmet till 1 000 platser runt om i världen! Hur kan du utforma en strategi för att genomföra den här distributionen? Vilka verktyg kan du använda för att påskynda utvecklingen och testcykeln?