Para jobs de treinamento sem servidor 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 sem servidor usando o Dynamic Workload Scheduler e como personalizar o comportamento de programação na Gemini Enterprise Agent Platform.
Casos de uso recomendados
Recomendamos o uso do Dynamic Workload Scheduler para programar jobs de treinamento sem servidor nas seguintes situações:
- O job de treinamento sem servidor 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 Gemini Enterprise Agent Platform 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 sem servidor precisa atender aos seguintes requisitos:
- O job de treinamento sem servidor solicita GPUs L4, A100, H100, H200 ou B200.
- O job de treinamento sem servidor tem um
timeoutmáximo de 7 dias ou menos. - O job de treinamento sem servidor usa a mesma configuração de máquina para todos os pools de workers.
Tipos de job compatíveis
Todos os tipos de job de treinamento sem servidor são compatíveis, incluindo CustomJob, HyperparameterTuningjob e TrainingPipeline.
Ativar o Dynamic Workload Scheduler no job de treinamento sem servidor
Para ativar o Dynamic Workload Scheduler no job de treinamento sem servidor, defina o campo da API scheduling.strategy como FLEX_START ao criar o job.
Para mais detalhes sobre como criar um job de treinamento sem servidor, 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 Agent Platform 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
Ao enviar um job usando a API REST da Gemini Enterprise Agent Platform, defina os campos scheduling.strategy e scheduling.maxWaitDuration ao criar seu job de treinamento sem servidor.
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"
}
}
}
Quota
Quando você envia um job usando o Dynamic Workload Scheduler, em vez de consumir a cota da Gemini Enterprise Agent Platform por demanda, a Gemini Enterprise Agent Platform consome a cota preemptiva. Por exemplo, para GPUs NVIDIA H100, em vez de consumir:
aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus,
A Gemini Enterprise Agent Platform 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 Gemini Enterprise Agent Platform e instruções para fazer solicitações de aumento de cota, consulte Cotas e limites da Gemini Enterprise Agent Platform.
Faturamento
Ao usar o início flexível do DWS, você recebe a cobrança de acordo com os preços do Dynamic Workload Scheduler. Há taxas de gerenciamento de treinamento sem servidor, além do uso da infraestrutura.
A seguir
- Saiba como configurar recursos de computação para jobs de treinamento sem servidor.
- Saiba como usar o treinamento distribuído para jobs de treinamento sem servidor.
- Saiba mais sobre outras opções de programação.