Usa el programador dinámico de cargas de trabajo

Puedes usar el modo de inicio flexible del programador dinámico de cargas de trabajo (DWS) para mejorar la disponibilidad de los recursos de GPU escasos para tus cargas de trabajo por lotes de Managed Service para Apache Spark.

Descripción general

El programador dinámico de cargas de trabajo es un programador que tiene en cuenta la capacidad y administra los recursos de procesamiento escasos a nivel global. En el modo Flex Start, Managed Service para Apache Spark puede poner en cola tu solicitud durante un período configurable cuando las GPUs no están disponibles de inmediato debido a la falta de stock regional.

Flex Start es el comportamiento predeterminado para todas las cargas de trabajo habilitadas para GPU que se envían a la versión 3.0+ del entorno de ejecución de Spark de Managed Service para Apache Spark. Cuando los recursos no están disponibles, la solicitud se pone en cola en lugar de fallar con un error de falta de stock. Una vez que se obtiene la capacidad, DWS aprovisiona todo el clúster "de una vez" antes de que comience la ejecución. Para obtener más información, consulta Presentamos el Programador de cargas de trabajo dinámico.

Beneficios

  • Mayor disponibilidad: Se redujeron considerablemente las fallas en los trabajos causadas por la escasez transitoria de capacidad de la GPU.
  • Aprovisionamiento atómico: El aprovisionamiento de trabajadores de clústeres como una sola unidad, lo que garantiza la integridad del clúster y evita situaciones en las que solo se crea un conjunto parcial de trabajadores.
  • Confiabilidad predeterminada: Se mejoró la adquisición de recursos sin necesidad de configurar parámetros manualmente.

Requisitos de cuota

Para usar DWS Flex Start, tu proyecto debe tener una cuota suficiente:

  • Cuota de GPU interrumpible: DWS Flex Start consume la versión interrumpible del grupo de cuotas de GPU en lugar del grupo estándar (por ejemplo, PREEMPTIBLE_NVIDIA_L4_GPUS). Para obtener más información, consulta Cuotas de recursos de Managed Service para Apache Spark.
  • Cuota de SSD local: Cuando se usa la clase de almacenamiento performance con máquinas aceleradas por GPU, Managed Service para Apache Spark aprovisiona SSD locales para el almacenamiento temporal y la reorganización de alta velocidad. Tu proyecto debe tener suficiente cuota de SSD local en la región de destino.

Configuración

El inicio flexible de DWS está habilitado de forma predeterminada para las cargas de trabajo de GPU en la versión de tiempo de ejecución 3.0+. Puedes usar las siguientes propiedades de Spark para personalizar el tiempo de espera o inhabilitar la función:

Propiedad Descripción Valores Predeterminado
spark.dataproc.[driver|executor].provisioning.mode Especifica el modelo de aprovisionamiento. Usa queue para DWS Flex Start (opción predeterminada para las GPUs) o default para inhabilitar DWS y usar el aprovisionamiento a pedido. queue, default queue (para GPUs en 3.0 y versiones posteriores)
spark.dataproc.[driver|executor].provisioning.allocationTimeout Es la duración máxima que el grupo de nodos puede esperar en la cola para obtener capacidad. El valor predeterminado es 1 hora (3600s) y el valor máximo es 2 horas (7200s). Nota: Los valores deben terminar con el sufijo "s". Duración en segundos (por ejemplo, 1800s) 3600s

Ejemplo: Carga de trabajo por lotes de GPU con inicio flexible de DWS

En el siguiente ejemplo, se envía un trabajo por lotes de PySpark con GPU NVIDIA L4. Con DWS Flex Start activo de forma predeterminada, el comando establece un tiempo de espera de la cola de 30 minutos (1800s) tanto para el conductor como para los ejecutores:

gcloud dataproc batches submit pyspark \
    gs://my-bucket/path/to/your-script.py \
    --project="PROJECT_ID" \
    --region="REGION" \
    --version="3.0" \
    --properties="spark.dataproc.driver.resource.accelerator.type=l4,\
spark.dataproc.driver.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.resource.accelerator.type=l4,\
spark.dataproc.executor.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.compute.tier=premium,\
spark.dataproc.executor.disk.tier=premium"