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 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
    • Standard_NV72ads_A10_v5 non è compatibile con PyTorch 2.0+e genera un errore CUDA durante l'esecuzione di carichi di lavoro con più GPU. Poiché Databricks Runtime ML 14.0 e versioni successive preinstalla PyTorch 2.0+, è consigliabile usare Databricks Runtime ML 13.x o manualmente pip install torch==1.13.1 se si esegue PyTorch in carichi di lavoro con più GPU.

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

Databricks Runtime supporta la pianificazione compatibile con GPU da Apache Spark 3.0. Azure Databricks lo preconfigura nel calcolo GPU.

La pianificazione gpu non è abilitata nel calcolo a nodo singolo.

spark.task.resource.gpu.amount è l'unica configurazione spark correlata alla pianificazione compatibile con GPU che potrebbe essere necessario modificare. La configurazione predefinita usa una GPU per ogni attività, ideale per carichi di lavoro di inferenza distribuiti e training distribuito, se si usano tutti i nodi GPU. Per eseguire il training distribuito in un subset di nodi, che consente di ridurre il sovraccarico di comunicazione durante il training distribuito, Databricks consiglia di impostare spark.task.resource.gpu.amount sul numero di GPU per nodo di lavoro nella configurazione di Spark di calcolo.

Per le attività PySpark, Azure Databricks esegue automaticamente il mapping delle GPU assegnate agli indici 0, 1, .... Nella configurazione predefinita che usa una GPU per ogni attività, il codice può semplicemente usare la GPU predefinita senza controllare quale GPU è assegnata all'attività. Se si impostano più GPU per ogni attività, ad esempio 4, il codice può presupporre che gli indici delle GPU assegnate siano 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").

Per le versioni di Databricks Runtime inferiori alla 7.0, per evitare conflitti tra più attività Spark che tentano di usare la stessa GPU, Azure Databricks configura automaticamente il 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à.

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 è 525.105.17.

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 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, 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.