Partager via


Calcul avec GPU

Remarque

Certains types d’instances compatibles GPU sont en version bêta et sont marqués comme tels dans la liste déroulante lorsque vous sélectionnez le pilote et les types worker 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 case à cocher Machine Learning doit être cochée. La version de GPU ML est choisie automatiquement en fonction du type worker.
  • La case d’accélération Photon doit être décochée. Photon n’est pas pris en charge avec les types d’instances GPU.
  • Le type Worker doit être un type d’instance GPU.
  • La case à cocher Nœud unique peut être cochée pour obtenir une seule instance GPU.

Le processus de configuration des instances GPU à l’aide de l’API Clusters varie selon que le kind champ est défini. kind détermine si votre demande utilise la spécification de formulaire simple :

  • Si kind = CLASSIC_PREVIEW, définissez "use_ml_runtime": true.
  • Si vous ne définissez pas le kind champ, définissez spark_version sur une version compatible GPU, telle que 15.4.x-gpu-ml-scala2.12.

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

NC_A100_v4

  • Type GPU : GPU NVIDIA A100 PCIe
Nom de l’instance Nombre de GPU Mémoire GPU Processeurs virtuels Mémoire 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 processeur
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 processeur
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 processeur
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 processeur
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

Consultez la tarification d’Azure Databricks pour obtenir une liste de up-to-date des types d’instances GPU pris en charge et de leurs régions de disponibilité. 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 d’apprentissage profond distribué, vous pouvez définir spark.task.resource.gpu.amount sur des valeurs fractionnaires telles que 1/2, 1/3, 1/4, ... 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 définissez spark.task.resource.gpu.amount sur 0.5, 0.33 ou 0.25, alors les GPU disponibles seront répartis entre deux fois, trois fois, ou quatre fois plus 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 définissez 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 affectés, vous pouvez les obtenir à partir de la variable d’environnement CUDA_VISIBLE_DEVICES .

Si vous utilisez Scala, vous pouvez obtenir 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 sélectionnez une « version du runtime Databricks » activée par 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 le supplément CCNL) pour la bibliothèque CCNL.

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 le calcul GPU, vous devez sélectionner une version d’exécution standard au lieu de Databricks Runtime ML pour GPU. Lorsque vous sélectionnez Utiliser votre propre conteneur Docker, vous pouvez choisir le calcul GPU avec une version d’exécution 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 databricksruntimeDocker Hub contient des exemples d’images de base avec une fonctionnalité de GPU. Les fichiers Dockerfile utilisés pour générer ces images se trouvent dans l’exemple de référentiel GitHub des conteneurs, qui contient également des détails sur ce que les exemples d’images fournissent et comment les personnaliser.