Compatibilidade do Dataflow 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:

Para fornecer uma imagem de contêiner personalizada, você precisa usar o Dataflow Runner v2 e fornecer a imagem do contêiner usando a opção worker_harness_container_image do pipeline.

A versão do driver da GPU depende da versão do Container-Optimized OS usada atualmente pelo Dataflow.

Preços

Jobs que usam GPUs geram cobranças conforme especificado na página de preços do Dataflow. Os recursos da GPU no Dataflow não recebem desconto durante a oferta de pré-lançamento.

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 da GPU. Por exemplo, se você estiver usando o TensorFlow, configure cada processo do TensorFlow para usar apenas uma parte da memória da GPU. Todos os processos juntos não devem assinar da memória da GPU em excesso. Para mais informações, consulte Como limitar o crescimento da memória da GPU.

Como alternativa, é possível usar workers com uma vCPU para limitar o número de processos simultâneos que acessam a GPU. Observe que é possível aumentar a quantidade de memória de máquinas com uma vCPU usando um tipo de máquina personalizada.

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