Proceso habilitado para GPU

Nota:

Algunos tipos de instancia habilitados para GPU están en versión Beta y se marcan como tales en la lista desplegable cuando se seleccionan los tipos de controlador y de trabajo durante la creación del proceso.

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 saber más sobre el aprendizaje profundo en clústeres habilitados para GPU, consulte Aprendizaje profundo.

Cree un proceso de GPU

La creación de un proceso de GPU es similar a la creación de cualquier proceso. Sin embargo, debería tener presente lo siguiente:

  • La versión de Databricks Runtime debe ser una versión habilitada para GPU, como Runtime 13.3 LTS ML (GPU, Scala 2.12.15 y Spark 3.4.1).
  • El tipo de trabajo y el tipo de controlador deben ser tipos de instancia de GPU.

Tipos de instancia admitidos

Azure Databricks admite los tipos de instancia siguientes:

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

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

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

spark.task.resource.gpu.amount es la única configuración de Spark relacionada con la programación con GPU que podría tener que cambiar. La configuración predeterminada usa una GPU por tarea, ideal para cargas de trabajo de inferencia distribuida y entrenamiento distribuido si usa todos los nodos de GPU. Para realizar el entrenamiento distribuido en un subconjunto de nodos, que ayuda a 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.

Para las tareas de PySpark, Azure Databricks reasigna automáticamente las GPU asignadas a los índices 0, 1, etc. En la configuración predeterminada que usa una GPU por tarea, el código puede simplemente usar la GPU predeterminada sin comprobar cuál está asignada a la tarea. Si establece varias GPU por tarea, por ejemplo, cuatro, el código puede suponer que 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").

Para las versiones de Databricks Runtime anteriores a la 7.0, para evitar conflictos entre varias tareas de Spark que intentan usar la misma GPU, Azure Databricks configura automáticamente el proceso de GPU para que haya como máximo una tarea en ejecución por nodo. De este modo, la tarea puede usar todas las GPU del nodo sin entrar en conflicto con otras tareas.

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

Para ver las versiones de las bibliotecas incluidas, consulte las notas de la versión de la versión de Databricks Runtime específica que está usando.

Nota:

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

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 procesos de 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 Personalización de contenedores con Databricks Container Service para 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 (Use su contenedor de Docker), puede elegir procesos con GPU con una versión de runtime estándar. 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 controlador NVIDIA, ya que debe coincidir con la versión del controlador en el host.

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