Dataproc permite montar unidades de procesamiento gráfico (GPUs) en los nodos maestros y de trabajador de Compute Engine de un clúster de Dataproc. Estas GPUs se pueden usar para acelerar determinadas cargas de trabajo en tus instancias, como las de aprendizaje automático y de procesamiento de datos.
Para obtener más información sobre lo que puedes hacer con las GPUs y qué tipos de hardware de GPU están disponibles, consulta el artículo GPUs en Compute Engine.
Antes de empezar
- Las GPU requieren controladores y software especiales. Estos elementos no están preinstalados en los clústeres de Dataproc.
- Consulta los precios de las GPU en Compute Engine para saber cuánto cuesta usar las GPU en tus instancias.
- Consulta las restricciones de las instancias con GPUs para saber cómo funcionan estas instancias en comparación con las que no tienen GPUs.
- Consulta la página de cuotas de tu proyecto para asegurarte de que tienes suficiente cuota de GPU (
NVIDIA_T4_GPUS
,NVIDIA_P100_GPUS
oNVIDIA_V100_GPUS
) disponible en tu proyecto. Si las GPUs no aparecen en la página de cuotas o necesitas más cuota de GPU, solicita un aumento de cuota.
Tipos de GPUs
Los nodos de Dataproc admiten los siguientes tipos de GPU. Debe especificar el tipo de GPU al asociar GPUs a su clúster de Dataproc.
nvidia-tesla-l4
- NVIDIA® Tesla® L4nvidia-tesla-a100
- NVIDIA® Tesla® A100nvidia-tesla-p100
- NVIDIA® Tesla® P100nvidia-tesla-v100
- NVIDIA® Tesla® V100nvidia-tesla-p4
- NVIDIA® Tesla® P4nvidia-tesla-t4
- NVIDIA® Tesla® T4nvidia-tesla-p100-vws
- Estaciones de trabajo virtuales con NVIDIA® Tesla® P100nvidia-tesla-p4-vws
- Estaciones de trabajo virtuales con NVIDIA® Tesla® P4nvidia-tesla-t4-vws
- Estaciones de trabajo virtuales con NVIDIA® Tesla® T4
Conectar GPUs a clústeres
gcloud
Si montas GPUs en el nodo maestro y en los nodos de trabajador principal y secundario de un clúster de Dataproc al crear el clúster con las marcas ‑‑master-accelerator
, ‑‑worker-accelerator
y ‑‑secondary-worker-accelerator
, Estas marcas aceptan los dos valores siguientes:
- el tipo de GPU que se va a asociar a un nodo.
- El número de GPUs que se van a asociar al nodo.
El tipo de GPU es obligatorio y el número de GPUs es opcional (el valor predeterminado es 1 GPU).
Ejemplo:
gcloud dataproc clusters create cluster-name \ --region=region \ --master-accelerator type=nvidia-tesla-t4 \ --worker-accelerator type=nvidia-tesla-t4,count=4 \ --secondary-worker-accelerator type=nvidia-tesla-t4,count=4 \ ... other flags
Para usar GPUs en tu clúster, debes instalar los controladores de GPU.
API REST
Para asociar GPUs a los nodos maestro, de trabajador principal y de trabajador secundario de un clúster de Dataproc, rellena los campos InstanceGroupConfig.AcceleratorConfig
acceleratorTypeUri
y acceleratorCount
como parte de la solicitud de la API cluster.create.
Consola
En las secciones de nodos maestros y de trabajadores del panel Configurar nodos de la página Crear un clúster de la consola de Google Cloud , haz clic en PLATAFORMA DE CPU Y GPU → GPUs → AÑADIR GPU para especificar el número y el tipo de GPUs de los nodos.
Instalar controladores de GPU
Se necesitan controladores de GPU para utilizar las GPUs conectadas a los nodos de Dataproc. Para instalar los controladores de GPU, sigue estas instrucciones:
Verificar la instalación del controlador de GPU
Una vez que hayas terminado de instalar el controlador de GPU en tus nodos de Dataproc, puedes verificar que el controlador funciona correctamente. Accede al nodo maestro de tu clúster de Dataproc mediante SSH y ejecuta el siguiente comando:
nvidia-smi
Si el controlador funciona correctamente, en la salida se mostrarán la versión del controlador y las estadísticas de la GPU (consulta Verificar la instalación del controlador de la GPU).
Configuración de Spark
Cuando envías un trabajo a Spark, puedes usar la propiedad spark.executorEnv
de configuración de Spark propiedad del entorno de ejecución
con la variable de entorno LD_PRELOAD
para precargar las bibliotecas necesarias.
Ejemplo:
gcloud dataproc jobs submit spark --cluster=CLUSTER_NAME \ --region=REGION \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --properties=spark.executorEnv.LD_PRELOAD=libnvblas.so,spark.task.resource.gpu.amount=1,spark.executor.resource.gpu.amount=1,spark.executor.resource.gpu.discoveryScript=/usr/lib/spark/scripts/gpu/getGpusResources.sh
Ejemplo de trabajo de GPU
Puedes probar las GPUs en Dataproc ejecutando cualquiera de los siguientes trabajos, que se benefician cuando se ejecutan con GPUs:
- Ejecuta uno de los ejemplos de aprendizaje automático de Spark.
- Ejecuta el siguiente ejemplo con
spark-shell
para realizar un cálculo de matrices:
import org.apache.spark.mllib.linalg._ import org.apache.spark.mllib.linalg.distributed._ import java.util.Random def makeRandomSquareBlockMatrix(rowsPerBlock: Int, nBlocks: Int): BlockMatrix = { val range = sc.parallelize(1 to nBlocks) val indices = range.cartesian(range) return new BlockMatrix( indices.map( ij => (ij, Matrices.rand(rowsPerBlock, rowsPerBlock, new Random()))), rowsPerBlock, rowsPerBlock, 0, 0) } val N = 1024 * 4 val n = 2 val mat1 = makeRandomSquareBlockMatrix(N, n) val mat2 = makeRandomSquareBlockMatrix(N, n) val mat3 = mat1.multiply(mat2) mat3.blocks.persist.count println("Processing complete!")
Siguientes pasos
- Consulta cómo crear una instancia de Compute Engine con GPUs vinculadas.
- Consulta más información sobre los tipos de máquinas con GPU.