Samouczek: konfigurowanie, łączenie i weryfikowanie modułu usługi IoT Edge dla procesora GPU

Dotyczy:Znacznik wyboru usługi IoT Edge 1.5 IoT Edge 1.5 Znacznik wyboru usługi IoT Edge 1.4 IoT Edge 1.4

Ważne

Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4 LTS. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

W tym samouczku pokazano, jak utworzyć maszynę wirtualną z obsługą procesora GPU. Na maszynie wirtualnej zobaczysz, jak uruchomić urządzenie usługi IoT Edge, które przydziela pracę z jednego z jego modułów do procesora GPU.

Użyjemy witryny Azure Portal, usługi Azure Cloud Shell i wiersza polecenia maszyny wirtualnej do:

  • Tworzenie maszyny wirtualnej obsługującej procesor GPU
  • Instalowanie rozszerzenia sterownika NVIDIA na maszynie wirtualnej
  • Konfigurowanie modułu na urządzeniu usługi IoT Edge w celu przydzielenia pracy do procesora GPU

Wymagania wstępne

Tworzenie maszyny wirtualnej zoptymalizowanej pod kątem procesora GPU

Aby utworzyć maszynę wirtualną zoptymalizowaną pod kątem procesora GPU, wybór odpowiedniego rozmiaru jest ważny. Nie wszystkie rozmiary maszyn wirtualnych będą uwzględniać przetwarzanie procesora GPU. Ponadto istnieją różne rozmiary maszyn wirtualnych dla różnych obciążeń. Aby uzyskać więcej informacji, zobacz Rozmiary maszyn wirtualnych zoptymalizowanych pod kątem procesora GPU lub wypróbuj selektor Maszyny wirtualne.

Utwórzmy maszynę wirtualną usługi IoT Edge przy użyciu szablonu usługi Azure Resource Manager (ARM) w usłudze GitHub, a następnie skonfigurujemy ją tak, aby była zoptymalizowana pod kątem procesora GPU.

  1. Przejdź do szablonu wdrażania maszyny wirtualnej usługi IoT Edge w usłudze GitHub: Azure/iotedge-vm-deploy.

  2. Wybierz przycisk Wdróż na platformie Azure, który inicjuje tworzenie niestandardowej maszyny wirtualnej w witrynie Azure Portal.

  3. Wypełnij pola Niestandardowe wdrożenie przy użyciu poświadczeń i zasobów platformy Azure:

    Właściwości Opis lub przykładowa wartość
    Subskrypcja Wybierz subskrypcję konta platformy Azure.
    Grupa zasobów Dodaj grupę zasobów platformy Azure.
    Region (Region) East US
    Maszyny wirtualne procesora GPU nie są dostępne we wszystkich regionach.
    Prefiks etykiety DNS Utwórz nazwę maszyny wirtualnej.
    Nazwa użytkownika administratora adminUser
    Alternatywnie utwórz własną nazwę użytkownika.
    Parametry połączenia urządzenia Skopiuj parametry połączenia z urządzenia usługi IoT Edge, a następnie wklej tutaj.
    Rozmiar maszyny wirtualnej Standard_NV6
    Authentication type Wybierz hasło lub klucz publiczny SSH, a następnie w razie potrzeby utwórz hasło lub nazwę pary kluczy.

    Napiwek

    Sprawdź, które maszyny wirtualne procesora GPU są obsługiwane w każdym regionie: produkty dostępne według regionów.

    Aby sprawdzić region, na który pozwala subskrypcja platformy Azure, wypróbuj to polecenie platformy Azure w witrynie Azure Portal. Wartość N in Standard_N oznacza, że jest to maszyna wirtualna z obsługą procesora GPU.

    az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
    
  4. Wybierz przycisk Przejrzyj i utwórz u dołu, a następnie przycisk Utwórz. Wdrożenie może potrwać minutę.

Instalowanie rozszerzenia NVIDIA

