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 requerem drivers e software especiais. Esses itens não vêm pré-instalados em clusters do Dataproc.
- 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_GPUS
ouNVIDIA_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-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 clusters
gcloud
Anexe GPUs aos nós de workers mestres, principais e secundários em um cluster do Dataproc ao
criar o cluster usando as sinalizações
‑‑master-accelerator
,
‑‑worker-accelerator
e
‑‑secondary-worker-accelerator
. Essas sinalizações utilizam estes dois 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 \ --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
Para usar GPUs no cluster, você precisa instalar drivers de GPU.
API REST
Anexe GPUs aos nós de worker principais e secundários em um cluster do Dataproc
preenchendo no
InstanceGroupConfig.AcceleratorConfig
os campos acceleratorTypeUri
e acceleratorCount
como parte da
solicitação de API
cluster.create.
Console
Clique em PLATAFORMA CPU E GPU→GPUs→ADICIONAR GPU nas seções de nós mestre e de trabalho do Configurar o painel de nós no painel Criar um cluster no console do Google Cloud para especificar o número de GPUs e o tipo de GPU para os nós.
Como instalar drivers de GPU
Os drivers de GPU são necessários para que as GPUs anexadas aos nodes do Dataproc possam ser utilizadas. É possível instalar drivers de GPU seguindo as instruções para esta ação de inicialização.
Verificar a instalação do driver da GPU
Depois de instalar o driver da GPU nos nós do Dataproc, verifique se ele está funcionando corretamente. Use SSH no nó mestre do cluster do Dataproc 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 para o Spark,
use a propriedade propriedade de ambiente de execução
da configuração spark.executorEnv
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-shell
para 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!")