Clústeres habilitados 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 al seleccionar los tipos de controlador y trabajo durante la creación del clúster.

Información general

Azure Databricks admite clústeres acelerados con unidades de procesamiento gráfico (GPU). En este artículo se describe cómo crear clústeres con instancias habilitadas para GPU y se describen los controladores y bibliotecas de GPU instalados en esas instancias.

Para más información sobre el aprendizaje profundo en clústeres habilitados para GPU, consulte Aprendizaje profundo.

Creación de un clúster de GPU

La creación de un clúster de GPU es similar a la creación de cualquier clúster de Spark (consulte Clústeres). Debe tener en cuenta lo siguiente:

  • La versión Databricks Runtime debe ser una versión habilitada para GPU, como Runtime 8.3 ML (GPU, Scala 2.12, Spark 3.1.1).
  • El tipo de trabajo y el tipo de controlador deben ser tipos de instancia de GPU.
  • En el caso de los flujos de trabajo de una sola máquina sin Spark, puede establecer el número de trabajadores en cero.

Azure Databricks admite la serie de tipos de instancia nc: NC12 y NC24 y la serie de tipos de instancia NCv3: NC6s_v3, NC12s_v3 y NC24s_v3. Consulte Azure Databricks precios para obtener una lista actualizada de los tipos de instancia de GPU admitidos y sus regiones de disponibilidad. La Azure Databricks implementación debe residir en una región admitida para iniciar clústeres habilitados para GPU.

Programación de GPU

Databricks Runtime ml 7.0 y posteriores admiten la programación compatible con GPU Apache Spark 3.0. Azure Databricks preconfigura en clústeres de GPU.

La programación de GPU no está habilitada en clústeres de nodo único.

spark.task.resource.gpu.amount es la única configuración de Spark relacionada con la programación con gpu que puede que tenga que cambiar. La configuración predeterminada usa una GPU por tarea, que es ideal para cargas de trabajo de inferencia distribuida y entrenamiento distribuido, si usa todos los nodos de GPU. Si desea realizar el entrenamiento distribuido en un subconjunto de nodos, lo que ayuda a reducir la sobrecarga de comunicación durante el entrenamiento distribuido, Databricks recomienda establecer en el número de GPU por nodo de trabajo en la configuración de Spark del spark.task.resource.gpu.amount clúster.

En el caso de las tareas de PySpark, Azure Databricks asigna automáticamente las GPU asignadas a los índices 0, 1, .... En la configuración predeterminada que usa una GPU por tarea, el código puede usar simplemente la GPU predeterminada sin comprobar qué GPU está asignada a la tarea. Si establece varias GPU por tarea, por ejemplo 4, 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 CUDA_VISIBLE_DEVICES variable de entorno.

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

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

Controlador de GPU NVIDIA, CUDA y cuDNN

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

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

La versión del controlador NVIDIA incluida es 450.80.02, que admite CUDA 11.0. Para ver las versiones de las bibliotecas incluidas, consulte las notas de la versión de la versión Databricks Runtime versión específica que está usando.

Nota

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

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

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 con respecto a las bibliotecas CUDA, cuDNN y Tesla, y al Contrato de licencia de usuario final de NVIDIA (con el complemento NCCL) para la biblioteca NCCL.

Databricks Container Services en clústeres de GPU

Importante

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

Puede usar Databricks Container Services en clústeres con GPU para crear entornos de aprendizaje profundo portátiles con bibliotecas personalizadas. Consulte Personalización de contenedores con Databricks Container Services para obtener instrucciones.

Para crear imágenes personalizadas para clústeres de GPU, debe seleccionar una versión en tiempo de ejecución estándar en lugar Databricks Runtime ml para GPU. Al seleccionar Usar su propio contenedor de Docker, puede elegir clústeres de GPU con una versión en tiempo de ejecución estándar. Las imágenes personalizadas para clústeres de GPU se basan en los contenedores CUDAoficiales, que es diferente de Databricks Runtime ML para GPU.

Al crear imágenes personalizadas para clústeres de GPU, no se puede cambiar la versión del controlador NVIDIA, ya que debe coincidir con la versión del controlador en el equipo host, que es 450.80.02.

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