Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
IoT Edge 1.5
Importante
IoT Edge 1.5 LTS è la versione supportata. IoT Edge 1.4 LTS è in 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 esegue un dispositivo IoT Edge che alloca il lavoro da uno dei relativi moduli alla GPU.
Usare 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 ha un dispositivo IoT Edge e si vuole crearne rapidamente uno, eseguire il comando seguente. Usare Azure Cloud Shell nel portale di Azure. Creare un nuovo nome di dispositivo per
<DEVICE-NAME>e sostituire<YOUR-IOT-HUB-NAME>con il nome dell'hub IoT.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 questo articolo si aggiungerà un modulo NVIDIA al dispositivo IoT Edge.
Creare una macchina virtuale ottimizzata per la GPU
Per creare una macchina virtuale ottimizzata per GPU, scegliere le dimensioni appropriate. Non tutte le dimensioni delle macchine virtuali supportano l'elaborazione GPU e le diverse dimensioni delle macchine virtuali funzionano meglio per carichi di lavoro diversi. Per altre informazioni, vedere Dimensioni delle macchine virtuali ottimizzate per la GPU oppure Selettore di macchine virtuali.
Creare una macchina virtuale IoT Edge con il modello di Azure Resource Manager (ARM) in GitHub, quindi configurarla in modo che sia ottimizzata per la GPU.
Passare al modello di distribuzione di macchine virtuali IoT Edge in GitHub in Azure/iotedge-vm-deploy.
Selezionare il pulsante Distribuisci in Azure per iniziare a creare una macchina virtuale personalizzata nel portale di Azure.
Immettere le credenziali di Azure e le informazioni sulla risorsa nei campi Distribuzione personalizzata :
Proprietà Descrizione o valore di esempio Abbonamento Scegliere la sottoscrizione all’account di Azure. Gruppo di risorse Aggiungere il proprio gruppo di risorse di Azure. Region 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 macchina virtuale Standard_NV6Tipo 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 nel portale di Azure. Il
NinStandard_Nsignifica che si tratta di una macchina virtuale abilitata per la GPU.az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output tableSelezionare il pulsante Rivedi e crea nella parte inferiore e quindi selezionare il pulsante Crea . La distribuzione può richiedere fino a un minuto.
Installare l'estensione NVIDIA
Ora che è disponibile una macchina virtuale ottimizzata per gpu, 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
NvidiaGpuDriverLinuxdeve 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 tableCon un modulo NVIDIA si userà il programma NVIDIA System Management Interface, noto anche come
nvidia-smi.Dal dispositivo installare il pacchetto
nvidia-smiin base alla versione di Ubuntu. In questa esercitazione viene installatonvidia-utils-515per Ubuntu 20.04. SelezionareYquando richiesto nell'installazione.sudo apt install nvidia-utils-515Ecco un elenco di tutte le versioni di
nvidia-smi. Se eseguinvidia-smisenza prima installarla, questo elenco è stampato nella console.
Dopo l'installazione, eseguire questo comando per verificare che sia installato:
nvidia-smiViene visualizzata una tabella di conferma simile a questa tabella.
Note
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
HostConfige incollarla nella casella Crea opzioni.{ "HostConfig": { "DeviceRequests": [ { "Count": -1, "Capabilities": [ [ "gpu" ] ] } ] } }Selezionare Aggiorna.
Selezionare Rivedi e crea. Il nuovo oggetto
HostConfigè ora visibile nellasettingsdel modulo.Selezionare 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
DeviceRequestsnella stampa JSON nella console.
Note
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.0al campo URI immagine.Selezionare la sceda Variabili di ambiente.
Aggiungere il nome della variabile di ambiente
NVIDIA_VISIBLE_DEVICESal valore0. Questa variabile controlla quali GPU sono visibili all'applicazione in contenitori in esecuzione nel dispositivo perimetrale. La variabile di ambienteNVIDIA_VISIBLE_DEVICESpuò 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 la prima (e solo) una.Nome TIPO valore NVIDIA_VISIBLE_DEVICES Text 0 Selezionare Aggiungi.
Selezionare Rivedi e crea. Vengono visualizzate le proprietà del manifesto della distribuzione.
Selezionare Crea per creare il modulo.
Selezionare Aggiorna per aggiornare l’elenco dei moduli. Il modulo richiede alcuni minuti per visualizzare l'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 listIl modulo NVIDIA dovrebbe essere visualizzato in un elenco di moduli nel dispositivo IoT Edge con lo stato
running.
Note
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 è stata creata la macchina virtuale e l'hub IoT in un nuovo gruppo di risorse, è possibile eliminare tale gruppo, eliminando 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.