Teraz, gdy mamy maszynę wirtualną zoptymalizowaną pod kątem procesora GPU, zainstalujmy rozszerzenie NVIDIA na maszynie wirtualnej przy użyciu witryny Azure Portal.

  1. Otwórz maszynę wirtualną w witrynie Azure Portal i wybierz pozycję Rozszerzenia i aplikacje z menu po lewej stronie.

  2. Wybierz pozycję Dodaj i wybierz z listy rozszerzenie sterownika procesora GPU FIRMY NVIDIA, a następnie wybierz pozycję Dalej.

  3. Wybierz pozycję Przejrzyj i utwórz, a następnie pozycję Utwórz. Ukończenie wdrożenia może potrwać do 30 minut.

  4. Aby potwierdzić instalację w witrynie Azure Portal, wróć do menu Rozszerzenia i aplikacje na maszynie wirtualnej. Nowe rozszerzenie o nazwie NvidiaGpuDriverLinux powinno znajdować się na liście rozszerzeń i wyświetlić stan Inicjowanie obsługi administracyjnej zakończyło się pomyślnie.

  5. Aby potwierdzić instalację przy użyciu usługi Azure Cloud Shell, uruchom to polecenie, aby wyświetlić listę rozszerzeń. Zastąp <> symbole zastępcze wartościami:

    az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
    
  6. W module NVIDIA użyjemy programu NVIDIA System Management Interface, znanego również jako nvidia-smi.

    Na urządzeniu nvidia-smi zainstaluj pakiet na podstawie używanej wersji systemu Ubuntu. Na potrzeby tego samouczka zainstalujemy system nvidia-utils-515 Ubuntu 20.04. Wybierz Y po wyświetleniu monitu w instalacji.

    sudo apt install nvidia-utils-515
    

    Oto lista wszystkich nvidia-smi wersji. Jeśli uruchomisz nvidia-smi polecenie bez jego zainstalowania, ta lista zostanie wyświetlona w konsoli programu .

    Zrzut ekranu przedstawiający wszystkie wersje

  7. Po zakończeniu instalacji uruchom to polecenie, aby potwierdzić, że jest zainstalowany:

    nvidia-smi
    

    Zostanie wyświetlona tabela potwierdzenia podobna do tej tabeli.

    Zrzut ekranu przedstawiający tabelę sterowników FIRMY NVIDIA.

Uwaga

Rozszerzenie NVIDIA to uproszczony sposób instalowania sterowników NVIDIA, ale może być konieczne dostosowanie. Aby uzyskać więcej informacji na temat instalacji niestandardowych na maszynach wirtualnych serii N, zobacz Instalowanie sterowników procesora GPU NVIDIA na maszynach wirtualnych serii N z systemem Linux.

Włączanie modułu z akceleratorem procesora GPU

Istnieją różne sposoby włączania modułu usługi IoT Edge, aby używać procesora GPU do przetwarzania. Jednym ze sposobów jest skonfigurowanie istniejącego modułu usługi IoT Edge na urządzeniu w celu przyspieszenia procesora GPU. Innym sposobem jest użycie wstępnie utworzonego modułu kontenera, na przykład modułu firmy NVIDIA DIGITS , który jest już zoptymalizowany pod kątem procesora GPU. Zobaczmy, jak działają oba sposoby.

Włączanie procesora GPU w istniejącym module przy użyciu funkcji DeviceRequests

Jeśli masz istniejący moduł na urządzeniu usługi IoT Edge, dodanie konfiguracji przy użyciu DeviceRequests w createOptions manifeście wdrożenia sprawia, że moduł jest zoptymalizowany pod kątem procesora GPU. Wykonaj następujące kroki, aby skonfigurować istniejący moduł.

  1. Przejdź do centrum IoT Hub w witrynie Azure Portal i wybierz pozycję Urządzenia w menu Zarządzanie urządzeniami .

  2. Wybierz urządzenie usługi IoT Edge, aby je otworzyć.

  3. Wybierz kartę Ustawianie modułów u góry.

  4. Wybierz moduł, który chcesz włączyć do użycia z procesorem GPU na liście Moduły usługi IoT Edge.

  5. Zostanie otwarty panel boczny, wybierz kartę Opcje tworzenia kontenera.

  6. Skopiuj ten HostConfig ciąg JSON i wklej go w polu Utwórz opcje .

     {
         "HostConfig": {
             "DeviceRequests": 
             [
                 {
                     "Count": -1,
                     "Capabilities": [
                         [
                             "gpu"
                         ]
                     ]
                 }
             ]
         }
     }
    
  7. Wybierz Aktualizuj.

  8. Wybierz pozycję Przejrzyj i utwórz. Nowy HostConfig obiekt jest teraz widoczny w settings module.

  9. Wybierz pozycję Utwórz.

  10. Aby potwierdzić, że nowa konfiguracja działa, uruchom następujące polecenie na maszynie wirtualnej:

    sudo docker inspect <YOUR-MODULE-NAME>
    

    W konsoli powinny zostać wyświetlone parametry określone DeviceRequests dla elementu w wydruku JSON.

Uwaga

Aby lepiej zrozumieć DeviceRequests parametr, wyświetl kod źródłowy: moby/host_config.go

Włączanie procesora GPU w wstępnie utworzonym module NVIDIA

