Compatibilidade do Dataflow com GPUs

Nesta página, apresentamos informações básicas sobre como as GPUs funcionam com o Dataflow. Para informações e exemplos sobre como ativar GPUs nos jobs do Dataflow, leia Como usar GPUs e Como processar imagens de satélite do Landsat com GPUs.

O uso de GPUs nos jobs do Dataflow permite acelerar algumas tarefas de processamento de dados. As GPUs executam determinados cálculos mais rápido que as CPUs. Esses cálculos geralmente são álgebras numéricas ou lineares, como as dos casos de uso de processamento de imagem e aprendizado de máquina. 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

As GPUs são compatíveis com os tipos de máquinas N1, incluindo tipos de máquina N1 personalizadas.

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.

Por causa dessa arquitetura de processos múltiplos e do fato de que as GPUs nos workers do Dataflow são visíveis para todos os processos e threads, talvez seja necessário um gerenciamento cuidadoso de acesso de GPU, a fim de evitar o excesso de assinaturas de memória da GPU. Se você estiver usando o TensorFlow, qualquer uma das sugestões a seguir pode ajudar a evitar o excesso de assinaturas 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 configurar isso, ao iniciar o job, use a opção --experiments=no_use_multiple_sdk_containers do pipeline.
  • 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 para que todos os processos juntos não assinem a memória da GPU em excesso. Como essa configuração não é adiantada, recomendamos limitar o número de processos do TensorFlow, conforme sugerido acima.

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