Calcul avec GPU
Remarque
Certains types d’instances avec GPU sont en version bêta et marqués comme tels dans la list déroulante lorsque vous select les types de pilotes et de Workers lors de la création du calcul.
Vue d’ensemble
Azure Databricks prend en charge le calcul accéléré avec des processeurs graphiques (GPU). Cet article explique comment créer un calcul à l’aide d’instances avec GPU et décrit les pilotes et bibliothèques GPU installés sur ces instances.
Pour en savoir plus concernant le Deep Learning sur un calcul avec GPU, consultez Deep Learning.
Créer un calcul GPU
La création d’un calcul GPU est similaire à la création de tout calcul. Gardez à l’esprit les points suivants :
- La version de Databricks Runtime doit être une version compatible avec GPU, par exemple Runtime 13.3 LTS ML (GPU, Scala 2.12.15, Spark 3.4.1).
- Le Type de Worker et le Type de pilote doivent être des types d’instances GPU.
Types d’instances pris en charge
Avertissement
Azure Databricks ne prendra plus en charge le calcul en utilisant la série de types d’instances NC v3, car Azure ne prendra plus en charge Nc24rs d’ici le 31 mars 2025, ainsi que NC6s_v3, NC12s_v3 et NC24s_v3 d’ici le 30 septembre 2025.
Azure Databricks prend en charge les types d’instances suivants :
NCads_H100_v5
- Type de GPU : GPU NVIDIA H100 NVL
Nom de l’instance | Nombre de GPU | Mémoire GPU | Processeurs virtuels | Mémoire processeur |
---|---|---|---|---|
Standard_NC40ads_H100_v5 | 1 | 94 Go | 40 | 320 Go |
Standard_NC80adis_H100_v5 | 2 | 94 Go x 2 | 80 | 640 Go |
ND_H100_v5
- Type de GPU : NVIDIA H100 Tensor Core GPU
Nom de l’instance | Nombre de GPU | Mémoire GPU | Processeurs virtuels | Mémoire CPU |
---|---|---|---|---|
Standard_ND96isr_H100_v5 | 8 | 80 Go x 8 | 96 | 1900 Go |
NC_A100_v4
- Type GPU : GPU NVIDIA A100 PCIe
Nom de l’instance | Nombre de GPU | Mémoire GPU | Processeurs virtuels | Mémoire du processeur |
---|---|---|---|---|
Standard_NC24ads_A100_v4 | 1 | 80 Go | 24 | 220 Go |
Standard_NC48ads_A100_v4 | 1 | 80 Go x 2 | 48 | 440 Go |
Standard_NC96ads_A100_v4 | 1 | 80 Go x 4 | 96 | 880 Go |
NDasrA100_v4
- Type de GPU : GPU NVIDIA Ampere A100 40 Go Tensor Core
Nom de l’instance | Nombre de GPU | Mémoire GPU | Processeurs virtuels | Mémoire du CPU |
---|---|---|---|---|
Standard_ND96asr_v4 | 8 | 40 Go x 8 | 96 | 900 Go |
NVadsA10_v5
- Type DE GPU : NVIDIA A10 GPU
Nom de l’instance | Nombre de GPU | Mémoire GPU | Processeurs virtuels | Mémoire du CPU |
---|---|---|---|---|
Standard_NV36ads_A10_v5 | 1 | 24 Go | 36 | 440 Go |
Standard_NV36adms_A10_v5 | 1 | 24 Go | 36 | 880 Go |
Standard_NV72ads_A10_v5 | 2 | 24 Go x 2 | 72 | 880 Go |
NCasT4_v3
- Type DE GPU : GPU NVIDIA T4
Nom de l’instance | Nombre de GPU | Mémoire GPU | Processeurs virtuels | Mémoire du processeur central |
---|---|---|---|---|
Standard_NC4as_T4_v3 | 1 | 16 Go | 4 | 28 GO |
Standard_NC8as_T4_v3 | 1 | 16 Go | 8 | 56 Go |
Standard_NC16as_T4_v3 | 1 | 16 Go | 16 | 110 Go |
Standard_NC64as_T4_v3 | 4 | 16 Go x 4 | 64 | 440 Go |
NC_v3
- Type DE GPU : NVIDIA Tesla V100 GPU
Nom de l’instance | Nombre de GPU | Mémoire GPU | Processeurs virtuels | Mémoire CPU |
---|---|---|---|---|
Standard_NC6s_v3 | 1 | 16 Go | 6 | 112 Go |
Standard_NC12s_v3 | 2 | 16 Go x 2 | 12 | 224 Go |
Standard_NC24s_v3 | 4 | 16 Go x 4 | 24 | 448 Go |
Standard_NC24rs_v3 | 4 | 16 Go x 4 | 24 | 448 Go |
Pour obtenir une list à jour des types d’instances GPU pris en charge et de leurs régions de disponibilité, consultez Tarifs Azure Databricks. Votre déploiement d’Azure Databricks doit résider dans une région prise en charge pour lancer un calcul avec GPU.
Planification de GPU
La planification de GPU distribue efficacement les tâches Spark sur un grand nombre de GPU.
Databricks Runtime prend en charge la planification compatible GPU à partir d’Apache Spark 3.0. Azure Databricks le préconfigure sur un calcul GPU.
Remarque
La planification GPU n’est pas activée sur un calcul mononœud.
Planification de GPU pour l’IA et le ML
spark.task.resource.gpu.amount
est la seule configuration Spark relative à la planification compatible GPU que vous devrez peut-être configurer.
La configuration par défaut utilise un GPU par tâche, ce qui est une bonne base de référence pour des charges de travail d’inférence distribuées et un apprentissage distribué si vous utilisez tous les nœuds GPU.
Pour réduire la surcharge de communication pendant la formation distribuée, Databricks recommande de définir spark.task.resource.gpu.amount
sur le nombre de GPU par nœud Worker dans la configuration Spark du calcul. Cela crée une seule tâche Spark pour chaque Worker Spark et affecte toutes les GPU de ce nœud Worker à la même tâche.
Pour augmenter la parallélisation pour l’inférence Deep Learning distribuée, vous pouvez setspark.task.resource.gpu.amount
vers des values fractionnaires telles que 1/2, 1/3, 1/4, etc. 1/N. Cela crée plus de tâches Spark qu’il existe de GPU, ce qui permet à des tâches plus simultanées de gérer les demandes d’inférence en parallèle. Par exemple, si vous setspark.task.resource.gpu.amount
à 0.5
, 0.33
ou 0.25
, alors les GPU disponibles seront répartis entre deux fois, trois fois ou quatre fois le nombre de tâches.
Indices GPU
Pour les tâches PySpark, Azure Databricks remappe automatiquement les GPU affectés aux index de base zéro. Pour la configuration par défaut qui utilise un GPU par tâche, vous pouvez utiliser le GPU par défaut sans vérifier le GPU affecté à la tâche.
Si vous set plusieurs GPU par tâche, par exemple 4, les index des GPU affectés sont toujours 0, 1, 2 et 3. Si vous avez besoin des index physiques des GPU attribués, vous pouvez les get à partir de la variable d’environnement CUDA_VISIBLE_DEVICES
.
Si vous utilisez Scala, vous pouvez get les index des GPU affectés à la tâche à partir de TaskContext.resources().get("gpu")
.
Pilote GPU NVIDIA, CUDA et cuDNN
Azure Databricks installe le pilote et les bibliothèques NVIDIA nécessaires à l’utilisation des GPU sur le pilote et les instances Worker de Spark :
- CUDA Toolkit, installé sous
/usr/local/cuda
. - cuDNN : bibliothèque de réseau neuronal profond NVIDIA CUDA.
- NCCL : bibliothèque de communications collectives NVIDIA.
La version du pilote NVIDIA incluse est 535.54.03. Elle prend en charge CUDA 11.0. Pour la série de type d’instance NV A10 v5, la version du pilote NVIDIA incluse est 535.154.05
.
Pour les versions des bibliothèques incluses, consultez les notes de publication correspondant à la version de Databricks Runtime que vous utilisez.
Remarque
Ce logiciel contient le code source fourni par NVIDIA Corporation. Plus précisément, pour prendre en charge les GPU, Azure Databricks comprend du code extrait d’exemples CUDA.
Contrat de Licence Utilisateur Final (CLUF) NVIDIA
Lorsque vous select une « version de Databricks Runtime » avec GPU dans Azure Databricks, vous acceptez implicitement les conditions générales décrites dans le CLUF NVIDIA en ce qui concerne les bibliothèques CUDA, cuDNN et Tesla, ainsi que le Contrat de licence utilisateur final NVIDIA (avec supplément NCCL) pour la bibliothèque NCCL.
Databricks Container Services sur un calcul GPU
Important
Cette fonctionnalité est disponible en préversion publique.
Vous pouvez utiliser Databricks Container Services sur un calcul avec des GPU pour créer des environnements de Deep Learning portables avec des bibliothèques personnalisées. Pour obtenir des instructions, consultez Personnaliser des conteneurs avec Databricks Container Services.
Pour créer des images personnalisées pour un calcul GPU, vous devez select une version du runtime standard au lieu de Databricks Runtime ML pour GPU. Lorsque vous selectUtiliser votre propre conteneur Docker, vous pouvez choisir un calcul GPU avec une version du runtime standard. Les images personnalisées pour GPU sont basées sur les conteneurs CUDA officiels, ce qui est différent de Databricks Runtime ML pour GPU.
Lorsque vous créez des images personnalisées pour le calcul GPU, vous ne pouvez pas modifier la version du pilote NVIDIA, car celle-ci doit correspondre à la version du pilote sur la machine hôte.
Le databricksruntime
Docker Hub contient des exemples d’images de base avec une fonctionnalité de GPU. Les Dockerfiles utilisés pour generate ces images se trouvent dans le référentiel GitHub de conteneurs d'exemple , qui contient également des détails sur ce que fournissent les images d'exemple et comment les personnaliser.