Dodajmy moduł NVIDIA DIGITS do urządzenia usługi IoT Edge, a następnie przydzielmy procesor GPU do modułu, ustawiając jego zmienne środowiskowe. Ten moduł NVIDIA znajduje się już w kontenerze platformy Docker.

  1. Wybierz urządzenie usługi IoT Edge w witrynie Azure Portal z menu Urządzenia usługi IoT Hub.

  2. Wybierz kartę Ustawianie modułów u góry.

  3. Wybierz pozycję + Dodaj w obszarze nagłówka modułów usługi IoT Edge i wybierz pozycję Moduł usługi IoT Edge.

  4. Podaj nazwę w polu Nazwa modułu usługi IoT Edge.

  5. Na karcie Moduł Ustawienia dodaj nvidia/digits:6.0 do pola Identyfikator URI obrazu.

  6. Wybierz kartę Zmienne środowiskowe .

  7. Dodaj nazwę NVIDIA_VISIBLE_DEVICES zmiennej środowiskowej z wartością 0. Ta zmienna kontroluje, które procesory GPU są widoczne dla konteneryzowanej aplikacji działającej na urządzeniu brzegowym. Zmienną NVIDIA_VISIBLE_DEVICES środowiskową można ustawić na rozdzielaną przecinkami listę identyfikatorów urządzeń, które odpowiadają fizycznym procesorom GPU w systemie. Jeśli na przykład w systemie istnieją dwa procesory GPU z identyfikatorami urządzeń 0 i 1, zmienna może być ustawiona na "NVIDIA_VISIBLE_DEVICES=0,1", aby oba jednostki GPU były widoczne dla kontenera. W tym artykule, ponieważ maszyna wirtualna ma tylko jeden procesor GPU, użyjemy pierwszego (i tylko) jednego.

    Nazwisko Typ Wartość
    NVIDIA_VISIBLE_DEVICES Text 0
  8. Wybierz Dodaj.

  9. Wybierz pozycję Przejrzyj i utwórz. Zostaną wyświetlone właściwości manifestu wdrożenia.

  10. Wybierz pozycję Utwórz , aby utworzyć moduł.

  11. Wybierz pozycję Odśwież , aby zaktualizować listę modułów. Uruchomienie modułu w stanie środowiska uruchomieniowego potrwa kilka minut, więc odśwież urządzenie.

  12. Na urządzeniu uruchom to polecenie, aby potwierdzić, że nowy moduł NVIDIA istnieje i jest uruchomiony.

    iotedge list
    

    Moduł NVIDIA powinien zostać wyświetlony na liście modułów na urządzeniu usługi IoT Edge ze stanem running.

    Zrzut ekranu przedstawiający wynik polecenia

Uwaga

Aby uzyskać więcej informacji na temat modułu kontenera NVIDIA DIGITS, zobacz dokumentację Deep Edukacja Digits.

Czyszczenie zasobów

Jeśli chcesz kontynuować korzystanie z innych samouczków usługi IoT Edge, możesz użyć urządzenia utworzonego na potrzeby tego samouczka. W przeciwnym razie możesz usunąć utworzone zasoby platformy Azure, aby uniknąć naliczania opłat.

Jeśli utworzono maszynę wirtualną i centrum IoT Hub w nowej grupie zasobów, możesz usunąć grupę, co spowoduje usunięcie wszystkich skojarzonych zasobów. Sprawdź dokładnie zawartość grupy zasobów, aby się upewnić, że nie ma w niej żadnych elementów, które chcesz zachować. Jeśli nie chcesz usuwać całej grupy, możesz zamiast tego usunąć poszczególne zasoby (maszyny wirtualnej, urządzenia lub modułu GPU).

Ważne

Usunięcie grupy zasobów jest nieodwracalne.

Użyj następującego polecenia, aby usunąć grupę zasobów platformy Azure. Usunięcie grupy zasobów może potrwać kilka minut.

az group delete --name <YOUR-RESOURCE-GROUP> --yes

Możesz potwierdzić, że grupa zasobów została usunięta, wyświetlając listę grup zasobów.

az group list

Następne kroki

Ten artykuł pomógł skonfigurować maszynę wirtualną i urządzenie usługi IoT Edge w celu przyspieszenia procesora GPU. Aby uruchomić aplikację z podobną konfiguracją, wypróbuj ścieżkę szkoleniową dla programowania nvidia DeepStream na platformie Microsoft Azure. W samouczku Learn pokazano, jak opracowywać zoptymalizowane aplikacje inteligentne wideo, które mogą korzystać z wielu źródeł wideo, obrazów i audio.