Freigeben ü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 IoT Edge 1.4 Häkchen 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

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.

  1. Wechseln Sie zur Bereitstellungsvorlage für die IoT Edge-VM auf GitHub: Azure/iotedge-vm-deploy.

  2. Wählen Sie die Schaltfläche Bereitstellung in Azure aus. Dadurch wird die Erstellung einer benutzerdefinierten VM für Sie im Azure-Portal initiiert.

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

  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 ausführen, ohne es vorher zu installieren, wird diese Liste in Ihrer Konsole ausgegeben.

    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 angezeigt, die dieser Tabelle ähnelt.

    Screenshot: Tabelle der NVIDIA-Treiber

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.

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

  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. 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
  8. Wählen Sie Hinzufügen.

  9. Klicken Sie auf Überprüfen und 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 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.