Calcolo abilitato per GPU
Nota
Alcuni tipi di istanza abilitati per gpu sono in versione beta e sono contrassegnati come tali nell'elenco a discesa quando si selezionano i tipi di driver e di lavoro durante la creazione del 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
Azure Databricks supporta i tipi di istanza seguenti:
- Serie di tipi di istanza NC: Standard_NC12, Standard_NC24
- Serie di tipi di istanza NC v3: Standard_NC6s_v3, Standard_NC12s_v3, Standard_NC24s_v3
- Serie di tipi di istanza NC T4 v3: Standard_NC4as_T4_v3, Standard_NC8as_T4_v3, Standard_NC16as_T4_v3, Standard_NC64as_T4_v3
- Serie di tipi di istanza NC A100 v4: Standard_NC24ads_A100_v4, Standard_NC48ads_A100_v4, Standard_NC96ads_A100_v4
- Serie di tipi di istanza NCads H100 v5: Standard_NC40ads_H100_v5, Standard_NC80adis_H100_v5
- Serie di tipi di istanza ND A100 v4: Standard_ND96asr_v4
- Serie di tipi di istanza NV A10 v5: Standard_NV36ads_A10_v5, Standard_NV36adms_A10_v5, Standard_NV72ads_A10_v5
Vedere Prezzi di Azure Databricks per un elenco aggiornato 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.
La pianificazione GPU definita dall'utente è disponibile solo per Databricks Runtime 7.1 e versioni successive. Per le versioni precedenti di Databricks Runtime, Databricks configura automaticamente le risorse di calcolo GPU in modo che sia presente al massimo un'attività in esecuzione per nodo. In questo modo, l'attività può usare tutte le GPU nel nodo senza entrare in conflitto con altre attività.
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 impostare valori spark.task.resource.gpu.amount
frazionari come 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 imposta su spark.task.resource.gpu.amount
0.5
, 0.33
o 0.25
, le GPU disponibili verranno suddivise tra double, triple o quadre il numero di attività.
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 impostano 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 ottenerli dalla CUDA_VISIBLE_DEVICES
variabile di ambiente.
Se si usa Scala, è possibile ottenere 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 seleziona una versione "Databricks Runtime Version" abilitata per LA GPU in Azure Databricks, si accettano implicitamente i termini e le condizioni descritti 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 integrazione 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 selezionare una versione di runtime standard anziché Databricks Runtime ML per GPU. Quando si seleziona Usa il proprio contenitore Docker, è possibile scegliere calcolo GPU con una versione di runtime standard. 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. I Dockerfile usati per generare queste immagini si trovano nel repository GitHub dei contenitori di esempio, che include anche informazioni dettagliate sulle immagini di esempio fornite e su come personalizzarle.