Programar tareas de entrenamiento en función de la disponibilidad de los recursos

En el caso de las tareas de entrenamiento sin servidor de Vertex AI que solicitan recursos de GPU, Dynamic Workload Scheduler te permite programar las tareas en función de cuándo estén disponibles los recursos de GPU solicitados. En esta página se explica cómo programar tareas de entrenamiento sin servidor mediante Dynamic Workload Scheduler y cómo personalizar el comportamiento de la programación en Vertex AI.

Casos prácticos recomendados

Te recomendamos que uses Dynamic Workload Scheduler para programar trabajos de entrenamiento sin servidor en las siguientes situaciones:

  • La tarea de entrenamiento sin servidor solicita GPUs L4, A100, H100, H200 o B200, y quieres ejecutar la tarea en cuanto estén disponibles los recursos solicitados. Por ejemplo, cuando Vertex AI asigna los recursos de GPU fuera de las horas punta.
  • Tu carga de trabajo requiere varios nodos y no puede empezar a ejecutarse hasta que todos los nodos de GPU se aprovisionen y estén listos al mismo tiempo. Por ejemplo, estás creando un trabajo de entrenamiento distribuido.

Requisitos

Para usar Dynamic Workload Scheduler, tu tarea de entrenamiento sin servidor debe cumplir los siguientes requisitos:

  • Tu trabajo de entrenamiento sin servidor solicita GPUs L4, A100, H100, H200 o B200.
  • El tiempo máximo de timeout de tu trabajo de entrenamiento sin servidor es de 7 días o menos.
  • Tu tarea de entrenamiento sin servidor usa la misma configuración de máquina para todos los grupos de trabajadores.

Tipos de trabajos admitidos

Se admiten todos los tipos de tareas de entrenamiento sin servidor, incluidos CustomJob, HyperparameterTuningjob y TrainingPipeline.

Habilitar Dynamic Workload Scheduler en un trabajo de entrenamiento sin servidor

Para habilitar Dynamic Workload Scheduler en tu trabajo de entrenamiento sin servidor, asigna el valor FLEX_START al campo de la API scheduling.strategy al crear el trabajo.

Para obtener información sobre cómo crear un trabajo de entrenamiento sin servidor, consulta los siguientes enlaces.

Configurar la duración de espera de la disponibilidad de recursos

Puedes configurar cuánto tiempo puede esperar tu trabajo a los recursos en el campo scheduling.maxWaitDuration. El valor 0 significa que el trabajo espera indefinidamente hasta que los recursos solicitados estén disponibles. El valor predeterminado es 1 día.

Ejemplos

En los siguientes ejemplos se muestra cómo habilitar Dynamic Workload Scheduler para un customJob. Selecciona la pestaña de la interfaz que quieras usar.

gcloud

Cuando envíes un trabajo mediante Google Cloud CLI, añade el campo scheduling.strategy en el archivo config.yaml.

Ejemplo de archivo de configuración YAML:

workerPoolSpecs:
  machineSpec:
    machineType: a2-highgpu-1g
    acceleratorType: NVIDIA_TESLA_A100
    acceleratorCount: 1
  replicaCount: 1
  containerSpec:
    imageUri: gcr.io/ucaip-test/ucaip-training-test
    args:
    - port=8500
    command:
    - start
scheduling:
  strategy: FLEX_START
  maxWaitDuration: 7200s

Python

Cuando envíe un trabajo mediante el SDK de Vertex AI para Python, defina el campo scheduling_strategy en el método de creación CustomJob correspondiente.

from google.cloud.aiplatform_v1.types import custom_job as gca_custom_job_compat

def create_custom_job_with_dws_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket, experiment=experiment)

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
        enable_autolog=True,
        machine_type="a2-highgpu-1g",
        accelerator_type="NVIDIA_TESLA_A100",
        accelerator_count=1,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
        max_wait_duration=1800,
        scheduling_strategy=gca_custom_job_compat.Scheduling.Strategy.FLEX_START
    )

REST

Cuando envíes una tarea mediante la API REST de Vertex AI, define los campos scheduling.strategy y scheduling.maxWaitDuration al crear tu tarea de entrenamiento sin servidor.

Cuerpo JSON de solicitud de ejemplo:

{
  "displayName": "MyDwsJob",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "a2-highgpu-1g",
          "acceleratorType": "NVIDIA_TESLA_A100",
          "acceleratorCount": 1
        },
        "replicaCount": 1,
        "diskSpec": {
          "bootDiskType": "pd-ssd",
          "bootDiskSizeGb": 100
        },
        "containerSpec": {
          "imageUri": "python:3.10",
          "command": [
            "sleep"
          ],
          "args": [
            "100"
          ]
        }
      }
    ],
    "scheduling": {
      "maxWaitDuration": "1800s",
      "strategy": "FLEX_START"
    }
  }
}

Cuota

Cuando envías un trabajo mediante Dynamic Workload Scheduler, en lugar de consumir cuota de Vertex AI bajo demanda, Vertex AI consume cuota preemptible. Por ejemplo, en el caso de las GPUs Nvidia H100, en lugar de consumir:

aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus,

Vertex AI consume lo siguiente:

aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus.

Sin embargo, la cuota interrumpible solo se usa de nombre. Tus recursos no son preemptibles y se comportan como recursos estándar.

Antes de enviar un trabajo mediante Dynamic Workload Scheduler, asegúrese de que sus cuotas de recursos preemptibles se han aumentado a una cantidad suficiente. Para obtener información sobre las cuotas de Vertex AI e instrucciones para solicitar aumentos de cuota, consulta Cuotas y límites de Vertex AI.

Facturación

Si usas el inicio flexible de DWS, se te facturará según los precios de Dynamic Workload Scheduler. Además del uso de la infraestructura, se aplican tarifas de gestión del entrenamiento sin servidor.

Siguientes pasos