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

A tabela a seguir captura os tipos de GPU e a configuração da VM de worker disponíveis para os usuários.

Modelo de GPU GPUs Memória da GPU vCPUs disponíveis Memória disponível Zonas disponíveis
NVIDIA® Tesla® T4 1 GPU 16 GB GDDR6 1 a 24 vCPUs 1 a 156 GB
  • asia-east1-a
  • asia-east1-c
  • asia-northeast1-a
  • asia-northeast1-c
  • asia-northeast3-b
  • asia-northeast3-c
  • asia-south1-a
  • asia-south1-b
  • asia-southeast1-b
  • asia-southeast1-c
  • australia-southeast1-a
  • europe-west2-a
  • europe-west2-b
  • europe-west3-b
  • europe-west4-b
  • europe-west4-c
  • southamerica-east1-c
  • us-central1-a
  • us-central1-b
  • us-central1-f
  • us-east1-c
  • us-east1-d
  • us-east4-b
  • us-west1-a
  • us-west1-b
2 GPUs 32 GB GDDR6 1 a 48 vCPUs 1 a 312 GB
4 GPUs 64 GB GDDR6 1 a 96 vCPUs 1 a 624 GB
NVIDIA® Tesla® P4 1 GPU 8 GB GDDR5 1 a 24 vCPUs 1 a 156 GB
  • asia-southeast1-b
  • asia-southeast1-c
  • australia-southeast1-a
  • australia-southeast1-b
  • europe-west4-b
  • europe-west4-c
  • northamerica-northeast1-a
  • northamerica-northeast1-b
  • northamerica-northeast1-c
  • us-central1-a
  • us-central1-c
  • us-east4-a
  • us-east4-b
  • us-east4-c
  • us-west2-b
  • us-west2-c
2 GPUs 16 GB GDDR5 1 a 48 vCPUs 1 a 312 GB
4 GPUs 32 GB GDDR5 1 a 96 vCPUs 1 a 624 GB
NVIDIA® Tesla® V100 1 GPU 16 GB HBM2 1 a 12 vCPUs 1 a 78 GB
  • asia-east1-c
  • europe-west4-a
  • europe-west4-b
  • europe-west4-c
  • us-east1-c
  • us-central1-a
  • us-central1-b
  • us-central1-c
  • us-central1-f
  • us-west1-a
  • us-west1-b
2 GPUs 32 GB HBM2 1 a 24 vCPUs 1 a 156 GB
4 GPUs 64 GB HBM2 1 a 48 vCPUs 1 a 312 GB
8 GPUs 128 GB HBM2 1 a 96 vCPUs 1 a 624 GB
NVIDIA® Tesla® P100 1 GPU 16 GB HBM2 1 a 16 vCPUs 1 a 104 GB
  • asia-east1-a
  • asia-east1-c
  • australia-southeast1-c
  • us-central1-c
  • us-central1-f
  • us-east1-b
  • us-east1-c
  • us-west1-a
  • us-west1-b
  • europe-west1-b
  • europe-west1-d
  • europe-west4-a
2 GPUs 32 GB HBM2 1 a 32 vCPUs 1 a 208 GB
4 GPUs 64 GB HBM2

1 a 64 vCPUs
(us-east1-c, europe-west1-d, europe-west1-b)

1 a 96 vCPUs
(todas as outras zonas)

1 a 208 GB
(us-east1-c, europe-west1-d, europe-west1-b)

1 a 624 GB
(todas as outras zonas)

NVIDIA® Tesla® K80 1 GPU 12 GB GDDR5 1 a 8 vCPUs 1 a 52 GB
  • asia-east1-a
  • asia-east1-b
  • europe-west1-b
  • europe-west1-d
  • us-central1-a
  • us-central1-c
  • us-east1-c
  • us-east1-d
  • us-west1-b
2 GPUs 24 GB GDDR5 1 a 16 vCPUs 1 a 104 GB
4 GPUs 48 GB GDDR5 1 a 32 vCPUs 1 a 208 GB
8 GPUs 96 GB GDDR5 1 a 64 vCPUs

1 a 416 GB
(asia-east1-a e us-east1-d)

1 a 208 GB
(todas as outras zonas)

Observação:
  • Para uma descrição mais detalhada das zonas, consulte Regiões e zonas.
  • As placas NVIDIA® K80® contêm duas GPUs cada. O preço das GPUs K80 é por GPU individual, e não por placa.

A seguir