Pianificare i job di addestramento in base alla disponibilità delle risorse

Per i job di addestramento personalizzati che richiedono risorse GPU, Dynamic Workload Scheduler consente di pianificare i job in base a quando le risorse GPU richieste diventano disponibili. Questa pagina mostra come pianificare job di addestramento personalizzati mediante Dynamic Workload Scheduler, e come personalizzare il comportamento di pianificazione su Vertex AI.

Consigliamo di utilizzare Dynamic Workload Scheduler per pianificare i job di addestramento personalizzati nel le seguenti situazioni:

  • Il job di addestramento personalizzato richiede le GPU A100 o H100 e vuoi eseguire non appena le risorse richieste diventano disponibili. Ad esempio, quando Vertex AI alloca le risorse GPU al di fuori delle ore di punta.
  • Il carico di lavoro richiede più nodi e non può iniziare a funzionare finché non viene eseguito il provisioning di tutti i nodi GPU e non sono pronti contemporaneamente. Ad esempio, stai creando un job di addestramento distribuito.

Requisiti

Per utilizzare Dynamic Workload Scheduler, il tuo job di addestramento personalizzato deve soddisfare i seguenti requisiti: requisiti:

  • Il tuo job di addestramento personalizzato ha un timeout massimo di 7 giorni o meno.
  • Il job di addestramento personalizzato utilizza la stessa configurazione della macchina per tutti i pool di worker.

Tipi di prestazioni supportati

Sono supportati tutti i tipi di job di addestramento personalizzato, tra cui CustomJob, HyperparameterTuningjob e TrainingPipeline.

Abilita Dynamic Workload Scheduler nel tuo job di addestramento personalizzato

Per attivare Dynamic Workload Scheduler nel job di addestramento personalizzato, imposta il campo API scheduling.strategy su FLEX_START quando crei il job.

Per informazioni dettagliate su come creare un job di addestramento personalizzato, consulta i seguenti link.

Configura la durata di attesa della disponibilità delle risorse

Puoi configurare il tempo di attesa del job per le risorse nel Campo scheduling.maxWaitDuration. Il valore 0 indica che il job attende a tempo indeterminato finché le risorse richieste non diventano disponibili. Il valore predefinito è di 1 giorno.

Esempi

Gli esempi riportati di seguito mostrano come attivare Dynamic Workload Scheduler per un customJob. Seleziona la scheda dell'interfaccia che vuoi utilizzare.

gcloud

Quando invii un job utilizzando Google Cloud CLI, aggiungi il campo scheduling.strategy nel file config.yaml.

Esempio di file di configurazione YAML:

workerPoolSpecs:
  machineSpec:
    machineType: n1-highmem-2
  replicaCount: 1
  containerSpec:
    imageUri: gcr.io/ucaip-test/ucaip-training-test
    args:
    - port=8500
    command:
    - start
scheduling:
  strategy: FLEX_START
  maxWaitDuration: 1800s

python

Quando invii un job utilizzando l'SDK Vertex AI per Python, imposta il campo scheduling_strategy nel metodo di creazione CustomJob pertinente.

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,
    )

    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

Quando invii un job utilizzando l'API REST di Vertex AI, imposta i campi scheduling.strategy e scheduling.maxWaitDuration quando crei il job di addestramento personalizzato.

Esempio di corpo JSON della richiesta:

{
  "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"
    }
  }
}

Quota

Quando invii un job utilizzando Dynamic Workload Scheduler, invece di utilizzare i dati on demand Quota di Vertex AI, che utilizza una quota prerilasciabile. Ad esempio, per le GPU Nvidia H100, anziché consumare:

aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus,

Vertex AI utilizza:

aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus.

Tuttavia, la quota prerilasciabile viene utilizzata solo nel nome. Le tue risorse non sono prerilasciabili e si comportano come risorse standard.

Prima di inviare un job utilizzando Dynamic Workload Scheduler, assicurati che le tue quote prerilasciabili siano stati aumentati a un importo sufficiente. Per informazioni dettagliate sulle quote di Vertex AI e sulle istruzioni per presentare richieste di aumento della quota, consulta Quote e limiti di Vertex AI.

Fatturazione

Ti viene addebitata solo la durata dell'esecuzione del job e non il tempo di attesa prima che le risorse diventino disponibili. Per i dettagli, consulta la pagina Prezzi.

Passaggi successivi