O recurso de ajuste direito usa dicas de recursos do Apache Beam para personalizar recursos de worker para um pipeline. A capacidade de direcionar recursos para etapas específicas do pipeline proporciona mais flexibilidade e capacidade do pipeline, além de possível economia de custos. É possível aplicar recursos mais caros às etapas do pipeline que os exigem e recursos menos caros a outras etapas do pipeline. Use o ajuste direito para especificar os requisitos de recursos para um pipeline inteiro ou para etapas específicas de pipeline.
Suporte e limitações
- As dicas de recursos são compatíveis com os SDKs do Apache Beam para Java e Python, versões 2.31.0 e posteriores.
- O ajuste direito só é compatível com pipelines em lote. Os pipelines de streaming não são compatíveis.
- O ajuste direito é compatível com o Dataflow Prime.
- O ajuste direito não é compatível com o FlexRS.
- Quando você usar o ajuste direito, não use a
opção de serviço
worker_accelerator
.
Ativar ajuste direito
Para ativar o ajuste direito, use uma ou mais dicas de recursos disponíveis no pipeline. Quando você usa uma dica de recurso no pipeline, o ajuste correto é ativado automaticamente. Para mais informações, consulte a seção Usar dicas de recursos deste documento.
Dicas de recursos disponíveis
As seguintes dicas de recurso estão disponíveis:
Dica de recurso | Descrição |
---|---|
min_ram |
A quantidade mínima de RAM em gigabytes para alocar aos workers. O Dataflow usa esse valor como um limite inferior ao alocar memória para novos workers (escalonamento horizontal) ou para workers existentes (escalonamento vertical). Por exemplo: min_ram=NUMBERGB
|
accelerator |
Uma alocação de GPUs fornecida pelo usuário que permite controlar o uso e o custo de GPUs no pipeline e nas etapas dele. Especifique o tipo e o número de GPUs a serem anexadas aos workers do Dataflow como parâmetros à sinalização. Por exemplo: accelerator="type:GPU_TYPE;count:GPU_COUNT;machine_type:MACHINE_TYPE;CONFIGURATION_OPTIONS"
Para mais informações sobre o uso de GPUs, consulte GPUs com Dataflow. |
Aninhamento de dica de recurso
As dicas de recurso são aplicadas à hierarquia de transformação do pipeline da seguinte maneira:
min_ram
: o valor em uma transformação é avaliado como o maior valor de dicamin_ram
entre os valores definidos na própria transformação e todos os pais na hierarquia da transformação.- Exemplo: se uma dica de transformação interna definir
min_ram
como 16 GB, e a dica de transformação externa nos conjuntos de hierarquiamin_ram
como 32 GB, uma dica de 32 GB será usada em todas as etapas da transformação. - Exemplo: se uma dica de transformação interna definir
min_ram
como 16 GB, e a dica de transformação externa nos conjuntos de hierarquiamin_ram
como 8 GB, uma dica de 8 GB é usada para todas as etapas na transformação externa que não estão na transformação interna, e uma dica de 16 GB será usada em todas as etapas da transformação interna.
- Exemplo: se uma dica de transformação interna definir
accelerator
: o valor mais interno na hierarquia da transformação tem precedência.- Exemplo: se uma dica
accelerator
de transformação interna for diferente de uma dicaaccelerator
de transformação externa em uma hierarquia, a dicaaccelerator
de transformação interna será usada para a transformação interna.
- Exemplo: se uma dica
As dicas definidas para todo o pipeline são tratadas como se fossem definidas em uma transformação externa separada.
Use dicas de recursos
É possível definir dicas de recursos em todo o pipeline ou nas etapas de pipeline.
Dicas de recursos do pipeline
É possível definir dicas de recursos em todo o pipeline quando você o executar na linha de comando.
Para configurar o ambiente do Python, consulte o guia de início rápido do Python.
Exemplo:
python my_pipeline.py \
--runner=DataflowRunner \
--resource_hints=min_ram=numberGB \
--resource_hints=accelerator="type:type;count:number;install-nvidia-driver" \
...
Dicas de recursos da etapa do pipeline
É possível definir dicas de recursos em etapas (transformações) do pipeline de forma programática.
Java
Para instalar o SDK do Apache Beam para Java, consulte Instalar o SDK do Apache Beam.
É possível definir dicas de recursos de maneira programática em transformações de pipeline usando a
classe ResourceHints
.
Veja no exemplo a seguir como definir dicas de recursos de maneira programática nas transformações de pipeline.
pcoll.apply(MyCompositeTransform.of(...)
.setResourceHints(
ResourceHints.create()
.withMinRam("15GB")
.withAccelerator(
"type:nvidia-tesla-l4;count:1;install-nvidia-driver")))
pcoll.apply(ParDo.of(new BigMemFn())
.setResourceHints(
ResourceHints.create().withMinRam("30GB")))
Para definir dicas de recursos de maneira programática em todo o pipeline, use a
interface ResourceHintsOptions
.
Python
Para instalar o SDK do Apache Beam para Python, consulte Instalar o SDK do Apache Beam.
É possível definir dicas de recursos de maneira programática em transformações de pipeline usando a
classe PTransforms.with_resource_hints
.
Para saber mais, consulte a
classe ResourceHint
.
Veja no exemplo a seguir como definir dicas de recursos de maneira programática nas transformações de pipeline.
pcoll | MyPTransform().with_resource_hints(
min_ram="4GB",
accelerator="type:nvidia-tesla-l4;count:1;install-nvidia-driver")
pcoll | beam.ParDo(BigMemFn()).with_resource_hints(
min_ram="30GB")
Para definir dicas de recursos em todo o pipeline, use a opção de pipeline --resource_hints
ao executar o pipeline. Para ver um exemplo, consulte
Dicas de recurso de pipeline.
Go
As dicas de recursos não são compatíveis com o Go.
Ajuste direito e fusão
Em alguns casos, transformações definidas com diferentes dicas de recursos podem ser executadas em workers no mesmo pool de workers, como parte do processo de otimização de fusão. Quando as transformações são unidas, o Dataflow as executa em um ambiente que atende à união de dicas de recursos definidas nas transformações.
Quando as dicas de recursos não podem ser mescladas, a fusão não ocorre. Por exemplo, as dicas de recursos para GPUs diferentes não podem ser mescladas. Portanto, essas transformações não são fundidas.
Para evitar a fusão, adicione uma operação ao pipeline que force
o Dataflow a materializar um PCollection
intermediário. Para saber
mais, confira
Evitar a fusão.
Resolver problemas de ajuste direito
Esta seção fornece instruções para solucionar problemas comuns relacionados ao ajuste direito.
Configuração inválida
Quando você tenta usar o ajuste direito, ocorre o seguinte erro:
Workflow failed. Causes: One or more operations had an error: 'operation-OPERATION_ID':
[UNSUPPORTED_OPERATION] 'NUMBER vCpus with NUMBER MiB memory is
an invalid configuration for NUMBER count of 'GPU_TYPE' in family 'MACHINE_TYPE'.'.
Esse erro ocorre quando o tipo de GPU selecionado não é compatível com o tipo de máquina selecionado. Para resolver esse erro, selecione um tipo de GPU e de máquina compatíveis. Para detalhes de compatibilidade, consulte Plataformas de GPU.