Usare istanze GPU o RDMA nei pool di Batch

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux vicina allo stato end of life (EOL). Prendere in considerazione l'uso e la pianificazione di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

Per eseguire determinati processi Batch, è possibile sfruttare le dimensioni delle macchine virtuali di Azure progettate per il calcolo su larga scala. Ad esempio:

  • Per eseguire carichi di lavoro MPI a istanze multiple, scegliere la serie H o altre dimensioni che offrono un'interfaccia di rete per Accesso diretto a memoria remota (RDMA, Remote Direct Memory Access). Le VM di queste dimensioni si connettono a una rete InfiniBand per la comunicazione tra i nodi, che consente di velocizzare le applicazioni MPI.

  • Per le applicazioni CUDA, scegliere le dimensioni della serie N, che includono schede GPU (Graphics Processing Unit, unità di elaborazione grafica) NVIDIA Tesla.

Questo articolo fornisce istruzioni ed esempi per usare alcune delle dimensioni specializzate di Azure nei pool di Batch. Per le specifiche e le informazioni di base, vedere:

  • Dimensioni delle VM High Performance Computing (Linux, Windows)

  • Dimensioni delle VM con supporto per GPU (Linux, Windows)

Nota

Determinate dimensioni di macchine virtuali potrebbero non essere disponibili nelle aree in cui si crea l'account Batch. Per verificare la disponibilità di una dimensione, vedere Prodotti disponibili in base all'area e Scegliere una dimensione di macchina virtuale per un pool di Batch.

Dipendenze

Le funzionalità RDMA o GPU delle dimensioni a elevato utilizzo di calcolo in Batch sono supportate solo in alcuni sistemi operativi. L'elenco dei sistemi operativi supportati è un subset di quelli supportati per le macchine virtuali create in queste dimensioni. A seconda della modalità di creazione del pool di Batch, potrebbe essere necessario installare o configurare driver aggiuntivi o altri software nei nodi. Le tabelle seguenti riepilogano queste dipendenze. Vedere gli articoli correlati per informazioni dettagliate. Per le opzioni per la configurazione di pool di Batch, vedere più avanti in questo articolo.

Pool Linux - Configurazione della macchina virtuale

Dimensione Funzionalità Sistemi operativi Software richiesto Impostazioni pool
H16r, H16mr
NC24r, NC24rs_v2, NC24rs_v3 e ND24rs*
RDMA Ubuntu 22.04 LTS o
HPC basato su CentOS
(Azure Marketplace)
Intel MPI 5

Driver Linux RDMA
Abilitare la comunicazione tra i nodi, disabilitare l'esecuzione di attività simultanee
Serie NC, NCv2, NCv3 e NDv2 GPU NVIDIA Tesla (varia in base alla serie) Ubuntu 22.04 LTS o
CentOS 8.1
(Azure Marketplace)
Driver NVIDIA CUDA o CUDA Toolkit N/D
NV, NVv2, serie NVv4 GPU NVIDIA Tesla M60 Ubuntu 22.04 LTS o
CentOS 8.1
(Azure Marketplace)
Driver NVIDIA GRID N/D

*Le dimensioni della serie N idonee per RDMA includono anche GPU NVIDIA Tesla

Importante

Questo documento fa riferimento a una versione di Rilascio di Linux vicina o alla fine della vita (EOL). Prendere in considerazione l'aggiornamento a una versione più recente.

Pool di Windows - Configurazione macchina virtuale

Dimensione Funzionalità Sistemi operativi Software richiesto Impostazioni pool
H16r, H16mr
NC24r, NC24rs_v2, NC24rs_v3 e ND24rs*
RDMA Windows Server 2016, 2012 R2 o
2012 (Azure Marketplace)
Microsoft MPI 2012 R2 o versioni successive oppure
Intel MPI 5

Driver Windows RDMA
Abilitare la comunicazione tra i nodi, disabilitare l'esecuzione di attività simultanee
Serie NC, NCv2, NCv3, ND e NDv2 GPU NVIDIA Tesla (varia in base alla serie) Windows Server 2016 o
2012 R2 (Azure Marketplace)
Driver NVIDIA CUDA o CUDA Toolkit N/D
NV, NVv2, serie NVv4 GPU NVIDIA Tesla M60 Windows Server 2016 oppure
2012 R2 (Azure Marketplace)
Driver NVIDIA GRID N/D

