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:
- Os drivers de GPU são instalados em VMs de worker e acessíveis ao contêiner do Docker. Para mais informações, leia Como instalar drivers de GPU.
- As bibliotecas de GPU exigidas pelo pipeline, como as bibliotecas CUDA-X da NVIDIA ou o Kit de ferramentas do CUDA da NVIDIA, são instaladas na imagem de contêiner personalizada.
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 |
|
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 |
|
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 |
|
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 |
|
2 GPUs | 32 GB HBM2 | 1 a 32 vCPUs | 1 a 208 GB | ||
4 GPUs | 64 GB HBM2 | 1 a 64 vCPUs 1 a 96 vCPUs |
1 a 208 GB 1 a 624 GB |
||
NVIDIA® Tesla® K80 | 1 GPU | 12 GB GDDR5 | 1 a 8 vCPUs | 1 a 52 GB |
|
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 1 a 208 GB |
- 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
- Vejas mais tarefas de como usar GPUs.
- Trabalhe em como processar imagens de satélite do Landsat com GPUs.