Proceso habilitado para GPU

Nota:

Algunos tipos de instancia con GPU están en fase Beta y aparecen marcados como tales en la lista desplegable al seleccionar los tipos de controlador y de trabajador durante la creación del recurso de cómputo.

Información general

Azure Databricks admite el proceso acelerado con unidades de procesamiento gráfico (GPU). En este artículo se describe tanto cómo crear un proceso con instancias habilitadas para GPU, como qué controladores y bibliotecas de GPU hay instalados en esas instancias.

Para obtener más información sobre el aprendizaje profundo en recursos de proceso con GPU, consulte Aprendizaje profundo.

Cree un cálculo de GPU

La creación de un proceso de GPU es similar a la creación de cualquier proceso. Tenga en cuenta lo siguiente:

  • La casilla Machine Learning debe estar activada. La versión de GPU ML se elige automáticamente en función del tipo de trabajo.
  • La casilla Aceleración foton debe estar desactivada. Photon no es compatible con los tipos de instancia con GPU.
  • El tipo de worker debe ser un tipo de instancia con GPU.
  • La casilla Nodo único se puede activar para obtener una sola instancia de GPU.

El proceso para configurar instancias de GPU mediante la API de clústeres varía en función de si se establece el kind campo. kind determina si la solicitud usa la especificación de formulario simple :

  • Si kind = CLASSIC_PREVIEW, establezca "use_ml_runtime": true.
  • Si no establece el kind campo, establezca spark_version en una versión habilitada para GPU, como 15.4.x-gpu-ml-scala2.12.

Tipos de instancia admitidos

Advertencia

Azure Databricks dejará de admitir el aprovisionamiento de recursos de proceso mediante tipos de instancia de la serie NC v3, ya que Azure va a retirar Nc24rs antes del 31 de marzo de 2025 y NC6s_v3, NC12s_v3 y NC24s_v3 antes del 30 de septiembre de 2025.

Azure Databricks admite los tipos de instancia siguientes:

NCads_H100_v5

  • Tipo de GPU: GPU NVIDIA H100 NVL
Nombre de la instancia Número de GPU Memoria de GPU vCPU Memoria de CPU
Standard_NC40ads_H100_v5 1 94 GB 40 320 GB
Standard_NC80adis_H100_v5 2 94 GB x 2 80 640 GB

NC_A100_v4

  • Tipo de GPU: GPU NVIDIA A100 PCIe
Nombre de la instancia Número de GPU Memoria de GPU vCPU Memoria de CPU
Standard_NC24ads_A100_v4 1 80 GB veinticuatro 220 GB
Standard_NC48ads_A100_v4 1 80 GB x 2 48 440 GB
Standard_NC96ads_A100_v4 1 80 GB x 4 96 880 GB

NDasrA100_v4

  • Tipo de GPU: GPU NVIDIA Ampere A100 40GB Tensor Core
Nombre de la instancia Número de GPU Memoria de GPU vCPU Memoria de CPU
Standard_ND96asr_v4 8 40 GB x 8 96 900 GB

NVadsA10_v5

  • Tipo de GPU: GPU NVIDIA A10
Nombre de la instancia Número de GPU Memoria de GPU vCPU Memoria de CPU
Standard_NV36ads_A10_v5 1 24 GB 36 440 GB
Standard_NV36adms_A10_v5 1 24 GB 36 880 GB
Standard_NV72ads_A10_v5 2 24 GB x 2 72 880 GB

NCasT4_v3

  • Tipo de GPU: GPU NVIDIA T4
Nombre de la instancia Número de GPU Memoria de GPU vCPU Memoria de CPU
Standard_NC4as_T4_v3 1 16 GB 4 28 GB
Standard_NC8as_T4_v3 1 16 GB 8 56 GB
Standard_NC16as_T4_v3 1 16 GB 16 110 GB
Standard_NC64as_T4_v3 4 16 GB x 4 64 440 GB

NC_v3

  • Tipo de GPU: GPU NVIDIA Tesla V100
Nombre de la instancia Número de GPU Memoria de GPU vCPU Memoria de CPU
Standard_NC6s_v3 1 16 GB 6 112 GB
Standard_NC12s_v3 2 16 GB x 2 12 224 GB
Standard_NC24s_v3 4 16 GB x 4 veinticuatro 448 GB
Standard_NC24rs_v3 4 16 GB x 4 veinticuatro 448 GB

Consulte Precios de Azure Databricks para una lista actualizada de los tipos de instancia de GPU admitidos y sus regiones de disponibilidad. La implementación de Azure Databricks debe residir en una región admitida para iniciar procesos habilitados para GPU.

Programación de GPU

La programación de GPU distribuye las tareas de Spark de forma eficaz en un número grande de GPU.

