O Dataproc permite que as unidades de processamento gráfico (GPUs, na sigla em inglês) sejam anexadas aos nós mestre e de trabalho do Google Compute Engine em um cluster do Dataproc. Use essas GPUs para acelerar cargas de trabalho específicas nas instâncias, como machine learning e processamento de dados.
Para mais informações sobre o que pode ser feito com as GPUs e que tipos de hardware de GPU estão disponíveis, leia GPUs no Google Compute Engine.
Antes de começar
- As GPUs exigem drivers e softwares especiais. Esses itens vêm pré-instalados nas imagens
-mldo Dataproc (é recomendável usar as imagens-ml) e podem ser instalados manualmente quando e se necessário. - Leia sobre preços de GPU no Google Compute Engine para entender o custo de usar GPUs nas instâncias.
- Leia sobre restrições de instâncias com GPUs para saber como essas instâncias funcionam de maneira diferente da maioria das instâncias não GPU.
- Verifique a página de cotas do projeto para garantir que você tenha uma cota de GPU suficiente (
NVIDIA_T4_GPUS,NVIDIA_P100_GPUSouNVIDIA_V100_GPUS) disponível no projeto. Se as GPUs não estiverem listadas nessa página ou se você precisar de cotas complementares, solicite um aumento de cota.
Tipos de GPUs
Os nodes do Dataproc são compatíveis com os tipos de GPU a seguir. Especifique o tipo de GPU ao anexar GPUs ao cluster do Dataproc.
nvidia-tesla-l4- NVIDIA® Tesla® L4nvidia-tesla-a100- NVIDIA® Tesla® A100nvidia-tesla-p100- NVIDIA® Tesla® P100nvidia-tesla-v100- NVIDIA® Tesla® V100nvidia-tesla-p4- NVIDIA® Tesla® P4nvidia-tesla-t4- NVIDIA® Tesla® T4nvidia-rtx-pro-6000- NVIDIA® RTX® PRO 6000nvidia-tesla-p100-vws- NVIDIA® Tesla® P100 Virtual Workstationsnvidia-tesla-p4-vws- NVIDIA® Tesla® P4 Virtual Workstationsnvidia-tesla-t4-vws- NVIDIA® Tesla® T4 Virtual Workstations
Anexar GPUs a um cluster
Para anexar GPUs a um cluster do Dataproc, ao criar o cluster, especifique uma imagem -ml (recomendado) ou use uma ação de inicialização para instalar drivers de GPU.
Os exemplos a seguir especificam a imagem
2.3-ml-ubuntu ao criar um cluster.
Google Cloud CLI
Para anexar GPUs aos nós de trabalho principais e secundários em um cluster do Dataproc, crie o cluster usando as flags gcloud dataproc clusters create
‑‑master-accelerator,
‑‑worker-accelerator e
‑‑secondary-worker-accelerator. Essas flags usam os seguintes valores:
- O tipo de GPU a ser anexada a um nó
- O número de GPUs a serem anexadas ao nó
O tipo de GPU é obrigatório, e o número de GPUs é opcional. O padrão é uma GPU.
Exemplo:
gcloud dataproc clusters create cluster-name \ --image-version=2.3-ml-ubuntu \ --region=region \ --master-accelerator type=nvidia-tesla-t4 \ --worker-accelerator type=nvidia-tesla-t4,count=4 \ --secondary-worker-accelerator type=nvidia-tesla-t4,count=4 \ ... other flags
API REST
Para anexar GPUs aos nós de trabalho principais e secundários em um cluster do Dataproc, preencha os campos acceleratorTypeUri e acceleratorCount em InstanceGroupConfig.AcceleratorConfig como parte da solicitação de API cluster.create. Esses campos usam os seguintes valores:
- O tipo de GPU a ser anexada a um nó
- O número de GPUs a serem anexadas ao nó
Console
Para anexar GPUs aos nós de trabalho mestre, principal e secundário em um cluster do Dataproc, siga estas etapas:
- Abra a página Criar um cluster do Dataproc no Compute Engine.
- Selecione o painel Configurar nós.
- Nas seções Nó do gerenciador, Nós de worker e Nós de worker secundários, em Plataforma de CPU e GPU > GPUs, especifique o número e o tipo de GPU para os nós.
Instalar os drivers da GPU
Os drivers de GPU são necessários para usar as GPUs anexadas aos nós do Dataproc.
Como alternativa ao uso dos drivers de GPU instalados nas imagens -ml do Dataproc, use as seguintes ações de inicialização para instalar drivers de GPU ao criar um cluster:
Verificar a instalação do driver da GPU
Para verificar a instalação do driver de GPU em um cluster, conecte-se usando SSH ao nó principal do cluster e execute o seguinte comando:
nvidia-smi
Se o driver estiver funcionando corretamente, a saída exibirá a versão do driver e as estatísticas da GPU. Consulte Verificar a instalação do driver da GPU.
Configuração do Spark
Ao enviar um job ao Spark, use a propriedade ambiente de execução da configuração spark.executorEnv do Spark com a variável de ambiente LD_PRELOAD para pré-carregar as bibliotecas necessárias.
Exemplo:
gcloud dataproc jobs submit spark --cluster=CLUSTER_NAME \ --region=REGION \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --properties=spark.executorEnv.LD_PRELOAD=libnvblas.so,spark.task.resource.gpu.amount=1,spark.executor.resource.gpu.amount=1,spark.executor.resource.gpu.discoveryScript=/usr/lib/spark/scripts/gpu/getGpusResources.sh
Exemplo de job da GPU
É possível testar GPUs no Dataproc executando qualquer um dos seguintes jobs, que se beneficiam quando executados com GPUs:
- Execute um dos exemplos de Spark ML.
- Execute o seguinte exemplo com
spark-shellpara executar uma computação de matriz:
import org.apache.spark.mllib.linalg._
import org.apache.spark.mllib.linalg.distributed._
import java.util.Random
def makeRandomSquareBlockMatrix(rowsPerBlock: Int, nBlocks: Int): BlockMatrix = {
val range = sc.parallelize(1 to nBlocks)
val indices = range.cartesian(range)
return new BlockMatrix(
indices.map(
ij => (ij, Matrices.rand(rowsPerBlock, rowsPerBlock, new Random()))),
rowsPerBlock, rowsPerBlock, 0, 0)
}
val N = 1024 * 4
val n = 2
val mat1 = makeRandomSquareBlockMatrix(N, n)
val mat2 = makeRandomSquareBlockMatrix(N, n)
val mat3 = mat1.multiply(mat2)
mat3.blocks.persist.count
println("Processing complete!")
A seguir
- Saiba como criar uma instância do Compute Engine com GPUs anexadas.
- Saiba mais sobre tipos de máquinas com GPU.