Aller au contenu principal

Compute compatible GPU

remarque

Certains types d'instances compatibles GPU sont en bêta et sont marqués comme tels dans la liste déroulante lorsque vous sélectionnez les types de Driver et de Worker lors de la création du compute.

Présentation

Databricks prend en charge le compute accéléré par les unités de traitement graphique (GPU). Cet article décrit comment créer du compute avec des instances compatibles GPU et décrit les Drivers GPU et les bibliothèques installés sur ces instances.

Pour en savoir plus sur l'apprentissage profond sur le compute compatible GPU, consultez Apprentissage profond.

Créer un compute GPU

La création d'un compute GPU est similaire à la création de tout autre compute. Gardez à l'esprit ce qui suit :

  • La case à cocher Machine Learning doit être cochée. La version ML GPU est choisie automatiquement en fonction du type de worker.
  • La case à cocher Accélération de Photon doit être décochée. Photon n'est pas pris en charge avec les types d'instances GPU.
  • Le Worker type doit être un type d'instance GPU.
  • La case **Nœud unique** peut être cochée pour obtenir une instance GPU unique.

Le processus de configuration des instances de GPU à l'aide de l'API Clusters varie selon que le champ kind est défini ou non. kind détermine si votre requête utilise la spécification simple form :

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

Types d'instances pris en charge

Databricks prend en charge les types d'instances suivants :

  • Type de GPU : NVIDIA A100 80 Go

Nom de l'instance

Nombre de GPU

Mémoire GPU

vCPU

Mémoire du CPU

a2-ultragpu-1g

1

80 Go

12

170GB

a2-ultragpu-2g

2

80 Go x 2

24

340 Go

a2-ultragpu-4g

4

80 Go x 4

48

680 Go

a2-ultragpu-8g

8

80GB x 8

96

1360 Go

Nom de l'instance

Nombre de GPU

Mémoire GPU

vCPU

Mémoire du CPU

a2-ultragpu-1g

1

80 Go

12

170GB

a2-ultragpu-2g

2

80 Go x 2

24

340 Go

a2-ultragpu-4g

4

80 Go x 4

48

680 Go

a2-ultragpu-8g

8

80GB x 8

96

1360 Go

Consultez les machines GCP optimisées pour les accélérateurs pour plus d'informations sur ces types d'instances, et les régions GCP pour vérifier où ces instances sont disponibles. Votre déploiement Databricks doit résider dans une région prise en charge pour lancer du compute compatible GPU.

Planification des GPU

La planification GPU distribue efficacement les tâches Spark sur un grand nombre de GPU.

Databricks Runtime 9.1 LTS ML et versions ultérieures prennent en charge la planification consciente des GPU à partir d'Apache Spark 3.0. Databricks le préconfigure sur le compute GPU pour vous.

remarque

La planification GPU n'est pas activée sur le compute à nœud unique.

Ordonnancement de GPU pour l'IA et le ML

spark.task.resource.gpu.amount est la seule configuration Spark liée à la planification compatible GPU que vous pourriez avoir besoin de configurer. La configuration default utilise un GPU par tâche, ce qui constitue une bonne base pour les charges de travail d'inférence distribuées et l'entraînement distribué si vous utilisez tous les nœuds GPU.

Pour réduire la charge de communication pendant l'entraînement distribué, Databricks recommande de définir spark.task.resource.gpu.amount sur le nombre de GPU par nœud worker dans la configuration Spark du compute. Ceci crée une seule tâche Spark pour chaque Worker Spark et attribue toutes les GPU de ce nœud de Worker à la même tâche.

Pour augmenter la parallélisation pour l'inférence par 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 n'y a de GPU, permettant à plus de tâches concurrentes de gérer les requêtes 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 le double, le triple ou le quadruple du nombre de tâches.

Indices GPU

Pour les tâches PySpark, Databricks réaffecte automatiquement les GPU attribués à des index basés sur zéro. Pour la configuration par default qui utilise un GPU par tâche, vous pouvez utiliser le GPU par default sans vérifier quel GPU est attribué à la tâche. Si vous définissez plusieurs GPU par tâche, par exemple 4, les indices des GPU attribués sont toujours 0, 1, 2 et 3. Si vous avez besoin des index physiques des GPU attribué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 attribués à la tâche à partir de TaskContext.resources().get("gpu").

Driver GPU NVIDIA, CUDA et cuDNN

Databricks installe le Driver NVIDIA et les bibliothèques requises pour utiliser les GPU sur les nœuds Driver et Worker Spark :

  • Boîte à outils CUDA, installée sous /usr/local/cuda.
  • cuDNN: bibliothèque NVIDIA CUDA de réseaux de neurones profonds.
  • NCCL: bibliothèque de communications collectives NVIDIA.

La version du driver NVIDIA incluse est la 525.105.17, qui prend en charge CUDA 11.0.

Pour les versions des bibliothèques incluses, consultez les notes de version de la version spécifique de Databricks Runtime que vous utilisez.

remarque

Cet outil contient du code source fourni par NVIDIA Corporation. Plus précisément, pour prendre en charge les GPU, Databricks inclut du code provenant de CUDA Samples.

Contrat de Licence Utilisateur Final (CLUF) NVIDIA

Lorsque vous sélectionnez une « Version Databricks Runtime » activée pour le GPU dans Databricks, vous acceptez implicitement les conditions générales décrites dans le CLUF NVIDIA concernant les bibliothèques CUDA, cuDNN et Tesla, et le Contrat de licence utilisateur final NVIDIA (avec supplément NCCL) pour la bibliothèque NCCL.

Databricks Container Services sur compute GPU

info

Aperçu

Cette fonctionnalité est en aperçu public.

Vous pouvez utiliser Databricks Container Services sur un compute avec des GPU pour créer des environnements d'apprentissage profond portables avec des bibliothèques personnalisées. Voir Databricks Container Services pour le compute dédié pour les instructions.

Pour créer des images personnalisées pour le compute 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 compute 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 compute GPU, vous ne pouvez pas modifier la version du driver NVIDIA car elle doit correspondre à la version du driver sur la machine hôte.

Le databricksruntime Docker Hub contient des exemples d'images de base compatibles GPU. Les Dockerfiles utilisés pour générer ces images se trouvent dans le repository GitHub des exemples de conteneurs, qui contient également des détails sur ce que les images d'exemple fournissent et sur la manière de les personnaliser.

Limitations

  • Vous ne pouvez pas créer un nouveau compute GPU lorsque vous planifiez un Job à partir d'un Notebook. Vous pouvez exécuter un Job sur un compute GPU existant uniquement s'il a été créé dans la nouvelle interface utilisateur de compute.
  • Avec Databricks sur Google Cloud, les exécutables NVIDIA couramment utilisés comme nvidia-smi ne sont pas inclus dans la variable d'environnement PATH. Au lieu de cela, ils se trouvent dans /usr/local/nvidia/bin. Par exemple, pour utiliser nvidia-smi, vous devez utiliser le terminal Web ou %sh les commandes magiques de notebook pour exécuter /usr/local/nvidia/bin/nvidia-smi.
  • Le monitoring des métriques de compute à l'aide de Ganglia n'est pas pris en charge sur Databricks sur Google Cloud.