Condividi tramite


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.33o 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.