Compatibilidade do Dataflow com GPUs

Nesta página, apresentamos informações básicas sobre como as GPUs funcionam com o Dataflow.

Antes de iniciar o job de desenvolvimento com GPUs, analise o fluxo de trabalho e as dicas do desenvolvedor para criar pipelines usando GPUs descritas em Como desenvolver com GPUs.

Para informações e exemplos sobre como ativar GPUs nos jobs do Dataflow, acesse Como usar GPUs e Como processar imagens de satélite do Landsat com GPUs. Para ver mais exemplos, consulte:

O uso de GPUs em jobs do Dataflow permite acelerar algumas tarefas de processamento de dados. As GPUs podem executar determinados cálculos mais rapidamente do que as CPUs. Esses cálculos geralmente são álgebra numérica ou linear, geralmente usados em casos de uso de processamento de imagem e machine learning. A extensão da melhoria de desempenho varia de acordo com o caso de uso, o tipo de computação e a quantidade de dados processados.

Pré-requisitos para usar GPUs no Dataflow

O Dataflow executa o código do usuário nas VMs de worker dentro de um contêiner do Docker. Essas VMs de worker executam o Container-Optimized OS. Para que os jobs do Dataflow usem GPUs, as seguintes instalações precisam acontecer:

Preços

Jobs que usam GPUs geram cobranças conforme especificado na página de preços do Dataflow.

Considerações

Especificações dos tipos de máquina

Para ver detalhes sobre a compatibilidade de tipos de máquina para cada modelo de GPU, consulte Plataformas de GPU. As GPUs compatíveis com os tipos de máquina N1 também são compatíveis com os tipos de máquina N1 personalizados.

O tipo e o número de GPUs definem as restrições de limite superior nas quantidades disponíveis de vCPU e memória que os workers podem ter. Consulte a seção Disponibilidade para encontrar as restrições correspondentes.

Especificar um número maior de CPUs ou de memória pode exigir que você especifique um número maior de GPUs.

Para mais detalhes, leia GPUs no Compute Engine.

GPUs e paralelismo de worker

Para pipelines do Python que usam a arquitetura Runner v2, o Dataflow inicia um processo do SDK do Apache Beam por núcleo de VM. Cada processo do SDK é executado no próprio contêiner do Docker e, por sua vez, gera muitas threads, cada uma processando os dados recebidos.

As GPUs usam várias arquiteturas de processo, e as GPUs nos workers do Dataflow são visíveis para todos os processos e threads. Portanto, para evitar o excesso de memória da GPU, talvez seja necessário gerenciar o acesso à GPU. Se você estiver usando o TensorFlow, qualquer uma das sugestões a seguir poderá ajudar a evitar o excesso de memória da GPU:

  • Configure os workers do Dataflow para iniciar apenas um processo em Python em contêiner, independentemente da contagem de vCPUs do worker. Para fazer essa configuração, ao iniciar o job, use as seguintes opções de pipeline:

    • --experiments=no_use_multiple_sdk_containers
    • --number_of_worker_harness_threads

    Para saber mais sobre quantas linhas de execução usar, consulte Reduzir o número de linhas de execução.

  • Use um tipo de máquina com apenas uma vCPU.

Quando vários processos do TensorFlow usam a mesma GPU, talvez seja necessário configurar cada processo para usar apenas uma parte da memória da GPU. Essa configuração ajuda a evitar que todos os processos juntos excedam a quantidade de memória da GPU. Como essa configuração não é simples, limite o número de processos do TensorFlow.

Disponibilidade

Para mais informações sobre os tipos de GPU disponíveis e a configuração de VM de worker, leia Locais do Dataflow.

A seguir