Oefening: Platformoverschrijdende DeepStream-installatiekopieën implementeren op NVIDIA Embedded-apparaten met Azure IoT Edge

Voltooid

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.

  1. 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.

    Schermopname van het tabblad IoT Edge-apparaten in Azure Portal.

  2. Als u details over de huidige configuratie wilt bekijken, selecteert u de naam van het apparaat:

    Schermopname van een overzicht van het IoT Edge-apparaat.

  3. Selecteer het tabblad Modules instellen om de modules-editor te openen:

    Schermopname van het deelvenster Modules.

    U moet de juiste Container Registry-referenties opgeven, zodat uw NVIDIA embedded-apparaat containerworkloads kan ophalen uit uw containerregister.

  4. Ga in een afzonderlijk browservenster naar uw containerregister in Azure Portal:

    Schermopname van een overzicht van uw Azure Container Registry-exemplaar.

  5. 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.

    Schermopname van referenties voor het containerregister.

  6. 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.

    Schermopname van het invoeren van containerregisterreferenties in Azure IoT Hub.

  7. 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>:

    Schermopname van het toevoegen van een IoT Edge-module.

  8. 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.

    Schermopname van het invoeren van een naam en afbeeldingS-URL voor de IoT Edge-module.

  9. 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:

    Schermopname van de opties voor het maken van containers in het deelvenster Modules.

  10. U keert terug naar de pagina Modules instellen op het apparaat, zodra u Controleren en maken selecteert:

    Schermopname van de knop Beoordelen plus maken gemarkeerd in het deelvenster Modules.

  11. 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": {}
        }
    }
    }
    
  12. Controleer of de implementatieconfiguratie juist is en selecteer vervolgens Maken om het implementatieproces te starten:

    Schermopname van het tekstvak Implementatie en de knop Maken.

  13. Voer de volgende opdrachten uit in een terminal op het NVIDIA Embedded-apparaat om te controleren of de implementatie is geslaagd:

    sudo iotedge list
    
  14. Controleer of in de uitvoer de status van running de edgeAgent, edgeHuben deepstream_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:

    Schermopname van de IoT Edge-module die wordt uitgevoerd op Jetson-hardware.

  15. 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"
      ]
    }
    
  16. 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:

    Schermopname van een overzicht van het IoT Edge-apparaat met runtimestatus.

  17. 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:

    Schermopname van grafieken met ontvangen berichten in het deelvenster IoT Hub-gebruik.

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?