Självstudie: Konfigurera, ansluta och verifiera en IoT Edge-modul för en GPU
Gäller för: IoT Edge 1.5 IoT Edge 1.4
Viktigt!
IoT Edge 1.5 LTS är den version som stöds. IoT Edge 1.4 LTS upphör från och med den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.
Den här självstudien visar hur du skapar en GPU-aktiverad virtuell dator (VM). Från den virtuella datorn ser du hur du kör en IoT Edge-enhet som allokerar arbete från en av dess moduler till din GPU.
Vi använder Azure Portal, Azure Cloud Shell och den virtuella datorns kommandorad för att:
- Skapa en GPU-kompatibel virtuell dator
- Installera NVIDIA-drivrutinstillägget på den virtuella datorn
- Konfigurera en modul på en IoT Edge-enhet för att allokera arbete till en GPU
Förutsättningar
Azure-konto – skapa ett kostnadsfritt konto
Azure IoT Hub – skapa en IoT Hub
Azure IoT Edge-enhet
Om du inte redan har en IoT Edge-enhet och snabbt behöver skapa en, kör du följande kommando. Använd Azure Cloud Shell som finns i Azure Portal. Skapa ett nytt enhetsnamn för
<DEVICE-NAME>
och ersätt IoT<IOT-HUB-NAME>
med ditt eget.az iot hub device-identity create --device-id <YOUR-DEVICE-NAME> --edge-enabled --hub-name <YOUR-IOT-HUB-NAME>
Mer information om hur du skapar en IoT Edge-enhet finns i Snabbstart: Distribuera din första IoT Edge-modul till en virtuell Linux-enhet. Senare i den här självstudien lägger vi till en NVIDIA-modul till vår IoT Edge-enhet.
Skapa en GPU-optimerad virtuell dator
Om du vill skapa en GPU-optimerad virtuell dator (VM) är det viktigt att välja rätt storlek. Alla VM-storlekar rymmer inte GPU-bearbetning. Dessutom finns det olika VM-storlekar för olika arbetsbelastningar. Mer information finns i GPU-optimerade storlekar för virtuella datorer eller prova väljaren Virtuella datorer.
Nu ska vi skapa en virtuell IoT Edge-dator med Azure Resource Manager-mallen (ARM) i GitHub och sedan konfigurera den så att den är GPU-optimerad.
Gå till mallen för distribution av virtuella IoT Edge-datorer i GitHub: Azure/iotedge-vm-deploy.
Välj knappen Distribuera till Azure, som initierar skapandet av en anpassad virtuell dator åt dig i Azure Portal.
Fyll i fälten för anpassad distribution med dina Azure-autentiseringsuppgifter och resurser:
Property Beskrivning eller exempelvärde Prenumeration Välj din Azure-kontoprenumeration. Resursgrupp Lägg till din Azure-resursgrupp. Region East US
Virtuella GPU-datorer är inte tillgängliga i alla regioner.DNS-etikettprefix Skapa ett namn för den virtuella datorn. Användarnamn för administratör adminUser
Du kan också skapa ett eget användarnamn.Enhetens anslutningssträng Kopiera din anslutningssträng från din IoT Edge-enhet och klistra sedan in här. Storlek på virtuell dator Standard_NV6
Authentication type Välj antingen lösenord eller offentlig SSH-nyckel och skapa sedan ett lösenord eller nyckelparnamn om det behövs. Dricks
Kontrollera vilka virtuella GPU-datorer som stöds i varje region: Produkter som är tillgängliga per region.
Om du vill kontrollera vilken region din Azure-prenumeration tillåter kan du prova det här Azure-kommandot från Azure Portal. In
N
Standard_N
innebär att det är en GPU-aktiverad virtuell dator.az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
Välj knappen Granska + skapa längst ned och sedan knappen Skapa. Distributionen kan ta upp en minut att slutföra.
Installera NVIDIA-tillägget
Nu när vi har en GPU-optimerad virtuell dator ska vi installera NVIDIA-tillägget på den virtuella datorn med hjälp av Azure Portal.
Öppna den virtuella datorn i Azure Portal och välj Tillägg + program på den vänstra menyn.
Välj Lägg till och välj NVIDIA GPU Driver Extension i listan och välj sedan Nästa.
Välj Granska + skapa och sedan Skapa. Distributionen kan ta upp till 30 minuter att slutföra.
Bekräfta installationen i Azure Portal genom att gå tillbaka till menyn Tillägg + program på den virtuella datorn. Det nya tillägget med namnet
NvidiaGpuDriverLinux
ska finnas i listan över tillägg och visa Etableringen lyckades under Status.Om du vill bekräfta installationen med Hjälp av Azure Cloud Shell kör du det här kommandot för att visa en lista över dina tillägg.
<>
Ersätt platshållarna med dina värden:az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
Med en NVIDIA-modul använder vi NVIDIA System Management Interface-programmet, även kallat
nvidia-smi
.Installera paketet baserat på din version av Ubuntu från enheten
nvidia-smi
. I den här självstudien installerarnvidia-utils-515
vi för Ubuntu 20.04. VäljY
när du uppmanas att göra det i installationen.sudo apt install nvidia-utils-515
Här är en lista över alla
nvidia-smi
versioner. Om du körnvidia-smi
utan att installera den först skrivs den här listan ut i konsolen.Efter installationen kör du det här kommandot för att bekräfta att det är installerat:
nvidia-smi
En bekräftelsetabell visas, ungefär som i den här tabellen.
Kommentar
NVIDIA-tillägget är ett förenklat sätt att installera NVIDIA-drivrutinerna, men du kan behöva mer anpassning. Mer information om anpassade installationer på virtuella datorer i N-serien finns i Installera NVIDIA GPU-drivrutiner på virtuella datorer i N-serien som kör Linux.
Aktivera en modul med GPU-acceleration
Det finns olika sätt att aktivera en IoT Edge-modul så att den använder en GPU för bearbetning. Ett sätt är att konfigurera en befintlig IoT Edge-modul på enheten så att den blir GPU-accelererad. Ett annat sätt är att använda en prefabricerad containermodul, till exempel en modul från NVIDIA DIGITS som redan är GPU-optimerad. Nu ska vi se hur båda sätten går till.
Aktivera GPU i en befintlig modul med DeviceRequests
Om du har en befintlig modul på din IoT Edge-enhet blir modulen GPU-optimerad genom att lägga till en konfiguration som använder DeviceRequests
i createOptions
distributionsmanifestet. Följ de här stegen för att konfigurera en befintlig modul.
Gå till din IoT Hub i Azure Portal och välj Enheter på menyn Enhetshantering.
Välj din IoT Edge-enhet för att öppna den.
Välj fliken Ange moduler överst .
Välj den modul som du vill aktivera för GPU-användning i listan IoT Edge-moduler .
En sidopanel öppnas och väljer fliken Alternativ för att skapa container.
Kopiera den här
HostConfig
JSON-strängen och klistra in den i rutan Skapa alternativ .{ "HostConfig": { "DeviceRequests": [ { "Count": -1, "Capabilities": [ [ "gpu" ] ] } ] } }
Välj Uppdatera.
Välj Granska + skapa. Det nya
HostConfig
objektet visas nu i modulensettings
.Välj Skapa.
Bekräfta att den nya konfigurationen fungerar genom att köra det här kommandot på den virtuella datorn:
sudo docker inspect <YOUR-MODULE-NAME>
Du bör se de parametrar som du angav för
DeviceRequests
i JSON-utskriften i konsolen.
Kommentar
Om du vill förstå parametern DeviceRequests
bättre kan du visa källkoden: moby/host_config.go
Aktivera en GPU i en prefabricerad NVIDIA-modul
Nu ska vi lägga till en NVIDIA DIGITS-modul till IoT Edge-enheten och sedan allokera en GPU till modulen genom att ange dess miljövariabler. Den här NVIDIA-modulen finns redan i en Docker-container.
Välj din IoT Edge-enhet i Azure Portal från IoT Hub-menyn Enheter.
Välj fliken Ange moduler överst .
Välj + Lägg till under rubriken IoT Edge-moduler och välj IoT Edge-modul.
Ange ett namn i fältet IoT Edge-modulnamn .
Under fliken Modulinställningar lägger du till
nvidia/digits:6.0
i fältet Bild-URI .Välj fliken Miljövariabler .
Lägg till miljövariabelnamnet
NVIDIA_VISIBLE_DEVICES
med värdet0
. Den här variabeln styr vilka GPU:er som är synliga för det containerbaserade program som körs på gränsenheten. MiljövariabelnNVIDIA_VISIBLE_DEVICES
kan ställas in på en kommaavgränsad lista över enhets-ID:n, som motsvarar de fysiska GPU:erna i systemet. Om det till exempel finns två GPU:er i systemet med enhets-ID:n 0 och 1 kan variabeln anges till "NVIDIA_VISIBLE_DEVICES=0,1" för att göra båda GPU:erna synliga för containern. I den här artikeln använder vi den första (och enda) en eftersom den virtuella datorn bara har en GPU.Namn Typ Värde NVIDIA_VISIBLE_DEVICES Text 0 Markera Lägga till.
Välj Granska + skapa. Egenskaperna för distributionsmanifestet visas.
Välj Skapa för att skapa modulen.
Välj Uppdatera för att uppdatera modullistan. Det tar några minuter för modulen att visa körningen i Körningsstatus, så fortsätt att uppdatera enheten.
Från enheten kör du det här kommandot för att bekräfta att den nya NVIDIA-modulen finns och körs.
iotedge list
Du bör se NVIDIA-modulen i en lista över moduler på din IoT Edge-enhet med statusen
running
.
Kommentar
Mer information om containermodulen NVIDIA DIGITS finns i dokumentationen om djupinlärningssiffror.
Rensa resurser
Om du vill fortsätta med andra IoT Edge-självstudier kan du använda den enhet som du skapade för den här självstudien. Annars kan du ta bort de Azure-resurser som du skapade för att undvika avgifter.
Om du har skapat den virtuella datorn och IoT-hubben i en ny resursgrupp kan du ta bort den gruppen, vilket tar bort alla associerade resurser. Kontrollera att det inte finns något du vill behålla i innehållet i resursgruppen. Om du inte vill ta bort hela gruppen kan du ta bort enskilda resurser (virtuell dator, enhet eller GPU-modul) i stället.
Viktigt!
Att ta bort en resursgrupp kan inte ångras.
Använd följande kommando för att ta bort din Azure-resursgrupp. Det kan ta några minuter att ta bort en resursgrupp.
az group delete --name <YOUR-RESOURCE-GROUP> --yes
Du kan bekräfta att resursgruppen har tagits bort genom att visa listan över resursgrupper.
az group list
Nästa steg
Den här artikeln hjälpte dig att konfigurera den virtuella datorn och IoT Edge-enheten så att den blir GPU-accelererad. Om du vill köra ett program med en liknande konfiguration kan du prova utbildningsvägen för NVIDIA DeepStream-utveckling med Microsoft Azure. I learn-självstudien får du lära dig hur du utvecklar optimerade intelligenta videoprogram som kan använda flera video-, bild- och ljudkällor.