Teilen über


Tutorial: Konfigurieren, Verbinden und Überprüfen eines IoT Edge-Moduls für eine GPU

Gilt für:Häkchen für IoT Edge 1.5 IoT Edge 1.5

Wichtig

IoT Edge 1.5 LTS ist das unterstützte Release. IoT Edge 1.4 LTS wurde am 12. November 2024 eingestellt. 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. Auf dem virtuellen Computer führen Sie ein IoT Edge-Gerät aus, das Arbeit von einem seiner Module zu Ihrer GPU zuweist.

Verwenden Sie das Azure-Portal, die Azure Cloud Shell und die Befehlszeile Ihrer VM, um:

  • 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

Erstellen eines GPU-optimierten virtuellen Computers

Um einen GPU-optimierten virtuellen Computer (VM) zu erstellen, wählen Sie die richtige Größe aus. Nicht alle VM-Größen unterstützen die GPU-Verarbeitung, und unterschiedliche VM-Größen funktionieren am besten für unterschiedliche 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 Sie eine IoT Edge-VM mit der Vorlage Azure Resource Manager (ARM) in GitHub, und konfigurieren Sie sie dann so, dass sie GPU-optimiert ist.

  1. Wechseln Sie zur Bereitstellungsvorlage "IoT Edge-VM" in GitHub bei Azure/iotedge-vm-deploy.

  2. Wählen Sie die Schaltfläche "Bereitstellen in Azure " aus, um mit dem Erstellen einer benutzerdefinierten VM im Azure-Portal zu beginnen.

  3. Geben Sie Ihre Azure-Anmeldeinformationen und Ressourceninformationen in die Felder für die benutzerdefinierte Bereitstellung ein:

    Eigenschaft Beschreibung oder Beispielwert
    Abonnement Wählen Sie Ihr Azure-Kontoabonnement aus.
    Ressourcengruppe 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
    Oder erstellen Sie Ihren 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 ein Kennwort oder einen öffentlichen SSH-Schlüssel aus, und erstellen Sie bei Bedarf einen Kennwort- oder Schlüsselpaarnamen.

    Tipp

    Überprüfen Sie, welche GPU-VMs in den einzelnen Region unterstützt werden: Verfügbare Produkte nach Region.

    Um zu überprüfen , welche Region Ihr Azure-Abonnement zulässt, probieren Sie diesen Azure-Befehl im Azure-Portal aus. Das N in Standard_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
    
  4. Wählen Sie unten die Schaltfläche " Überprüfen + Erstellen " aus, und wählen Sie dann die Schaltfläche " Erstellen " aus. Die Bereitstellung kann bis zu einer Minute dauern.

Installieren der NVIDIA-Erweiterung

Nachdem Sie nun über einen GPU-optimierten virtuellen Computer verfügen, installieren Sie die NVIDIA-Erweiterung auf dem virtuellen Computer mithilfe des Azure-Portals.

  1. Öffnen Sie Ihre VM im Azure-Portal, und wählen Sie im linken Menü Extensions + applications (Erweiterungen und Anwendungen) aus.

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

  3. Wählen Sie Überprüfen + erstellen und danach Erstellen aus. Der Bereitstellungsvorgang kann bis zu 30 Minuten dauern.

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

  5. 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
    
  6. 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 wir nvidia-utils-515 für Ubuntu 20.04. Wählen Sie Y 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 Sie nvidia-smi ohne vorherige Installation ausführen, wird diese Liste in Ihrer Konsole gedruckt.

    Screenshot: Alle „nvidia-smi“-Versionen.

  7. Führen Sie nach der Installation diesen Befehl aus, um zu überprüfen, dass es installiert ist:

    nvidia-smi
    

    Eine Bestätigungstabelle wird ähnlich wie diese Tabelle angezeigt.

    Screenshot: Tabelle der NVIDIA-Treiber.

Hinweis

Die NVIDIA-Erweiterung ist eine vereinfachte Möglichkeit zum Installieren der NVIDIA-Treiber, aber Möglicherweise benötigen Sie weitere Anpassungen. 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.

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub, und wählen Sie Geräte im Menü Geräteverwaltung aus.

  2. Wählen Sie Ihr IoT Edge-Gerät aus, um es zu öffnen.

  3. Wählen Sie oben die Registerkarte Module festlegen aus.

  4. Wählen Sie in der Liste IoT Edge-Module das Modul aus, das Sie für die GPU-Verwendung aktivieren möchten.

  5. Ein Seitenbereich wird geöffnet. Wählen Sie die Registerkarte Optionen für Containererstellung aus.

  6. Kopieren Sie diese HostConfig-JSON-Zeichenfolge, und fügen Sie sie in das Feld Erstellungsoptionen ein.

     {
         "HostConfig": {
             "DeviceRequests": 
             [
                 {
                     "Count": -1,
                     "Capabilities": [
                         [
                             "gpu"
                         ]
                     ]
                 }
             ]
         }
     }
    
  7. Wählen Sie Update aus.

  8. Klicken Sie auf Überprüfen + erstellen. Das neue HostConfig-Objekt wird nun in den settings Ihres Moduls angezeigt.

  9. Klicken Sie auf Erstellen.

  10. 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 DeviceRequests an, um den -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.

  1. Wählen Sie Ihr IoT Edge-Gerät im Azure-Portal aus dem Geräte-Menü Ihres IoT Hub aus.

  2. Wählen Sie oben die Registerkarte Module festlegen aus.

  3. Wählen Sie unter der Überschrift „IoT Edge-Module“ die Option + Hinzufügen und dann IoT Edge-Modul aus.

  4. Geben Sie im Feld Name des IoT Edge-Moduls einen Namen ein.

  5. Fügen Sie auf der Registerkarte Moduleinstellungennvidia/digits:6.0 zum Feld Image-URI hinzu.

  6. Wählen Sie die Registerkarte Umgebungsvariablen aus.

  7. Fügen Sie den Namen der Umgebungsvariablen NVIDIA_VISIBLE_DEVICES mit dem Wert 0 hinzu. Diese Variable steuert, welche GPUs für die containerisierte Anwendung sichtbar sind, die auf dem Edgegerät ausgeführt wird. Die Umgebungsvariable NVIDIA_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. In diesem Artikel verwenden wir, da der virtuelle Computer nur über eine GPU verfügt, die erste (und nur) eine.

    Name type Wert
    NVIDIA_VISIBLE_DEVICES Text 0
  8. Wählen Sie Hinzufügen.

  9. Klicken Sie auf Überprüfen + erstellen. Die Eigenschaften Ihres Bereitstellungsmanifests werden angezeigt.

  10. Wählen Sie Erstellen aus, um das Modul zu erstellen.

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

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

    Screenshot: Ergebnis des Befehls „iotedge list“.

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 Den IoT-Hub in einer neuen Ressourcengruppe erstellt haben, können Sie diese Gruppe löschen, die alle zugeordneten Ressourcen lö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.