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
- Saiba como configurar recursos de computação para tarefas de preparação personalizadas.
- Saiba mais sobre a utilização da preparação distribuída para tarefas de preparação personalizadas.
- Saiba mais acerca de outras opções de agendamento.