*Le dimensioni della serie N idonee per RDMA includono anche GPU NVIDIA Tesla

Pool di Windows - Configurazione Servizi cloud

Avviso

Servizi cloud pool di configurazione sono deprecati. Usare invece pool di configurazione macchina virtuale.

Dimensione Funzionalità Sistemi operativi Software richiesto Impostazioni pool
H16r, H16mr RDMA Windows Server 2016, 2012 R2, 2012 o
2008 R2 (famiglia del sistema operativo guest)
Microsoft MPI 2012 R2 o versioni successive oppure
Intel MPI 5

Driver Windows RDMA
Abilitare la comunicazione tra i nodi,
disabilitare l'esecuzione di attività simultanee

Nota

Le dimensioni delle serie N non sono supportate nei pool di configurazione Servizi cloud.

Opzioni di configurazione pool

Per configurare una dimensione di macchina virtuale specializzata per il pool di Batch, sono disponibili diverse opzioni per installare il software o i driver necessari:

  • Per i pool nella configurazione della macchina virtuale, scegliere un'immagine di macchina virtuale di Azure Marketplace preconfigurata con i driver e il software preinstallato. Esempi:

  • Creare un'immagine personalizzata di macchina virtuale Windows o Linux in cui sono stati installati driver, software o altre impostazioni necessarie per le dimensioni della macchina virtuale.

  • Creare un pacchetto dell'applicazione Batch da un programma di installazione dell'applicazione o dei driver compresso e configurare Batch per distribuire il pacchetto nei nodi del pool e installarlo una sola volta quando viene creato ogni nodo. Se ad esempio il pacchetto dell'applicazione è un programma di installazione, creare una riga di comando di attività di avvio per installare automaticamente l'app in tutti i nodi del pool. Valutare la possibilità di usare un pacchetto dell'applicazione e un'attività di avvio del pool se il carico di lavoro dipende da una versione particolare dei driver.

    Nota

    L'attività di avvio deve essere eseguita con autorizzazioni con privilegi elevati (amministratore) ed è necessario attendere l'esito positivo. Le attività a esecuzione prolungata aumenteranno il tempo necessario per effettuare il provisioning di un pool di Batch.

Esempio: driver GPU NVIDIA nel pool di macchine virtuali NC Windows

Per eseguire applicazioni CUDA in un pool di nodi NC di Windows, è necessario installare i driver NVDIA GPU. La procedura di esempio seguente usa un pacchetto dell'applicazione per installare i driver NVIDIA GPU. È possibile scegliere questa opzione se il carico di lavoro dipende da una versione specifica dei driver GPU.

  1. Scaricare un pacchetto di installazione per i driver GPU in Windows Server 2016 dal sito Web di NVIDIA, ad esempio la versione 411.82. Salvare il file in locale usando un nome breve, ad esempio GPUDriverSetup.exe.
  2. Creare un file zip del pacchetto.
  3. Caricare il pacchetto nell'account Batch. Per istruzioni, vedere il materiale sussidiario sui pacchetti di applicazioni. Specificare un ID applicazione, ad esempio GPUDriver, e una versione, ad esempio 411.82.
  4. Usando l'API Batch o il portale di Azure, creare un pool nella configurazione della macchina virtuale con il numero di nodi e la scalabilità desiderati. La tabella seguente illustra le impostazioni di esempio per installare i driver NVIDIA GPU automaticamente usando un'attività di avvio:
Impostazione Valore
Tipo di immagine Marketplace (Linux/Windows)
Autore MicrosoftWindowsServer
Offerta WindowsServer
Sku 2016-Datacenter
Dimensioni nodo NC6 Standard
Riferimenti ai pacchetti dell'applicazione GPUDriver, versione 411.82
Attività di avvio abilitate Vero
Riga di comando - cmd /c "%AZ_BATCH_APP_PACKAGE_GPUDriver#411.82%\\GPUDriverSetup.exe /s"
Identità utente: utente automatico pool, amministratore
Attendere il completamento dell'operazione: True

