Como configurar o ajuste principal do Dataflow para a direita

Visão geral

O Dataflow Prime é uma plataforma sem servidor que usa escalonamento horizontal e vertical para alocar workers e recursos de worker. Não é preciso especificar o número ou o tamanho e o formato dos workers usados no pipeline. Para personalizar os recursos do worker, é possível usar as dicas de recursos do Apache Beam para especificar os requisitos de recursos de um pipeline inteiro ou de etapas específicas. O recurso Right Fitfit do Dataflow Prime usa dicas de recursos para personalizar recursos de worker para o pipeline.

Limitações e requisitos

No estágio Visualização do Dataflow Prime, as dicas de recursos podem ser usadas com o Apache Beam 2.30.0 ou posterior.

Dicas de recursos disponíveis

As seguintes dicas de recursos estão disponíveis durante a visualização do Dataflow Prime:

  1. min_ram="numberGB": a quantidade mínima de ram em Gigabytes para alocar aos workers. O Dataflow Prime usa esse valor como um limite inferior ao alocar memória para novos trabalhadores (escalonamento horizontal) ou para trabalhadores existentes (escalonamento vertical).

    • Defina-o com o valor máximo de memória do worker que o pipeline ou a etapa do pipeline exigirá.
    • min_ram é uma especificação agregada, por worker, não por vCPU. Por exemplo, se você definir min_ram=15GB, o Dataflow definirá a memória agregada disponível em todas as vCPUs no worker como pelo menos 15 GB.
  2. accelerator="type:type;count:number;configuration-options": o tipo de GPU, o número de GPUs e as opções de configuração de GPU que serão usadas (para usar a NVIDIA) Com o Dataflow, é necessário definir a opção de configuração "install-nvidia-driver".

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 dica min_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 na hierarquia definir min_ram como 32 GB, uma dica de 32 GB será usada para todas as etapas. em toda a transformação.
    • Exemplo: se uma dica de transformação interna definir min_ram como 16 GB e a dica de transformação externa na hierarquia definir min_ram como 8 GB, uma dica de 8 GB será 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 para todas as etapas na transformação interna.
  • 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 dica accelerator de transformação externa em uma hierarquia, a dica accelerator de transformação interna será usada para a transformação interna.
}

Como usar 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.

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

É possível definir dicas de recursos programaticamente em transformações de pipeline usando ResourceHints.

Exemplo:

pcoll.apply(MyCompositeTransform.of(...)
    .setResourceHints(
        ResourceHints.create()
            .withMinRam("15GB")
            .withAccelerator(
     "type:nvidia-tesla-k80;count:1;install-nvidia-driver")))

pcoll.apply(ParDo.of(new BigMemFn())
    .setResourceHints(
        ResourceHints.create().withMinRam("30GB")))

Python

É possível definir dicas de recursos de maneira programática em transformações de pipeline usando PTransforms.with_resource_hints (consulte também ResourceHint).

Exemplo:

pcoll | MyPTransform().with_resource_hints(
    min_ram="4GB",
    accelerator="type:nvidia-tesla-k80;count:1;install-nvidia-driver")

pcoll | beam.ParDo(BigMemFn()).with_resource_hints(
    min_ram="30GB")