É possível usar o modo de início flexível do Dynamic Workload Scheduler (DWS) para melhorar a capacidade de obtenção de recursos de GPU escassos para cargas de trabalho em lote do Serviço Gerenciado para Apache Spark.
Visão geral
O Dynamic Workload Scheduler é um programador com reconhecimento de capacidade que gerencia recursos de computação escassos globalmente. No modo Início flexível, o Serviço Gerenciado para Apache Spark pode enfileirar sua solicitação por uma duração configurável quando as GPUs não estão imediatamente disponíveis devido a falta de estoque regional.
O início flexível é o comportamento padrão para todas as cargas de trabalho ativadas por GPU enviadas ao Serviço Gerenciado para Apache Spark na versão 3.0 ou mais recente do ambiente de execução do Spark. Quando os recursos não estão disponíveis, a solicitação é enfileirada em vez de falhar com um erro de falta de estoque.
Depois que a capacidade é obtida, o DWS provisiona todo o cluster "de uma só vez" antes do início da execução. Para mais informações, consulte Apresentamos o Dynamic Workload
Scheduler.
Benefícios
- Maior disponibilidade:redução substancial nas falhas de jobs causadas por escassez temporária de capacidade de GPU.
- Provisionamento atômico:provisionamento de workers de cluster como uma única unidade, garantindo a integridade do cluster e evitando cenários em que apenas um conjunto parcial de workers é criado.
- Confiabilidade padrão:aquisição de recursos aprimorada sem configuração manual de parâmetros.
Requisitos de cota
Para usar o início flexível do DWS, o projeto precisa ter cota suficiente:
- Cota de GPU preemptiva: o início flexível do DWS consome a versão preemptiva
do pool de cotas de GPU em vez do pool padrão (por exemplo,
PREEMPTIBLE_NVIDIA_L4_GPUS). Para mais informações, consulte Cotas de recursos do Serviço Gerenciado para Apache Spark. - Cota de SSD local:ao usar a classe de armazenamento
performancecom máquinas aceleradas por GPU, o Serviço Gerenciado para Apache Spark provisiona SSDs locais para embaralhamento de alta velocidade e armazenamento temporário. O projeto precisa ter cota de SSD local suficiente na região de destino.
Configuração
O início flexível do DWS está ativado por padrão para cargas de trabalho de GPU na versão 3.0 ou mais recente do ambiente de execução. É possível usar as seguintes propriedades do Spark para personalizar o tempo limite ou desativar o recurso:
| Propriedade | Descrição | Valores | Padrão |
|---|---|---|---|
spark.dataproc.[driver|executor].provisioning.mode |
Especifica o modelo de provisionamento. Use queue para o início flexível do DWS (padrão para GPUs) ou default para desativar o DWS e usar o provisionamento sob demanda. |
queue, default |
queue (para GPUs na versão 3.0 ou mais recente) |
spark.dataproc.[driver|executor].provisioning.allocationTimeout |
A duração máxima para o pool de nós aguardar capacidade na fila. O padrão é de 1 hora (3600s) e o máximo é de 2 horas (7200s). Observação: os valores precisam terminar com um sufixo "s". |
duração em segundos (por exemplo, 1800s) |
3600s |
Exemplo: carga de trabalho em lote de GPU com início flexível do DWS
O exemplo a seguir envia um job em lote do PySpark usando GPUs NVIDIA L4. Com o início flexível do DWS ativado por padrão, o comando define um tempo limite de enfileiramento de 30 minutos (1800s) para o driver e os executores:
gcloud dataproc batches submit pyspark \
gs://my-bucket/path/to/your-script.py \
--project="PROJECT_ID" \
--region="REGION" \
--version="3.0" \
--properties="spark.dataproc.driver.resource.accelerator.type=l4,\
spark.dataproc.driver.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.resource.accelerator.type=l4,\
spark.dataproc.executor.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.compute.tier=premium,\
spark.dataproc.executor.disk.tier=premium"