Calcul avec GPU

Remarque

Certains types d’instances avec GPU sont en version bêta et marqués comme tels dans la liste déroulante lorsque vous sélectionnez 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

Azure Databricks prend en charge les types d’instances suivants :

Pour obtenir une liste à 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

Databricks Runtime prend en charge la planification compatible GPU à partir d’Apache Spark 3.0. Azure Databricks le préconfigure sur un calcul GPU.

La planification GPU n’est pas activée sur un calcul mononœud.

spark.task.resource.gpu.amount est la seule configuration Spark relative à la planification compatible GPU que vous devrez peut-être modifier. La configuration par défaut utilise un GPU par tâche, ce qui est idéal pour des charges de travail d’inférence distribuées et un apprentissage distribué si vous utilisez tous les nœuds GPU. Pour effectuer une formation distribuée sur un sous-ensemble de nœuds, ce qui permet de 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.

Pour les tâches PySpark, Azure Databricks remappe automatiquement les GPU affectés aux index 0, 1,.... Dans la configuration par défaut qui utilise un GPU par tâche, votre code peut simplement 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, votre code peut supposer que 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 récupérer à partir de la variable d’environnement CUDA_VISIBLE_DEVICES.

Si vous utilisez Scala, vous pouvez récupérer les index des GPU affectés à la tâche à partir de TaskContext.resources().get("gpu").

Pour les versions de Databricks Runtime antérieures à 7,0, afin d’éviter les conflits entre tâches Spark tentant d’utiliser le même GPU, Azure Databricks configure automatiquement le calcul GPU afin qu’il y ait au maximum une tâche en cours d’exécution par nœud. Ainsi, la tâche peut utiliser toutes les GPU sur le nœud sans entrer en conflit avec d’autres tâches.

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

Pour les versions des bibliothèques incluses, consultez les notes de publication correspondant à la version de Databricks Runtime que vous utilisez.

Notes

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 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 sélectionner une version du runtime standard au lieu de Databricks Runtime ML pour GPU. Lorsque vous sélectionnez Utiliser 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 databricksruntimeDocker Hub contient des exemples d’images de base avec une fonctionnalité de GPU. Les fichiers Dockerfiles utilisés pour générer ces images se trouvent dans le dépôt GitHub d’exemples de conteneurs, qui contient également des détails sur les exemples d’images à fournir et sur la manière de les personnaliser.