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

attention

Databricks déprécie et ne prendra plus en charge le lancement de compute à l'aide d'instances Amazon EC2 P3, car AWS déprécie ces instances.

Databricks prend en charge les types d'instances accélérés par GPU suivants :

  • Type de GPU : NVIDIA H100 Tensor Core GPU

Nom de l'instance

Nombre de GPU

Mémoire GPU

vCPU

Mémoire du CPU

p5.48xlarge

8

80GBx8

192

2TB

Nom de l'instance

Nombre de GPU

Mémoire GPU

vCPU

Mémoire du CPU

p5.48xlarge

8

80GBx8

192

2TB

Considérations

Pour tous les types d'instances accélérées par GPU, veuillez garder à l'esprit ce qui suit :

  • En raison des hausses de prix des instances ponctuelles Amazon, les instances GPU spot sont difficiles à conserver. Utilisez à la demande si nécessaire.
  • Vous pourriez avoir besoin de demander une augmentation de limite afin de créer un compute compatible GPU.

Consultez Types d'instances pris en charge pour une liste des types d'instances GPU pris en charge et leurs attributs.

Planification des GPU

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

Databricks Runtime prend en charge la planification des GPU à partir d'Apache Spark 3.0. Databricks le préconfigure sur le compute GPU.

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

Messages d'erreur

  • L'erreur suivante indique que le fournisseur de cloud AWS n'a pas assez de capacité pour la ressource de compute demandée. Error: Cluster terminated. Reason: AWS Insufficient Instance Capacity Failure

    Pour résoudre cette erreur, vous pouvez essayer de créer le compute dans une autre zone de disponibilité. La zone de disponibilité se trouve dans la configuration du compute sous **Avancé** > **Mode d'accès**. Vous pouvez également consulter les Tarifs des instances réservées AWS pour acheter un quota supplémentaire.

  • Si votre compute utilise des types d'instances P4d ou G5 et Databricks Runtime 7.3 LTS ML, la version du package CUDA dans la version 7.3 est incompatible avec les instances GPU plus récentes. Dans ces cas, les packages ML tels que TensorFlow Keras et PyTorch produiront des erreurs telles que :

    • TensorFlow Keras : InternalError: CUDA runtime implicit initialization on GPU:x failed. Status: device kernel image is invalid
    • PyTorch: UserWarning: NVIDIA A100-SXM4-40GB with CUDA capability sm_80 is not compatible with the current PyTorch installation.

    Vous pouvez résoudre ces erreurs en effectuant une mise à niveau vers Databricks Runtime 10,4 LTS ML et versions supérieures.