Usar o Dynamic Workload Scheduler

É 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 performance com 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"