Calcolo abilitato per GPU
Nota
Alcuni tipi di istanza abilitati per GPU si trovano in Beta e sono contrassegnati come tali nell'elenco a discesa list quando si select i tipi di driver e di worker durante la creazione del processo di calcolo.
Panoramica
Azure Databricks supporta l'accelerazione del calcolo con unità di elaborazione grafica (GPU). Questo articolo descrive come creare risorse di calcolo con istanze abilitate per GPU e descrive i driver e le librerie GPU installati in tali istanze.
Per altre informazioni sull'apprendimento avanzato sulle risorse di calcolo abilitate per GPU, vedere Deep Learning.
Creare un ambiente di calcolo GPU
La creazione di un calcolo GPU è simile alla creazione di qualsiasi calcolo. Tenere presente quanto segue:
- La versione di Databricks Runtime deve essere una versione abilitata per la GPU, ad esempio Runtime 13.3 LTS ML (GPU, Scala 2.12.15, Spark 3.4.1).
- Il tipo di lavoro e il tipo di driver devono essere tipi di istanza GPU.
Tipi di istanza supportati
Avvertimento
Azure Databricks sta deprecando e non supporterà più l'avvio del calcolo utilizzando la serie di tipi di istanza NC v3 poiché Azure deprecherà Nc24rs entro il 31 marzo 2025 e NC6s_v3, NC12s_v3 e NC24s_v3 entro il 30 settembre 2025.
Azure Databricks supporta i tipi di istanza seguenti:
NCads_H100_v5
- Tipo GPU: GPU NVIDIA H100 NVL
Nome istanza | Numero di GPU | Memoria GPU | vCPU | Memoria CPU |
---|---|---|---|---|
Standard_NC40ads_H100_v5 | 1 | 94 GB | 40 | 320 GB |
Standard_NC80adis_H100_v5 | 2 | 94 GB x 2 | 80 | 640 GB |
ND_H100_v5
- Tipo GPU: GPU NVIDIA H100 Tensor Core
Nome istanza | Numero di GPU | Memoria GPU | vCPU | Memoria CPU |
---|---|---|---|---|
Standard_ND96isr_H100_v5 | 8 | 80 GB x 8 | 96 | 1900 GB |
NC_A100_v4
- Tipo GPU: GPU NVIDIA A100 PCIe
Nome istanza | Numero di GPU | Memoria GPU | vCPU | Memoria CPU |
---|---|---|---|---|
Standard_NC24ads_A100_v4 | 1 | 80 GB | 24 | 220 GB |
Standard_NC48ads_A100_v4 | 1 | 80 GB x 2 | 48 | 440 GB |
Standard_NC96ads_A100_v4 | 1 | 80 GB x 4 | 96 | 880 GB |
NDasrA100_v4
- Tipo GPU: GPU NVIDIA Ampere A100 40GB Tensor Core
Nome istanza | Numero di GPU | Memoria GPU | vCPU | Memoria CPU |
---|---|---|---|---|
Standard_ND96asr_v4 | 8 | 40 GB x 8 | 96 | 900 GB |
NVadsA10_v5
- Tipo GPU: GPU NVIDIA A10
Nome istanza | Numero di GPU | Memoria GPU | vCPU | Memoria CPU |
---|---|---|---|---|
Standard_NV36ads_A10_v5 | 1 | 24 GB | 36 | 440 GB |
Standard_NV36adms_A10_v5 | 1 | 24 GB | 36 | 880 GB |
Standard_NV72ads_A10_v5 | 2 | 24 GB x 2 | 72 | 880 GB |
NCasT4_v3
- Tipo GPU: GPU NVIDIA T4
Nome istanza | Numero di GPU | Memoria GPU | vCPU | Memoria CPU |
---|---|---|---|---|
Standard_NC4as_T4_v3 | 1 | 16 GB | 4 | 28 GB |
Standard_NC8as_T4_v3 | 1 | 16 GB | 8 | 56 GB |
Standard_NC16as_T4_v3 | 1 | 16 GB | 16 | 110 GB |
Standard_NC64as_T4_v3 | 4 | 16 GB x 4 | 64 | 440 GB |
NC_v3
- Tipo GPU: GPU NVIDIA Tesla V100
Nome istanza | Numero di GPU | Memoria GPU | vCPU | Memoria CPU |
---|---|---|---|---|
Standard_NC6s_v3 | 1 | 16 GB | 6 | 112 GB |
Standard_NC12s_v3 | 2 | 16 GB x 2 | 12 | 224 GB |
Standard_NC24s_v3 | 4 | 16 GB x 4 | 24 | 448 GB |
Standard_NC24rs_v3 | 4 | 16 GB x 4 | 24 | 448 GB |
Vedere dei prezzi di Azure Databricks per un up-to-date list dei tipi di istanza GPU supportati e delle relative aree di disponibilità. La distribuzione di Azure Databricks deve trovarsi in un'area supportata per avviare il calcolo abilitato per GPU.
Pianificazione della GPU
La pianificazione GPU distribuisce le attività Spark in modo efficiente in un numero elevato di GPU.
Databricks Runtime supporta la pianificazione compatibile con GPU da Apache Spark 3.0. Azure Databricks lo preconfigura nel calcolo GPU.
Nota
La pianificazione gpu non è abilitata nel calcolo a nodo singolo.
Pianificazione GPU per intelligenza artificiale e Machine Learning
spark.task.resource.gpu.amount
è l'unica configurazione spark correlata alla pianificazione compatibile con GPU che potrebbe essere necessario configurare.
La configurazione predefinita usa una GPU per ogni attività, una baseline valida per i carichi di lavoro di inferenza distribuiti e il training distribuito se si usano tutti i nodi GPU.
Per ridurre il sovraccarico di comunicazione durante il training distribuito, Databricks consiglia di impostare spark.task.resource.gpu.amount
il numero di GPU per ogni nodo di lavoro nella configurazione di Spark di calcolo. In questo modo viene creata una sola attività Spark per ogni ruolo di lavoro Spark e vengono assegnate tutte le GPU in tale nodo di lavoro alla stessa attività.
Per aumentare la parallelizzazione per l'inferenza di Deep Learning distribuita, è possibile setspark.task.resource.gpu.amount
alle values frazionarie, ad esempio 1/2, 1/3, 1/4, ... 1/N. In questo modo vengono create più attività Spark rispetto alle GPU, consentendo più attività simultanee di gestire le richieste di inferenza in parallelo. Ad esempio, se si setspark.task.resource.gpu.amount
a 0.5
, 0.33
o 0.25
, le GPU disponibili verranno suddivise tra un numero di attività doppio, triplo o quadruplo.
Indici GPU
Per le attività PySpark, Azure Databricks esegue automaticamente il mapping delle GPU assegnate a indici in base zero. Per la configurazione predefinita che usa una GPU per ogni attività, è possibile usare la GPU predefinita senza controllare quale GPU è assegnata all'attività.
Se si set più GPU per ogni attività, ad esempio 4, gli indici delle GPU assegnate sono sempre 0, 1, 2 e 3. Se sono necessari gli indici fisici delle GPU assegnate, è possibile get dalla variabile di ambiente CUDA_VISIBLE_DEVICES
.
Se si usa Scala, è possibile get gli indici delle GPU assegnate all'attività da TaskContext.resources().get("gpu")
.
Driver GPU NVIDIA, CUDA e cuDNN
Azure Databricks installa i driver e le librerie NVIDIA necessari per l'uso delle GPU nei driver Spark e nelle istanze di lavoro:
-
CUDA Toolkit, installato in
/usr/local/cuda
. - cuDNN: NVIDIA CUDA Deep Neural Network Library.
- NCCL: NVIDIA Collective Communications Library.
La versione del driver NVIDIA inclusa è 535.54.03, che supporta CUDA 11.0. Per la serie di tipi di istanza NV A10 v5, la versione del driver NVIDIA inclusa è 535.154.05
.
Per le versioni delle librerie incluse, vedere le note sulla versione per la versione specifica di Databricks Runtime in uso.
Nota
Questo software contiene il codice sorgente fornito da NVIDIA Corporation. In particolare, per supportare GPU, Azure Databricks include codice di esempi CUDA.
Contratto di licenza con l'utente finale (EULA) NVIDIA
Quando si select una versione "Databricks Runtime version" abilitata per GPU in Azure Databricks, si accettano implicitamente i termini e le condizioni descritte nel contratto di licenza NVIDIA per quanto riguarda le librerie CUDA, cuDNN e Tesla e il contratto di licenza per l'utente finale NVIDIA (con supplemento NCCL) per la libreria NCCL.
Servizi contenitore di Databricks nel calcolo GPU
Importante
Questa funzionalità è disponibile in anteprima pubblica.
È possibile usare Databricks Container Services in ambiente di calcolo con GPU per creare ambienti di Deep Learning portabili con librerie personalizzate. Per istruzioni, vedere Personalizzare i contenitori con il servizio contenitore Databricks.
Per creare immagini personalizzate per il calcolo GPU, è necessario select una versione di runtime standard anziché Databricks Runtime ML per GPU. Quando si selectUtilizza il proprio contenitore Docker, è possibile scegliere l'elaborazione GPU con una versione standard del runtime. Le immagini personalizzate per GPU si basano sui contenitori CUDA ufficiali, che sono diversi da Databricks Runtime ML per GPU.
Quando si creano immagini personalizzate per il calcolo GPU, non è possibile modificare la versione del driver NVIDIA perché deve corrispondere alla versione del driver nel computer host.
L'hub databricksruntime
Docker contiene immagini di base di esempio con funzionalità GPU. Il Dockerfile usato per generate queste immagini si trova nel repository GitHub dei contenitori di esempio , che include anche informazioni dettagliate su cosa offrono le immagini di esempio e su come personalizzarle.