A escala automática vertical é uma funcionalidade que permite ao Dataflow Prime ajustar dinamicamente aumentando ou diminuindo a memória disponível para os trabalhadores de acordo com os requisitos da tarefa. Esta funcionalidade foi concebida para tornar os trabalhos resilientes a erros de falta de memória (OOM) e maximizar a eficiência do pipeline. O Dataflow Prime monitoriza o pipeline, deteta situações em que os trabalhadores não têm ou excedem a memória disponível e, em seguida, substitui esses trabalhadores por novos trabalhadores com mais ou menos memória.
Importante: uma vez que o dimensionamento automático vertical substitui os trabalhadores existentes por novos trabalhadores, recomendamos vivamente que use contentores personalizados para melhorar a latência que possa surgir ao redimensionar os trabalhadores.
Streaming
A escala automática vertical está ativada por predefinição para todos os novos trabalhos de streaming que usam o Dataflow Prime.
Se estiver a iniciar uma tarefa a partir de um modelo através da interface de linha de comandos,
pode desativar o ajuste de escala automático vertical transmitindo a flag --additional_experiments=disable_vertical_memory_autoscaling
.
Todos os pipelines Java e Python de streaming do Dataflow Prime suportam a escala automática vertical. Pode usar pipelines Java de streaming do Dataflow Prime sem o Streaming Engine. No entanto, para ter a melhor experiência com o dimensionamento automático vertical, recomendamos que ative o Streaming Engine.
Lote
Para tarefas em lote do Dataflow Prime, a escala automática vertical só aumenta após ocorrerem quatro erros de falta de memória.
- A escala automática vertical aumenta a escala para evitar falhas de tarefas e não diminui a escala.
- Todo o conjunto é dimensionado para o resto da tarefa.
- Se forem usadas sugestões de recursos e forem criados vários conjuntos, cada conjunto é dimensionado separadamente.
Para tarefas em lote, o ajuste de escala automático vertical não está ativado por predefinição. Para ativar o ajuste de escala automático vertical para tarefas em lote, defina as seguintes opções do pipeline:
--experiments=enable_batch_vmr
--experiments=enable_vertical_memory_autoscaling
Para desativar a escala automática vertical para trabalhos em lote, faça uma das seguintes ações:
- Não defina a opção de tubagem
--experiments=enable_batch_vmr
. - Defina a
--experiments=disable_vertical_memory_autoscaling
opção de tubagem.
Limitações
- Apenas a memória dos trabalhadores é dimensionada verticalmente.
- Por predefinição, o dimensionamento da memória tem um limite superior de 16 GiB e um limite inferior de 6 GiB. Quando usa GPUs, o dimensionamento da memória tem um limite superior de 26 GiB e um limite inferior de 12 GiB. Pode alterar os limites superior e inferior fornecendo uma sugestão de recurso.
- O ajuste de escala automático vertical não é suportado para pools que usam GPUs A100.
- Para tarefas em lote, os pacotes que incluem um item com falhas podem ser repetidos mais de 4 vezes antes de o pipeline falhar completamente.
- O ajuste de escala automático vertical não é suportado com os VPC Service Controls. Se ativar o Dataflow Prime e iniciar uma nova tarefa num perímetro do VPC Service Controls, a tarefa usa o Dataflow Prime sem a escala automática vertical.
- Quando usa o ajuste adequado com o dimensionamento automático vertical, apenas são suportados pipelines em lote.
Monitorize a escala automática vertical
As operações de escala automática vertical são publicadas nos registos de tarefas e de trabalhadores. Para ver estes registos, consulte as métricas da tarefa do Dataflow.
Efeito na escala automática horizontal
No Dataflow Prime, a escala automática vertical funciona em conjunto com a escala automática horizontal. Esta combinação permite que o Dataflow Prime aumente ou diminua facilmente a escala dos trabalhadores para se adaptar melhor às necessidades do seu pipeline e maximizar a utilização da capacidade de computação.
Por predefinição, a escala automática vertical (que ajusta a memória do trabalhador) ocorre com uma frequência inferior à da escala automática horizontal (que ajusta o número de trabalhadores). A escala automática horizontal é desativada durante e até 10 minutos após uma atualização ser acionada pela escala automática vertical. Se existir um atraso significativo de dados de entrada após esta marca de 10 minutos, é provável que ocorra o ajuste de escala automático horizontal para limpar esse atraso. Para saber mais sobre o ajuste de escala automático horizontal para pipelines de streaming, consulte o artigo Ajuste de escala automático de streaming.
Resolução de problemas
Esta secção fornece instruções para resolver problemas comuns relacionados com o ajuste de escala automático vertical.
A escala automática vertical não parece funcionar
Se o ajuste de escala automático vertical não estiver a funcionar, verifique os seguintes detalhes da tarefa.
Verifique a seguinte mensagem de tarefa para confirmar que a escala automática vertical está ativa:
Vertical Autoscaling is enabled. This pipeline is receiving recommendations for resources allocated per worker.
A ausência desta mensagem indica que o ajuste de escala automático vertical não está em execução.
Para pipelines de streaming, verifique se a flag
enable_vertical_memory_autoscaling
está definida. Para pipelines em lote, verifique se as flagsenable_vertical_memory_autoscaling
eenable_batch_vmr
estão definidas.Confirme se ativou a API Cloud Autoscaling para o seu Google Cloud projeto. Ative a API
Verifique se a tarefa está a executar o Dataflow Prime. Para mais informações, consulte o artigo Ativar o Dataflow Prime.
O trabalho observa um grande atraso e um limite máximo elevado
Estas instruções aplicam-se apenas a tarefas de streaming. Se a reformulação vertical dos trabalhadores demorar mais do que alguns minutos, a tarefa pode apresentar um grande atraso dos dados de entrada e um limite máximo elevado. Para resolver este problema em pipelines Python, recomendamos vivamente que use contentores personalizados, porque podem melhorar a latência que pode surgir da reformulação dos trabalhadores. Para resolver este problema em pipelines Java, recomendamos vivamente que ative o Streaming Engine e o Runner v2. Se o problema persistir depois de ativar estas funcionalidades, contacte o apoio ao cliente.
A escala automática vertical atingiu a capacidade de memória.
Por predefinição, se não forem fornecidas sugestões de recursos, o dimensionamento automático vertical não dimensiona a memória além de 16 GiB por trabalhador (26 GiB quando usa GPUs) ou menos de 6 GiB por trabalhador (12 GiB quando usa GPUs). Quando estes limites são atingidos, é gerada uma das seguintes mensagens de registo no Cloud Logging.
Empregos de streaming:
Vertical Autoscaling has a desire to upscale memory, but we have hit the memory
scaling limit of X GiB. This is only a problem if the pipeline continues to see
memory throttling and/or OOMs.
Tarefas de lote:
Vertical Autoscaling has a desire to upscale memory, but we have hit the memory
scaling limit of 16.0 GiB. Job will fail because we have upsized to maximum
size, and the pipeline is still OOMing.
Se a sua pipeline continuar a apresentar erros de falta de memória, pode usar o ajuste
adequado (sugestões de recursos) para definir os requisitos de memória
para a sua transformação especificando min_ram="numberXB"
. Esta definição
permite que o Dataflow selecione uma configuração inicial para os seus
trabalhadores que possa suportar uma capacidade de memória mais elevada. No entanto, alterar esta configuração inicial pode aumentar o paralelismo latente disponível para o seu pipeline. Se tiver uma transformação que consuma muita memória, isto pode fazer com que o seu pipeline use mais memória do que antes devido ao aumento do paralelismo disponível. Nestes casos, pode ser necessário otimizar a transformação para reduzir a sua utilização de memória.
O limite de memória do trabalhador não estabiliza e sobe e desce ao longo do tempo, apesar da utilização constante de memória
Estas instruções aplicam-se apenas a tarefas de streaming. Para pipelines Java, ative o Streaming Engine e o Runner v2. Se o problema persistir ou se observar este comportamento em pipelines Python, contacte o apoio ao cliente.
Mensagens de registo comuns
Esta secção descreve as mensagens de registo comuns geradas quando ativa o ajuste de escala automático vertical.
A escala automática vertical está ativada. Este pipeline está a receber recomendações para recursos atribuídos por trabalhador.
Esta mensagem indica que o ajuste de escala automático vertical está ativo. A ausência desta mensagem indica que o redimensionamento automático vertical não está a funcionar no grupo de trabalhadores.
Se a escala automática vertical não estiver ativa, consulte o artigo A escala automática vertical não parece funcionar. O que devo verificar? para instruções de resolução de problemas.
Atualização da escala automática vertical acionada para alterar o limite de memória por trabalhador para o conjunto de X GiB para Y GiB.
Esta mensagem indica que a escala automática vertical acionou uma alteração do tamanho da memória do conjunto de trabalhadores.