Agende tarefas de preparação com base na disponibilidade de recursos

Para tarefas de preparação personalizadas que pedem recursos de GPU, o Dynamic Workload Scheduler permite-lhe agendar as tarefas com base na disponibilidade dos recursos de GPU pedidos. Esta página mostra como agendar tarefas de preparação personalizadas através do Dynamic Workload Scheduler e como personalizar o comportamento de agendamento no Vertex AI.

Exemplos de utilização recomendados

Recomendamos que use o Dynamic Workload Scheduler para agendar tarefas de preparação personalizadas nas seguintes situações:

  • As solicitações de tarefas de preparação personalizadas pedem GPUs L4, A100, H100, H200 ou B200, e quer executar a tarefa assim que os recursos solicitados ficarem disponíveis. Por exemplo, quando o Vertex AI atribui os recursos de GPU fora das horas de ponta.
  • A sua carga de trabalho requer vários nós e não pode começar a ser executada até que todos os nós de GPU sejam aprovisionados e estejam prontos em simultâneo. Por exemplo, está a criar uma tarefa de preparação distribuída.

Requisitos

Para usar o Dynamic Workload Scheduler, a tarefa de preparação personalizada tem de cumprir os seguintes requisitos:

  • A tarefa de preparação personalizada pede GPUs L4, A100, H100, H200 ou B200.
  • A tarefa de preparação personalizada tem um máximo de timeout dias ou menos.
  • A sua tarefa de preparação personalizada usa a mesma configuração da máquina para todos os conjuntos de trabalhadores.

Tipos de tarefas suportados

Todos os tipos de tarefas de preparação personalizadas são suportados, incluindo CustomJob, HyperparameterTuningjob e TrainingPipeline.

Ative o programador de carga de trabalho dinâmico no seu trabalho de preparação personalizado

Para ativar o Dynamic Workload Scheduler na sua tarefa de treino personalizada, defina o campo da API scheduling.strategy como FLEX_START quando criar a tarefa.

Para ver detalhes sobre como criar uma tarefa de preparação personalizada, consulte os seguintes links.

Configure a duração da espera pela disponibilidade de recursos

Pode configurar o tempo que a tarefa pode esperar por recursos no campo scheduling.maxWaitDuration. Um valor de 0 significa que a tarefa aguarda indefinidamente até que os recursos pedidos fiquem disponíveis. O valor predefinido é 1 dia.

Exemplos

Os exemplos seguintes mostram como ativar o Dynamic Workload Scheduler para um customJob. Selecione o separador da interface que quer usar.

gcloud

Quando enviar uma tarefa através da CLI do Google Cloud, adicione o campo scheduling.strategy no ficheiro config.yaml.

Exemplo de ficheiro de configuração 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

Quando enviar uma tarefa através do SDK da Vertex AI para Python, defina o campo scheduling_strategy no método de criação CustomJob relevante.

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

Quando enviar uma tarefa através da API REST Vertex AI, defina os campos scheduling.strategy e scheduling.maxWaitDuration quando criar a sua tarefa de preparação personalizada.

Exemplo de corpo JSON do pedido:

{
  "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 envia um trabalho através do Dynamic Workload Scheduler, em vez de consumir a quota do Vertex AI a pedido, o Vertex AI consome a quota interrompível. Por exemplo, para GPUs Nvidia H100, em vez de consumir:

aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus,

O Vertex AI consome:

aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus.

No entanto, a quota preemptible só é usada no nome. Os seus recursos não são preemptíveis e comportam-se como recursos padrão.

Antes de enviar um trabalho através do Dynamic Workload Scheduler, certifique-se de que as suas quotas preemptíveis foram aumentadas para um valor suficiente. Para ver detalhes sobre as quotas da Vertex AI e instruções para fazer pedidos de aumento de quotas, consulte o artigo Quotas e limites da Vertex AI.

Faturação

Quando usa o início flexível do DWS, a faturação é feita de acordo com os preços do Dynamic Workload Scheduler. Existem taxas de gestão de preparação personalizada do Vertex AI, além da utilização da infraestrutura.

O que se segue