Para jobs de treinamento personalizados que solicitam recursos de GPU, o Dynamic Workload Scheduler permite programar os jobs com base no momento em que os recursos de GPU solicitados ficam disponíveis. Nesta página, mostramos como programar jobs de treinamento personalizados usando o Dynamic Workload Scheduler e como personalizar o comportamento de programação na Vertex AI.
Casos de uso recomendados
Recomendamos o uso do Dynamic Workload Scheduler para programar jobs de treinamento personalizados nas seguintes situações:
- O job de treinamento personalizado solicita GPUs L4, A100, H100, H200 ou B200, e você quer executar o job assim que os recursos solicitados estiverem disponíveis. Por exemplo, quando a Vertex AI aloca os recursos de GPU fora dos horários de pico.
- A carga de trabalho requer vários nós e não pode começar a ser executada até que todos os nós da GPU estejam provisionados e prontos ao mesmo tempo. Por exemplo, você está criando um job de treinamento distribuído.
Requisitos
Para usar o Dynamic Workload Scheduler, seu job de treinamento personalizado precisa atender aos seguintes requisitos:
- Seu job de treinamento personalizado solicita GPUs L4, A100, H100, H200 ou B200.
- O job de treinamento personalizado tem um
timeout
máximo de sete dias ou menos. - O job de treinamento personalizado usa a mesma configuração de máquina para todos os pools de workers.
Tipos de job compatíveis
Todos os tipos de trabalhos de treinamento personalizados são aceitos, incluindo CustomJob
, HyperparameterTuningjob
e TrainingPipeline
.
Ativar o Dynamic Workload Scheduler no job de treinamento personalizado
Para ativar o Dynamic Workload Scheduler no job de treinamento personalizado, defina o campo da API scheduling.strategy
como FLEX_START
ao criar o job.
Para saber como criar um job de treinamento personalizado, consulte os links a seguir.
Configurar a duração da espera pela disponibilidade do recurso
É possível configurar o tempo que o job pode esperar por recursos no campo scheduling.maxWaitDuration
. Um valor de 0
significa que o job aguardará indefinidamente até que os recursos solicitados estejam disponíveis. O valor padrão é 1 dia.
Exemplos
Os exemplos a seguir mostram como ativar o Dynamic Workload Scheduler para um customJob
.
Selecione a guia da interface que você quer usar.
gcloud
Ao enviar um job usando a CLI do Google Cloud, adicione o campo scheduling.strategy
no arquivo config.yaml
.
Exemplo de arquivo 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
Ao enviar um job usando o SDK da Vertex AI para Python, defina o campo scheduling_strategy
no método de criação relevante de CustomJob
.
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
Ao enviar um job usando a API REST da Vertex AI, defina os campos scheduling.strategy
e scheduling.maxWaitDuration
ao criar seu job de treinamento personalizado.
Exemplo de corpo JSON da solicitação:
{
"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"
}
}
}
Cota
Quando você envia um job usando o Dynamic Workload Scheduler, em vez de consumir a cota da Vertex AI por demanda, a Vertex AI consome a cota preemptiva. Por exemplo, para GPUs NVIDIA H100, em vez de consumir:
aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus
,
A Vertex AI consome:
aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus
.
No entanto, a cota preemptiva é usada apenas no nome. Seus recursos não são preemptíveis e se comportam como recursos padrão.
Antes de enviar um job usando o Dynamic Workload Scheduler, verifique se as cotas preemptivas foram aumentadas para uma quantidade suficiente. Para detalhes sobre as cotas da Vertex AI e instruções para fazer solicitações de aumento de cota, consulte Cotas e limites da Vertex AI.
Faturamento
Ao usar o início flexível do DWS, você recebe uma fatura de acordo com os preços do Dynamic Workload Scheduler. Há taxas de gerenciamento de treinamento personalizado da Vertex AI além do uso da infraestrutura.
A seguir
- Saiba como configurar recursos de computação para jobs de treinamento personalizados.
- Saiba como usar o treinamento distribuído para jobs de treinamento personalizados.
- Saiba mais sobre outras opções de programação.