Databricks Runtime admite la programación compatible con GPU de Apache Spark 3.0. Azure Databricks lo configura previamente en procesos de GPU.

Nota:

La programación de GPU no está habilitada en los procesos de nodo único.

Programación de GPU para IA y ML

spark.task.resource.gpu.amount es la única configuración de Spark relacionada con la planificación consciente de GPU que quizá deba configurar. La configuración predeterminada utiliza una GPU por tarea, una buena línea base para cargas de trabajo de inferencia distribuida y entrenamiento distribuido si utiliza todos los nodos de GPU.

Para reducir la sobrecarga de comunicación durante el entrenamiento distribuido, Databricks recomienda establecer spark.task.resource.gpu.amount en el número de GPU por nodo de trabajo en la configuración de Spark del proceso. Esto crea solo una tarea de Spark para cada trabajo de Spark y asigna todas las GPU de ese nodo de trabajo a la misma tarea.

A fin de aumentar la paralelización para la inferencia de aprendizaje profundo distribuido, puede establecer spark.task.resource.gpu.amount en valores fraccionarios como 1/2, 1/3, 1/4, etc. 1/N. Esto crea más tareas de Spark que las GPU disponibles, lo que permite que más tareas simultáneas controlen las solicitudes de inferencia en paralelo. Por ejemplo, si se configura spark.task.resource.gpu.amount en 0.5, 0.33 o 0.25, las GPU disponibles se dividirán entre un número de tareas dos, tres o cuatro veces mayor.

Índices de GPU

Para las tareas de PySpark, Azure Databricks reasigna automáticamente las GPU asignadas a los índices basados en cero. En la configuración predeterminada que usa una GPU por tarea, puede utilizar la GPU predeterminada sin comprobar cuál está asignada a la tarea. Si configura varias GPU por tarea, por ejemplo, cuatro, los índices de las GPU asignadas siempre son 0, 1, 2 y 3. Si necesita los índices físicos de las GPU asignadas, puede obtenerlos de la variable de entorno CUDA_VISIBLE_DEVICES.

Si usa Scala, puede obtener los índices de las GPU asignadas a la tarea desde TaskContext.resources().get("gpu").

Controlador de GPU de NVIDIA, CUDA y cuDNN

Azure Databricks instala el controlador NVIDIA y las bibliotecas necesarias para usar GPU en las instancias de trabajo y del controlador de Spark:

  • CUDA Toolkit, instalado en /usr/local/cuda.
  • cuDNN: biblioteca de redes neuronales profundas CUDA de NVIDIA.
  • NCCL: biblioteca de comunicaciones colectivas de NVIDIA.

La versión del controlador NVIDIA incluida es la 535.54.03, que admite CUDA 11.0. Para la serie de tipos de instancia NV A10 v5, la versión del controlador NVIDIA incluida es 535.154.05.

Para consultar las versiones de las bibliotecas incluidas, consulte las notas de la versión correspondientes a la versión específica de Databricks Runtime que esté utilizando.

Nota:

Este software contiene código fuente proporcionado por NVIDIA Corporation. En concreto, para admitir las GPU, Azure Databricks incluye código de CUDA Samples.

Contrato de licencia para el usuario final (CLUF) de NVIDIA

Al seleccionar una "versión de Databricks Runtime" habilitada para GPU en Azure Databricks, acepta implícitamente los términos y condiciones descritos en el CLUF de NVIDIA sobre las bibliotecas CUDA, cuDNN y Tesla, así como el Contrato de licencia de usuario final de NVIDIA (con el complemento NCCL) para la biblioteca NCCL.

Databricks Container Services en cómputo con GPU

Importante

Esta característica está en versión preliminar pública.

Puede usar Databricks Container Services en procesos con GPU para crear entornos de aprendizaje profundo portátiles con bibliotecas personalizadas. Consulte Databricks Container Services para cómputo dedicado para obtener instrucciones.

Para crear imágenes personalizadas para procesos con GPU, debe seleccionar una versión de runtime estándar en lugar de Databricks Runtime ML para GPU. Al seleccionar Use your own Docker container, puede elegir el cómputo con GPU con una versión estándar del entorno de ejecución. Las imágenes personalizadas para GPU se basan en los contenedores CUDA oficiales, que son diferentes a Databricks Runtime ML para GPU.

Al crear imágenes personalizadas para procesos con GPU, no se puede cambiar la versión del driver NVIDIA, ya que debe coincidir con la versión del equipo host.

databricksruntime Docker Hub contiene imágenes base de ejemplo con funcionalidad para GPU. Los dockerfiles usados para generar estas imágenes se encuentran en repositorio de GitHub de contenedores de ejemplo, que también tiene detalles sobre lo que proporcionan las imágenes de ejemplo y cómo personalizarlas.