Cvičení – nasazení imagí DeepStream napříč platformami do vložených zařízení NVIDIA pomocí Azure IoT Edge

Dokončeno

Publikovali jste kontejnerizovanou úlohu DeepStream Graph Composer do registru kontejneru a zřídili jste zařízení NVIDIA Jetson embedded pomocí modulu runtime IoT Edge. Teď jste připraveni vytvořit ve svém centru specifikaci nasazení, která spustí úlohu jako modul IoT Edge.

  1. Na webu Azure Portal přejděte do centra IoT, které jste vytvořili na začátku tohoto modulu. V nabídce vlevo v části Automatické Správa zařízení vyberte IoT Edge. Vyhledejte zaregistrované zařízení.

    Snímek obrazovky znázorňující kartu Zařízení IoT Edge na webu Azure Portal

  2. Pokud chcete zobrazit podrobnosti o aktuální konfiguraci, vyberte název zařízení:

    Snímek obrazovky znázorňující přehled zařízení IoT Edge

  3. Výběrem karty Nastavit moduly otevřete editor modulů:

    Snímek obrazovky znázorňující podokno Moduly

    Musíte zadat odpovídající přihlašovací údaje služby Container Registry, aby vaše zařízení NVIDIA Embedded mohl načíst úlohy kontejneru z registru kontejneru.

  4. V samostatném okně prohlížeče přejděte do registru kontejneru na webu Azure Portal:

    Snímek obrazovky znázorňující přehled vaší instance služby Azure Container Registry

  5. V nabídce vlevo v části Nastavení vyberte Přístupové klíče. V přístupových klíčích si poznamenejte hodnoty přihlašovacího serveru, uživatelského jména a hesla. Tyto hodnoty použijete v dalším kroku.

    Snímek obrazovky znázorňující přihlašovací údaje pro registr kontejneru

  6. Vraťte se do okna prohlížeče, které je otevřené pro nastavení modulů. V části Přihlašovací údaje služby Container Registry zadejte hodnoty z přístupových klíčů registru kontejneru. Pomocí těchto přihlašovacích údajů může jakékoli zařízení, které tuto specifikaci modulu použije, bezpečně načíst úlohy kontejneru z registru kontejneru v Azure.

    Snímek obrazovky znázorňující zadání přihlašovacích údajů registru kontejneru ve službě Azure IoT Hub

  7. V dalším kroku nakonfigurujete vlastní modul IoT Edge jako součást specifikace nasazení. V části Moduly IoT Edge podokna Moduly vyberte Přidat>modul IoT Edge:

    Snímek obrazovky znázorňující přidání modulu IoT Edge

  8. V části Přidat modul IoT Edge zadejte do názvu modulu IoT Edge název modulu deepstream_test4_jetson. V identifikátoru URI obrázku zadejte <přihlašovací server>/deepstream_test4_jetson:v1. Pro <přihlašovací server> použijte adresu URL registru kontejneru.

    Snímek obrazovky znázorňující zadání názvu a image U R pro modul IoT Edge

  9. Dále vyberte kartu Možnosti vytvoření kontejneru, abyste povolili podporu akcelerace GPU, a také pokud chcete poskytnout přístup k soketu X11, aby bylo možné vykreslovat výstup videa z kontejneru přidáním následujících položek:

    {
    "NetworkingConfig": {
        "EndpointsConfig": {
            "host": {}
        }
    },
    "HostConfig": {
        "DeviceRequests": [
            {
                "Count": -1,
                "Capabilities": [
                    [
                        "gpu"
                    ]
                ]
            }
        ],
        "NetworkMode": "host",
        "Binds": [
            "/tmp/.X11-unix/:/tmp/.X11-unix/",
            "/tmp/argus_socket:/tmp/argus_socket"
        ]
    }
    }
    

    Až budete hotovi, vyberte Aktualizovat:

    Snímek obrazovky znázorňující možnosti vytvoření kontejneru v podokně Moduly

  10. Jakmile vyberete Zkontrolovat a vytvořit, vrátíte se na stránku Nastavit moduly na stránce zařízení:

    Snímek obrazovky se zvýrazněným tlačítkem Zkontrolovat a vytvořit v podokně Moduly

  11. V textovém poli Nasazení se zobrazí specifikace nasazení, kterou chcete odeslat do zařízení. Ověřte, že obsah vypadá podobně jako v tomto příkladu:

    {
    "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. Ověřte, že je konfigurace nasazení správná, a pak výběrem možnosti Vytvořit spusťte proces nasazení:

    Snímek obrazovky s textovým polem Nasazení a tlačítkem Vytvořit

  13. Pokud chcete ověřit, že nasazení proběhlo úspěšně, spusťte v terminálu na vloženém zařízení NVIDIA následující příkazy:

    sudo iotedge list
    
  14. Ověřte, že výstup zobrazuje stav running pro edgeAgentedgeHub, a deepstream_test4_jetson moduly.

    Pokud je vaše zařízení připojené k displeji, měli byste vidět vizualizovaný výstup aplikace DeepStream Graph Composer, například v tomto příkladu:

    Snímek obrazovky znázorňující modul IoT Edge spuštěný na hardwaru Jetson

  15. Monitorujte výstup deepstream_test4_jetson modulu spuštěním následujícího příkazu v terminálu na vloženém zařízení NVIDIA Jetson:

    sudo docker logs -f deepstream_test4_jetson
    

    Každé několik sekund zařízení odesílá telemetrii do svého registrovaného centra ve službě Azure IoT Hub. Zobrazí se zpráva, která vypadá jako v následujícím příkladu:

    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. Stav spuštěných modulů na webu Azure Portal můžete potvrdit tak, že se vrátíte do přehledu zařízení pro vaše zařízení IoT Edge. Měli byste vidět následující moduly a přidružené stavy uvedené pro vaše zařízení:

    Snímek obrazovky znázorňující přehled zařízení IoT Edge se stavem modulu runtime

  17. V podokně přehledu služby IoT Hub můžete také potvrdit, že zprávy přicházejí do centra z vašeho zařízení. Měli byste si všimnout zvýšení počtu zpráv:

    Snímek obrazovky znázorňující grafy znázorňující přijaté zprávy v podokně Využití služby IoT Hub

Gratulujeme! Úspěšně jste vyvinuli produkční hraniční nasazení úlohy DeepStream Graph Composer a nasadili ho do skutečného zařízení pomocí Azure IoT Edge.

Vyzkoušejte toto

Jak můžete pomocí strategií popsaných v tomto modulu upravit existující referenční graf DeepStream tak, aby podporoval řešení ochrany volně žijících zvířat, které počítá jedinečné výskyty ohrožených druhů pomocí živých kanálů kamery? Které komponenty byste potřebovali upravit pro podporu tohoto řešení? Potřebujete provést nějaké změny celkové strategie nasazení?