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

En el caso de los trabajos de entrenamiento personalizados que solicitan recursos de GPU, el programador de cargas de trabajo dinámico te permite programar los trabajos 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 personalizadas mediante Dynamic Workload Scheduler y cómo personalizar el comportamiento de la programación en Vertex AI.

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

  • El trabajo de entrenamiento personalizado solicita GPUs L4, A100, H100, H200 o B200 y quieres ejecutar el trabajo 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, vas a crear un trabajo de entrenamiento distribuido.

Requisitos

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

  • Tu trabajo de entrenamiento personalizado solicita GPUs L4, A100, H100, H200 o B200.
  • Tu trabajo de entrenamiento personalizado tiene un valor de timeout de 7 días o menos.
  • Tu tarea de entrenamiento personalizada usa la misma configuración de máquina para todos los grupos de trabajadores.

Tipos de trabajos admitidos

Se admiten todos los tipos de trabajos de entrenamiento personalizados, incluidos CustomJob, HyperparameterTuningjob y TrainingPipeline.

Habilitar Dynamic Workload Scheduler en un trabajo de entrenamiento personalizado

Para habilitar Dynamic Workload Scheduler en tu trabajo de entrenamiento personalizado, asigna el valor FLEX_START al campo de la API scheduling.strategy cuando crees el trabajo.

Para obtener información sobre cómo crear un trabajo de entrenamiento personalizado, 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 una tarea 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íes un trabajo con el SDK de Vertex AI para Python, define 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 personalizada.

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

Solo se te cobra por el tiempo que se ejecuta el trabajo, no por el tiempo que espera a que los recursos estén disponibles. Para obtener más información, consulta la página de precios.

Siguientes pasos