Esempio: driver GPU NVIDIA in un pool di macchine virtuali NC Linux

Per eseguire applicazioni CUDA in un pool di nodi NC di Linux, si devono installare i driver NVIDIA Tesla GPU necessari da CUDA Toolkit. I passaggi di esempio seguenti creano e distribuiscono un'immagine LTS Ubuntu 22.04 personalizzata con i driver GPU:

  1. Distribuire una macchina virtuale serie NC di Azure che esegue Ubuntu 22.04 LTS. È ad esempio possibile creare la macchina virtuale nell'area Stati Uniti centro-meridionali.
  2. Aggiungere l'estensione di driver NVIDIA GPU alla macchina virtuale usando il portale di Azure, un computer client che si connette alla sottoscrizione di Azure o Azure Cloud Shell. In alternativa, seguire questa procedura per connettersi alla macchina virtuale e installare i driver CUDA manualmente.
  3. Seguire la procedura per creare un'immagine della raccolta di calcolo di Azure per Batch.
  4. Creare un account in un'area che supporta le VM NC.
  5. Usando l'API Batch o il portale di Azure, creare un pool usando l'immagine personalizzata e con il numero di nodi e la scalabilità desiderati. La tabella seguente illustra le impostazioni di esempio del pool per l'immagine:
Impostazione Valore
Tipo di immagine Immagine personalizzata
Immagine personalizzata Nome dell'immagine
SKU agente nodo batch.node.ubuntu 22.04
Dimensioni nodo NC6 Standard

Esempio: Microsoft MPI in un pool di macchine virtuali H16r di Windows

Per eseguire le applicazioni Windows MPI in un pool di nodi di macchine virtuali di Azure H16r, è necessario configurare l'estensione HpcVmDrivers e installare Microsoft MPI. Di seguito è riportata la procedura di esempio per distribuire un'immagine personalizzata di Windows Server 2016 con il software e i driver necessari:

  1. Distribuire una macchina virtuale di Azure H16r che esegue Windows Server 2016. È ad esempio possibile creare la macchina virtuale nell'area Stati Uniti occidentali.
  2. Aggiungere l'estensione HpcVmDrivers alla macchina virtuale eseguendo un comando di Azure PowerShell da un computer client che si connette alla sottoscrizione di Azure o usando Azure Cloud Shell.
  3. Stabilire una connessione Desktop remoto alla macchina virtuale.
  4. Scaricare il pacchetto di installazione (MSMpiSetup.exe) per la versione più recente di Microsoft MPI e installare Microsoft MPI.
  5. Seguire la procedura per creare un'immagine della raccolta di calcolo di Azure per Batch.
  6. Usando le API Batch o portale di Azure, creare un pool usando la raccolta di calcolo di Azure e con il numero desiderato di nodi e scalabilità. La tabella seguente illustra le impostazioni di esempio del pool per l'immagine:
Impostazione Valore
Tipo di immagine Immagine personalizzata
Immagine personalizzata Nome dell'immagine
SKU agente nodo batch.node.windows amd64
Dimensioni nodo H16r Standard
Comunicazione tra nodi abilitata Vero
Numero massimo di attività per ogni nodo 1

Esempio: Intel MPI in un pool di macchine virtuali H16r Linux

Per eseguire applicazioni MPI in un pool di nodi serie HB Linux, un'opzione consiste nell'usare l'immagine HPC basata su CentOS 8.1 da Azure Marketplace. I driver Linux RDMA e Intel MPI sono preinstallati. Questa immagine supporta anche i carichi di lavoro dei contenitori Docker.

Usando l'API Batch o il portale di Azure, creare un pool usando questa immagine, con il numero di nodi e la scalabilità desiderati. La tabella seguente illustra le impostazioni di esempio del pool:

Impostazione Valore
Tipo di immagine Marketplace (Linux/Windows)
Autore OpenLogic
Offerta CentOS-HPC
Sku 8.1
Dimensioni nodo H16r Standard
Comunicazione tra nodi abilitata Vero
Numero massimo di attività per ogni nodo 1

Passaggi successivi

  • Per eseguire processi MPI in un pool di Azure Batch, vedere gli esempi per Windows o Linux.