Oefening: Platformoverschrijdende DeepStream-installatiekopieën implementeren op NVIDIA Embedded-apparaten met Azure IoT Edge
U hebt een in een container geplaatste DeepStream Graph Composer-workload gepubliceerd in uw containerregister en uw nvidia Jetson-ingesloten apparaat ingericht met de IoT Edge-runtime. U bent nu klaar om een implementatiespecificatie in uw hub te maken om de workload uit te voeren als een IoT Edge-module.
Ga in Azure Portal naar de IoT-hub die u aan het begin van deze module hebt gemaakt. Selecteer IoT Edge in het linkermenu onder Automatisch Apparaatbeheer. Zoek naar uw geregistreerde apparaat.
Als u details over de huidige configuratie wilt bekijken, selecteert u de naam van het apparaat:
Selecteer het tabblad Modules instellen om de modules-editor te openen:
U moet de juiste Container Registry-referenties opgeven, zodat uw NVIDIA embedded-apparaat containerworkloads kan ophalen uit uw containerregister.
Ga in een afzonderlijk browservenster naar uw containerregister in Azure Portal:
Selecteer toegangssleutels in het linkermenu onder Instellingen. Noteer in Access-sleutels de waarden voor de aanmeldingsserver, gebruikersnaam en wachtwoord. U gebruikt deze waarden in de volgende stap.
Ga terug naar het browservenster dat is geopend om modules in te stellen. Voer in Container Registry-referenties de waarden uit de toegangssleutels van het containerregister in. Met behulp van deze referenties kan elk apparaat dat deze modulespecificatie toepast, containerworkloads veilig ophalen uit uw containerregister in Azure.
Vervolgens configureert u een aangepaste IoT Edge-module als onderdeel van uw implementatiespecificatie. Selecteer In de sectie IoT Edge-modules van het deelvenster Modules de optie IoT Edge-module toevoegen>:
Voer in de moduleNaam van de IoT Edge-module de modulenaam deepstream_test4_jetson in. Voer in afbeeldings-URI aanmeldingsserver>/deepstream_test4_jetson:v1 in.< Gebruik <voor aanmeldingsserver> de URL van uw containerregister.
Selecteer vervolgens het tabblad Opties voor container maken om ondersteuning voor GPU-versnelling in te schakelen en om toegang te bieden tot de X11-socket om video-uitvoer van de container weer te geven door het volgende toe te voegen:
{ "NetworkingConfig": { "EndpointsConfig": { "host": {} } }, "HostConfig": { "DeviceRequests": [ { "Count": -1, "Capabilities": [ [ "gpu" ] ] } ], "NetworkMode": "host", "Binds": [ "/tmp/.X11-unix/:/tmp/.X11-unix/", "/tmp/argus_socket:/tmp/argus_socket" ] } }
Wanneer u klaar bent, selecteert u Bijwerken:
U keert terug naar de pagina Modules instellen op het apparaat, zodra u Controleren en maken selecteert:
In het tekstvak Implementatie wordt de implementatiespecificatie weergegeven die u gaat verzenden naar uw apparaat. Controleer of de inhoud er ongeveer zo uitziet als in dit voorbeeld:
{ "modulesContent": { "$edgeAgent": { "properties.desired": { "modules": { "deepstream_test4_jetson": { "settings": { "image": "<Login Server>.azurecr.io/deepstream_test4_jetson:v1", "createOptions": "{\"NetworkingConfig\":{\"EndpointsConfig\":{\"host\":{}}},\"HostConfig\":{\"DeviceRequests\":[{\"Count\":-1,\"Capabilities\":[[\"gpu\"]]}],\"NetworkMode\":\"host\",\"Binds\":[\"/tmp/.X11-unix/:/tmp/.X11-unix/\",\"/tmp/argus_socket:/tmp/argus_socket\"]}}" }, "type": "docker", "version": "1.0", "env": { "DISPLAY": { "value": ":0" } }, "status": "running", "restartPolicy": "always" } }, "runtime": { "settings": { "minDockerVersion": "v1.25", "registryCredentials": { "<Your Registry Name>": { "address": "<Login Server>.azurecr.io", "password": "<Your Password>", "username": "<Your Username>" } } }, "type": "docker" }, "schemaVersion": "1.1", "systemModules": { "edgeAgent": { "settings": { "image": "mcr.microsoft.com/azureiotedge-agent:1.1", "createOptions": "" }, "type": "docker" }, "edgeHub": { "settings": { "image": "mcr.microsoft.com/azureiotedge-hub:1.1", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }, "type": "docker", "status": "running", "restartPolicy": "always" } } } }, "$edgeHub": { "properties.desired": { "routes": { "route": "FROM /messages/* INTO $upstream" }, "schemaVersion": "1.1", "storeAndForwardConfiguration": { "timeToLiveSecs": 7200 } } }, "deepstream_test4_jetson": { "properties.desired": {} } } }
Controleer of de implementatieconfiguratie juist is en selecteer vervolgens Maken om het implementatieproces te starten:
Voer de volgende opdrachten uit in een terminal op het NVIDIA Embedded-apparaat om te controleren of de implementatie is geslaagd:
sudo iotedge list
Controleer of in de uitvoer de status van
running
deedgeAgent
,edgeHub
endeepstream_test4_jetson
modules wordt weergegeven.Als uw apparaat is verbonden met een beeldscherm, moet u de gevisualiseerde uitvoer van de DeepStream Graph Composer-toepassing kunnen zien, zoals in dit voorbeeld:
Bewaak de uitvoer van de
deepstream_test4_jetson
module door de volgende opdracht uit te voeren in een terminal op het NVIDIA Jetson embedded-apparaat:sudo docker logs -f deepstream_test4_jetson
Om de paar seconden verzendt uw apparaat telemetrie naar de geregistreerde hub in Azure IoT Hub. Er wordt een bericht weergegeven dat lijkt op het volgende voorbeeld:
Message sent : { "version" : "4.0", "id" : 1440, "@timestamp" : "2021-09-21T03:08:51.161Z", "sensorId" : "sensor-0", "objects" : [ "-1|570|478.37|609|507.717|Vehicle|#|sedan|Bugatti|M|blue|XX1234|CA|-0.1" ] }
U kunt de status van de actieve modules in Azure Portal bevestigen door terug te keren naar het apparaatoverzicht voor uw IoT Edge-apparaat. U ziet nu de volgende modules en de bijbehorende statussen voor uw apparaat:
U kunt ook bevestigen in het overzichtsvenster van Uw IoT Hub dat berichten vanaf uw apparaat binnenkomen in uw hub. U ziet een toename van berichten:
Gefeliciteerd U hebt een edge-implementatie op productieniveau van een DeepStream Graph Composer-workload ontwikkeld en geïmplementeerd op een echt apparaat met behulp van Azure IoT Edge.
Probeer dit eens
Met behulp van strategieën die in deze module worden beschreven, hoe kunt u een bestaande DeepStream-referentiegrafiek wijzigen ter ondersteuning van een oplossing voor natuurbehoud die unieke exemplaren van bedreigde soorten telt met behulp van live camerafeeds? Welke onderdelen moet u wijzigen om deze oplossing te ondersteunen? Moet u wijzigingen aanbrengen in de algehele implementatiestrategie?