Esercitazione: Configurare, connettere e verificare un modulo IoT Edge per una GPU
Si applica a: IoT Edge 1.5 IoT Edge 1.4
Importante
IoT Edge 1.5 LTS è la versione supportata. IoT Edge 1.4 LTS è di fine vita a partire dal 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.
Questa esercitazione illustra come creare una macchina virtuale abilitata per la GPU. Dalla macchina virtuale si vedrà come eseguire un dispositivo IoT Edge che alloca il lavoro da uno dei relativi moduli alla GPU.
Si userà il portale di Azure, Azure Cloud Shell e la riga di comando della macchina virtuale per:
- Creare una macchina virtuale con supporto per GPU
- Installare l'estensione del driver NVIDIA nella macchina virtuale
- Configurare un modulo in un dispositivo IoT Edge per allocare il lavoro a una GPU
Prerequisiti
Account Azure: creare un account gratuitamente.
Hub IoT di Azure: creare un hub IoT di Azure
Dispositivo Azure IoT Edge
Se non si dispone già di un dispositivo IoT Edge ed è necessario crearne uno rapidamente, eseguire il comando seguente. Aprire Azure Cloud Shell situato nel portale di Azure. Creare un nuovo nome di dispositivo per
<DEVICE-NAME>
e sostituire il<IOT-HUB-NAME>
IoT con il proprio.az iot hub device-identity create --device-id <YOUR-DEVICE-NAME> --edge-enabled --hub-name <YOUR-IOT-HUB-NAME>
Per altre informazioni sulla creazione di un dispositivo IoT Edge, vedere Avvio rapido: Distribuire il primo modulo IoT Edge in un dispositivo Linux virtuale. Più avanti in questa esercitazione verrà aggiunto un modulo NVIDIA al dispositivo IoT Edge.
Creare una macchina virtuale ottimizzata per la GPU
Per creare una macchina virtuale ottimizzata per la GPU, è importante sceglierne le dimensioni appropriate. Non tutte le dimensioni delle macchine virtuali supportano l'elaborazione GPU. Sono inoltre disponibili dimensioni di macchina virtuale diverse per carichi di lavoro diversi. Per altre informazioni, vedere Dimensioni delle macchine virtuali ottimizzate per la GPU oppure Selettore di macchine virtuali.
Si creerà una macchina virtuale IoT Edge con il modello di Azure Resource Manager (ARM) in GitHub, quindi la si configurerà in modo che risulti ottimizzata per la GPU.
Passare al modello di distribuzione di macchine virtuali IoT Edge in GitHub: Azure/iotedge-vm-deploy.
Selezionare il pulsante Distribuisci in Azure, che avvia la creazione di una macchina virtuale personalizzata nel portale di Azure.
Compilare i campi Distribuzione personalizzata con le credenziali e le risorse di Azure:
Proprietà Descrizione o valore di esempio Subscription Scegliere la sottoscrizione all’account di Azure. Gruppo di risorse Aggiungere il proprio gruppo di risorse di Azure. Paese East US
Le macchine virtuali della GPU non sono disponibili in tutte le aree.Prefisso etichetta DNS Creare un nome per la macchina virtuale. Nome utente amministratore adminUser
In alternativa, creare il proprio nome utente.Stringa di connessione del dispositivo Copiare la stringa di connessione dal dispositivo IoT Edge, quindi incollarla qui. Dimensioni della VM Standard_NV6
Tipo di autenticazione Scegliere password o chiave pubblica SSH, quindi creare una password o un nome di coppia di chiavi, se necessario. Suggerimento
Controllare quali macchine virtuali GPU sono supportate in ogni area: Prodotti disponibili in base all'area.
Per controllare l’area consentita dalla sottoscrizione di Azure, provare questo comando di Azure dal portale di Azure. Il
N
inStandard_N
significa che si tratta di una macchina virtuale abilitata per la GPU.az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
Selezionare il pulsante Rivedi e crea nella parte inferiore della pagina, quindi il pulsante Crea. Il completamento della distribuzione può richiedere fino a un minuto.
Installare l'estensione NVIDIA
Ora che è disponibile una macchina virtuale ottimizzata per la GPU, è possibile installare l'estensione NVIDIA nella macchina virtuale usando il portale di Azure.
Aprire la macchina virtuale nel portale di Azure e selezionare Estensioni e applicazioni dal menu a sinistra.
Selezionare Aggiungi e scegliere Estensione del driver GPU NVIDIA dall'elenco, quindi selezionare Avanti.
Scegliere Rivedi e crea, quindi Crea. Il completamento della distribuzione può richiedere fino a 30 minuti.
Per confermare l'installazione nel portale di Azure, tornare al menu Estensioni e applicazioni nella macchina virtuale. La nuova estensione denominata
NvidiaGpuDriverLinux
deve trovarsi nell'elenco delle estensioni e visualizzare Provisioning riuscitoalla voce Stato.Per confermare l'installazione utilizzando Azure Cloud Shell, eseguire questo comando per elencare le estensioni. Sostituire i segnaposto
<>
con i valori:az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
Con un modulo NVIDIA si userà il programma NVIDIA System Management Interface, noto anche come
nvidia-smi
.Dal dispositivo installare il pacchetto
nvidia-smi
in base alla versione di Ubuntu. In questa esercitazione viene installatonvidia-utils-515
per Ubuntu 20.04. SelezionareY
quando richiesto nell'installazione.sudo apt install nvidia-utils-515
Ecco un elenco di tutte le versioni di
nvidia-smi
. Se si eseguenvidia-smi
senza averlo prima installato, questo elenco verrà stampato nella console.Dopo l'installazione, eseguire questo comando per verificare che sia installato:
nvidia-smi
Verrà visualizzata una tabella di conferma simile a questa.
Nota
L'estensione NVIDIA è un modo semplificato per installare i driver NVIDIA, ma potrebbe essere necessaria una maggiore personalizzazione. Per altre informazioni sulle installazioni personalizzate nelle macchine virtuali serie N, vedere Installare driver GPU NVIDIA in macchine virtuali serie N che eseguono Linux.
Abilitare un modulo con accelerazione GPU
Esistono diversi modi per abilitare un modulo IoT Edge in modo che usi una GPU per l'elaborazione. Un modo è quello di configurare un modulo IoT Edge esistente sul dispositivo in modo che venga accelerato dalla GPU. Un altro modo consiste nell'usare un modulo contenitore prefabbricato, ad esempio un modulo di NVIDIA DIGITS già ottimizzato per la GPU. Vediamo come vengono eseguiti entrambe le modalità.
Abilitare la GPU in un modulo esistente usando DeviceRequests
Se si dispone di un modulo esistente nel dispositivo IoT Edge, l'aggiunta di una configurazione tramite DeviceRequests
in createOptions
del manifesto della distribuzione rende il modulo ottimizzato per la GPU. Per configurare un modulo esistente, eseguire le operazioni seguenti.
Passare all'hub IoT nel portale di Azure e scegliere Dispositivi nel menu Gestione dispositivi.
Selezionare il dispositivo IoT Edge per aprirlo.
Selezionare la scheda Imposta moduli in cima.
Selezionare il modulo da abilitare per l'uso della GPU nell'elenco Moduli IoT Edge.
Nel pannello laterale che si pare, scegliere la scheda Opzioni di creazione del contenitore.
Copiare questa stringa JSON
HostConfig
e incollarla nella casella Crea opzioni.{ "HostConfig": { "DeviceRequests": [ { "Count": -1, "Capabilities": [ [ "gpu" ] ] } ] } }
Selezionare Aggiorna.
Selezionare Rivedi e crea. Il nuovo oggetto
HostConfig
è ora visibile nellasettings
del modulo.Seleziona Crea.
Per confermare il funzionamento della nuova configurazione, eseguire questo comando nella macchina virtuale:
sudo docker inspect <YOUR-MODULE-NAME>
Verranno visualizzati i parametri specificati per
DeviceRequests
nella stampa JSON nella console.
Nota
Per comprendere meglio il parametro DeviceRequests
, visualizzare il codice sorgente: moby/host_config.go
Abilitare una GPU in un modulo NVIDIA prefabbricato
Aggiungere un modulo NVIDIA DIGITS al dispositivo IoT Edge, quindi allocare una GPU al modulo impostandone le variabili di ambiente. Questo modulo NVIDIA si trova già in un contenitore Docker.
Selezionare il dispositivo IoT Edge nel portale di Azure dal menu Dispositivi dell'hub IoT.
Selezionare la scheda Imposta moduli in cima.
Selezionare + Aggiungi sotto l'intestazione moduli IoT Edge e scegliere Modulo IoT Edge.
Specificare un nome nel campo Nome modulo IoT Edge.
Nella scheda Impostazioni modulo aggiungere
nvidia/digits:6.0
al campo URI immagine.Selezionare la sceda Variabili di ambiente.
Aggiungere il nome della variabile di ambiente
NVIDIA_VISIBLE_DEVICES
al valore0
. Questa variabile controlla quali GPU sono visibili all'applicazione in contenitori in esecuzione nel dispositivo perimetrale. La variabile di ambienteNVIDIA_VISIBLE_DEVICES
può essere impostata su un elenco di ID dispositivo delimitato da virgole, che corrispondono alle GPU fisiche nel sistema. Ad esempio, se nel sistema sono presenti due GPU con ID dispositivo 0 e 1, la variabile può essere impostata su "NVIDIA_VISIBLE_DEVICES=0,1" per rendere visibili entrambe le GPU al contenitore. In questo articolo, poiché la macchina virtuale ha una sola GPU, verrà usata solo e soltanto la prima.Nome Type Valore NVIDIA_VISIBLE_DEVICES Testo 0 Selezionare Aggiungi.
Selezionare Rivedi e crea. Verranno visualizzate le proprietà del manifesto della distribuzione.
Selezionare Crea per creare il modulo.
Selezionare Aggiorna per aggiornare l’elenco dei moduli. Il modulo impiegherà alcuni minuti per visualizzare in esecuzione nello Stato di runtime, quindi continuare ad aggiornare il dispositivo.
Dal dispositivo eseguire questo comando per verificare che il nuovo modulo NVIDIA esista e sia in esecuzione.
iotedge list
Il modulo NVIDIA dovrebbe essere visualizzato in un elenco di moduli nel dispositivo IoT Edge con lo stato
running
.
Nota
Per altre informazioni sul modulo contenitore NVIDIA DIGITS, vedere la Documentazione delle cifre di Deep Learning.
Pulire le risorse
Per continuare con altre esercitazioni di IoT Edge, è possibile usare il dispositivo creato per questa esercitazione. In caso contrario, è possibile eliminare le risorse di Azure create per evitare addebiti.
Se la macchina virtuale e l'hub IoT sono stati creati in un nuovo gruppo di risorse, è possibile eliminare il gruppo, cosa che comporterà l’eliminazione di tutte le risorse associate. Verificare il contenuto del gruppo di risorse per assicurarsi che non vi siano dati da conservare. Se non si vuole eliminare l'intero gruppo, è possibile eliminare le singole risorse (macchina virtuale, dispositivo o modulo GPU).
Importante
L'eliminazione di un gruppo di risorse è irreversibile.
Usare il seguente comando per rimuovere il gruppo di risorse di Azure. L'eliminazione di un gruppo di risorse potrebbe richiedere alcuni minuti.
az group delete --name <YOUR-RESOURCE-GROUP> --yes
Per confermare la rimozione del gruppo di risorse, visualizzare l'elenco dei gruppi di risorse.
az group list
Passaggi successivi
Questo articolo ha consentito di configurare la macchina virtuale e il dispositivo IoT Edge in modo che vengano accelerati dalla GPU. Per eseguire un'applicazione con una configurazione simile, provare il percorso di apprendimento per lo Sviluppo NVIDIA DeepStream con Microsoft Azure. L'esercitazione di Learn illustra come sviluppare applicazioni video intelligenti ottimizzate che possono utilizzare più origini video, immagini e audio.