Tutorial: Konfigurieren, Verbinden und Überprüfen eines IoT Edge-Moduls für eine GPU
Gilt für: IoT Edge 1.5 IoT Edge 1.4
Wichtig
IoT Edge 1.5 LTS und IoT Edge 1.4 LTS sind unterstützte Releases. Das Ende der Lebensdauer von IoT Edge 1.4 LTS wird am 12. November 2024 erreicht. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.
In diesem Tutorial erfahren Sie, wie Sie einen GPU-fähigen virtuellen Computer (VM) erstellen können. In der VM sehen Sie, wie Sie ein IoT Edge-Gerät ausführen können, das Ihrer GPU Arbeitslasten von einem seiner Module zuordnet.
Wir verwenden das Azure-Portal, den Azure Cloud Shell-Dienst und die Befehlszeile Ihrer VM, um Folgendes zu tun:
- Erstellen einer GPU-fähigen VM
- Installieren der NVIDIA-Treibererweiterung auf der VM
- Konfigurieren eines Moduls auf einem IoT Edge-Gerät zum Zuordnen von Arbeitslasten zu einer GPU
Voraussetzungen
Azure-Konto: Erstellen eines kostenlosen Kontos
Azure IoT Hub: Erstellen einer IoT Hub-Instanz
Azure IoT Edge-Gerät
Wenn Sie noch über kein IoT Edge-Gerät verfügen und schnell eines erstellen müssen, führen Sie den folgenden Befehl aus. Verwenden Sie den Azure Cloud Shell-Dienst im Azure-Portal. Erstellen Sie einen neuen Gerätenamen für
<DEVICE-NAME>
, und ersetzen Sie den IoT-<IOT-HUB-NAME>
durch Ihren eigenen.az iot hub device-identity create --device-id <YOUR-DEVICE-NAME> --edge-enabled --hub-name <YOUR-IOT-HUB-NAME>
Weitere Informationen zum Erstellen eines IoT Edge-Geräts finden Sie unter Schnellstart: Bereitstellen Ihres ersten IoT Edge-Moduls auf einem virtuellen Linux-Gerät. Später in diesem Tutorial fügen wir ein NVIDIA-Modul zu unserem IoT Edge-Gerät hinzu.
Erstellen eines GPU-optimierten virtuellen Computers
Bei der Erstellung eines GPU-optimierten virtuellen Computers (VM) ist die Auswahl der richtigen Größe von entscheidender Bedeutung. Nicht alle VM-Größen sind für die GPU-Verarbeitung geeignet. Darüber hinaus gibt es unterschiedliche VM-Größen für verschiedene Workloads. Weitere Informationen finden Sie unter Für GPU optimierte VM-Größen. Alternativ können Sie mit dem Auswahltool für virtuelle Computer arbeiten.
Erstellen wir eine IoT Edge-VM mit der ARM-Vorlage (Azure Resource Manager) auf GitHub und konfigurieren sie dann, damit sie für GPU optimiert ist.
Wechseln Sie zur Bereitstellungsvorlage für die IoT Edge-VM auf GitHub: Azure/iotedge-vm-deploy.
Wählen Sie die Schaltfläche Bereitstellung in Azure aus. Dadurch wird die Erstellung einer benutzerdefinierten VM für Sie im Azure-Portal initiiert.
Füllen Sie die Felder von Benutzerdefinierte Bereitstellung mit Ihren Azure-Anmeldeinformationen und -ressourcen aus:
Eigenschaft Beschreibung oder Beispielwert Subscription Wählen Sie Ihr Azure-Kontoabonnement aus. Resource group Fügen Sie Ihre Azure-Ressourcengruppe hinzu. Region East US
GPU-VMs sind nicht in allen Regionen verfügbar.Präfix der DNS-Bezeichnung Erstellen Sie einen Namen für Ihre VM. Administratorbenutzername adminUser
Erstellen Sie alternativ einen eigenen Benutzernamen.Verbindungszeichenfolge von Gerät Kopieren Sie Ihre Verbindungszeichenfolge aus Ihrem IoT Edge-Gerät, und fügen Sie sie hier ein. Größe des virtuellen Computers Standard_NV6
Authentifizierungsart Wählen Sie entweder Kennwort oder Öffentlicher SSH-Schlüssel aus, und erstellen Sie dann bei Bedarf ein Kennwort oder einen Schlüsselpaarnamen. Tipp
Überprüfen Sie, welche GPU-VMs in den einzelnen Region unterstützt werden: Verfügbare Produkte nach Region.
Führen Sie diesen Azure-Befehl im Azure-Portal aus, um zu überprüfen, welche Region für Ihr Azure-Abonnement zulässig ist. Das
N
inStandard_N
zeigt an, dass es sich um eine GPU-fähige VM handelt.az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
Wählen Sie die Schaltfläche Überprüfen + erstellen und dann die Schaltfläche Erstellen aus. Die Bereitstellung kann bis zu einer Minute in Anspruch nehmen.
Installieren der NVIDIA-Erweiterung
Da wir nun über eine GPU-optimierte VM verfügen, können wir die NVIDIA-Erweiterung über das Azure-Portal auf der VM installieren.
Öffnen Sie Ihre VM im Azure-Portal, und wählen Sie im linken Menü Extensions + applications (Erweiterungen und Anwendungen) aus.
Klicken Sie auf Hinzufügen, und wählen Sie aus der Liste NVIDIA GPU Driver Extension (GPU-Treibererweiterung von NVIDIA) aus. Wählen Sie dann Weiter aus.
Wählen Sie Überprüfen + erstellen und danach Erstellen aus. Der Bereitstellungsvorgang kann bis zu 30 Minuten dauern.
Navigieren Sie zum Menü Extensions + applications in Ihrer VM zurück, um die Installation im Azure-Portal zu bestätigen. Die neue Erweiterung mit dem Namen
NvidiaGpuDriverLinux
sollte in der Erweiterungsliste vorhanden sein, und unter Status sollte Bereitstellung erfolgreich angezeigt werden.Wenn Sie die Installation mithilfe von Azure Cloud Shell bestätigen möchten, führen Sie diesen Befehl zum Auflisten der Erweiterungen aus. Ersetzen Sie die
<>
-Platzhalter durch Ihre Werte:az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
Mit einem NVIDIA-Modul verwenden wir das NVIDIA System Management Interface-Programm (auch bekannt als
nvidia-smi
).Installieren Sie auf Ihrem Gerät das
nvidia-smi
-Paket, das Ihrer Ubuntu-Version entspricht. Für dieses Tutorial installieren wirnvidia-utils-515
für Ubuntu 20.04. Wählen SieY
aus, wenn Sie bei der Installation dazu aufgefordert werden.sudo apt install nvidia-utils-515
Hier finden Sie eine Liste aller Versionen von
nvidia-smi
. Wenn Sienvidia-smi
ausführen, ohne es vorher zu installieren, wird diese Liste in Ihrer Konsole ausgegeben.Führen Sie nach der Installation diesen Befehl aus, um zu überprüfen, dass es installiert ist:
nvidia-smi
Eine Bestätigungstabelle wird angezeigt, die dieser Tabelle ähnelt.
Hinweis
Mit der NVIDIA-Erweiterung können Sie die NVIDIA-Treiber auf vereinfachte Weise installieren. Möglicherweisen müssen jedoch weitere Anpassungen vorgenommen werden. Weitere Informationen zu benutzerdefinierten Installationen auf VMs der N-Serie finden Sie unter Installieren von NVIDIA GPU-Treibern für virtuelle Computer der Serie N mit Linux.
Aktivieren eines Moduls mit GPU-Beschleunigung
Sie können ein IoT Edge-Modul auf verschiedene Weisen so aktivieren, dass es eine GPU für die Verarbeitung nutzt. Eine Möglichkeit besteht darin, ein vorhandenes IoT Edge-Modul auf Ihrem Gerät so zu konfigurieren, dass es die GPU-Beschleunigung verwendet. Außerdem können Sie ein vordefiniertes Containermodul verwenden, z. B. ein Modul von NVIDIA DIGITS, das bereits GPU-optimiert ist. Sehen wir uns beide Möglichkeiten an.
Aktivieren der GPU in einem vorhandenen Modul mithilfe von DeviceRequests
Wenn Sie über ein vorhandenes Modul auf Ihrem IoT Edge-Gerät verfügen, können Sie es durch das Hinzufügen einer Konfiguration mit DeviceRequests
in den createOptions
des Bereitstellungsmanifest für GPU optimieren. Führen Sie die folgenden Schritte durch, um ein vorhandenes Modul zu konfigurieren.
Navigieren Sie im Azure-Portal zu Ihrem IoT Hub, und wählen Sie Geräte im Menü Geräteverwaltung aus.
Wählen Sie Ihr IoT Edge-Gerät aus, um es zu öffnen.
Wählen Sie oben die Registerkarte Module festlegen aus.
Wählen Sie in der Liste IoT Edge-Module das Modul aus, das Sie für die GPU-Verwendung aktivieren möchten.
Ein Seitenbereich wird geöffnet. Wählen Sie die Registerkarte Optionen für Containererstellung aus.
Kopieren Sie diese
HostConfig
-JSON-Zeichenfolge, und fügen Sie sie in das Feld Erstellungsoptionen ein.{ "HostConfig": { "DeviceRequests": [ { "Count": -1, "Capabilities": [ [ "gpu" ] ] } ] } }
Wählen Sie Aktualisieren aus.
Klicken Sie auf Überprüfen + erstellen. Das neue
HostConfig
-Objekt wird nun in densettings
Ihres Moduls angezeigt.Klicken Sie auf Erstellen.
Führen Sie diesen Befehl auf Ihrer VM aus, um zu bestätigen, dass die neue Konfiguration funktioniert:
sudo docker inspect <YOUR-MODULE-NAME>
Die für
DeviceRequests
in der JSON-Ausgabe der Konsole angegebenen Parameter sollten angezeigt werden.
Hinweis
Zeigen Sie den Quellcode unter moby/host_config.go an, um den DeviceRequests
-Parameter besser zu verstehen.
Aktivieren einer GPU in einem vordefinierten NVIDIA-Modul
Fügen wir dem IoT Edge-Gerät ein NVIDIA DIGITS-Modul hinzu. Ordnen Sie dem Modul dann eine GPU zu, indem Sie die Umgebungsvariable festlegen. Das NVIDIA-Modul befindet sich bereits in einem Docker-Container.
Wählen Sie Ihr IoT Edge-Gerät im Azure-Portal aus dem Geräte-Menü Ihres IoT Hub aus.
Wählen Sie oben die Registerkarte Module festlegen aus.
Wählen Sie unter der Überschrift „IoT Edge-Module“ die Option + Hinzufügen und dann IoT Edge-Modul aus.
Geben Sie im Feld Name des IoT Edge-Moduls einen Namen ein.
Fügen Sie auf der Registerkarte Moduleinstellungen
nvidia/digits:6.0
zum Feld Image-URI hinzu.Wählen Sie die Registerkarte Umgebungsvariablen aus.
Fügen Sie den Namen der Umgebungsvariablen
NVIDIA_VISIBLE_DEVICES
mit dem Wert0
hinzu. Diese Variable steuert, welche GPUs für die containerisierte Anwendung sichtbar sind, die auf dem Edgegerät ausgeführt wird. Die UmgebungsvariableNVIDIA_VISIBLE_DEVICES
kann auf eine durch Trennzeichen getrennte Liste von Geräte-IDs festgelegt werden, die den physischen GPUs im System entsprechen. Wenn beispielsweise zwei GPUs im System mit den Geräte-IDs 0 und 1 vorhanden sind, kann die Variable auf „NVIDIA_VISIBLE_DEVICES=0,1“ festgelegt werden, um beide GPUs für den Container sichtbar zu machen. Da der virtuelle Computer nur über eine GPU verfügt, verwenden wir in diesem Artikel die erste (und einzige) GPU.Name type Wert NVIDIA_VISIBLE_DEVICES Text 0 Wählen Sie Hinzufügen.
Klicken Sie auf Überprüfen und erstellen. Die Eigenschaften Ihres Bereitstellungsmanifests werden angezeigt.
Wählen Sie Erstellen aus, um das Modul zu erstellen.
Wählen Sie Aktualisieren aus, um Ihre Modulliste zu aktualisieren. Es dauert einige Minuten, bis der Laufzeitstatus des Moduls als Wird ausgeführt angezeigt wird. Aktualisieren Sie das Gerät also regelmäßig.
Führen Sie auf Ihrem Gerät diesen Befehl aus, um zu bestätigen, dass Ihr neues NVIDIA-Modul vorhanden ist und ausgeführt wird.
iotedge list
Das NVIDIA-Modul sollte in einer Liste der Module auf Ihrem IoT Edge-Gerät mit dem Status
running
angezeigt werden.
Hinweis
Weitere Informationen zum NVIDIA DIGITS-Containermodul finden Sie in der Dokumentation zu Deep Learning Digits.
Bereinigen von Ressourcen
Wenn Sie weitere Tutorials zu IoT Edge durcharbeiten möchten, können Sie dafür das Gerät verwenden, das Sie für dieses Tutorial erstellt haben. Andernfalls können Sie die erstellten Azure-Ressourcen löschen, um Kosten zu vermeiden.
Wenn Sie Ihren virtuellen Computer und IoT-Hub in einer neuen Ressourcengruppe erstellt haben, können Sie diese Gruppe löschen. Dadurch werden alle zugehörigen Ressourcen gelöscht. Überprüfen Sie den Inhalt der Ressourcengruppe, um sicherzustellen, dass sie keine Elemente enthält, die Sie behalten möchten. Wenn Sie nicht die gesamte Gruppe löschen möchten, können Sie stattdessen einzelne Ressourcen (den virtuellen Computer, das Gerät oder das GPU-Modul) löschen.
Wichtig
Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden.
Verwenden Sie den folgenden Befehl, um Ihre Azure-Ressourcengruppe zu entfernen. Das Löschen einer Ressourcengruppe kann einige Minuten dauern.
az group delete --name <YOUR-RESOURCE-GROUP> --yes
Sie können sich vergewissern, dass die Ressourcengruppe entfernt wurde, indem Sie die Liste der Ressourcengruppen anzeigen.
az group list
Nächste Schritte
In diesem Artikel haben Sie gelernt, wie Sie einen virtuellen Computer und ein IoT Edge-Gerät so einrichten können, dass sie die GPU-Beschleunigung verwenden. Wenn Sie eine Anwendung mit einem ähnlichen Setup ausführen möchten, probieren Sie den Lernpfad für NVIDIA DeepStream-Entwicklung mit Microsoft Azure aus. In diesem Learn-Tutorial erfahren Sie, wie Sie optimierte intelligente Videoanwendungen entwickeln können, die mehrere Video-, Bild- und Audioquellen verarbeiten können.