O Dataproc permite que as unidades de processamento gráfico (GPUs) sejam anexadas aos nós principais e de trabalho do Compute Engine num cluster do Dataproc. Pode usar estas GPUs para acelerar cargas de trabalho específicas nas suas instâncias, como a aprendizagem automática e o processamento de dados.
Para mais informações sobre o que pode fazer com as GPUs e que tipos de hardware de GPU estão disponíveis, leia o artigo GPUs no Compute Engine.
Antes de começar
- As GPUs requerem controladores e software especiais. Estes itens não estão pré-instalados em clusters do Dataproc.
- Leia acerca dos preços das GPUs no Compute Engine para compreender o custo de utilização de GPUs nas suas instâncias.
- Leia acerca das restrições para instâncias com GPUs para saber como estas instâncias funcionam de forma diferente das instâncias sem GPUs.
- Consulte a página de quotas do seu projeto para garantir que tem quota de GPU suficiente (
NVIDIA_T4_GPUS,NVIDIA_P100_GPUSouNVIDIA_V100_GPUS) disponível no seu projeto. Se as GPUs não estiverem listadas na página de quotas ou precisar de uma quota de GPUs adicional, peça um aumento da quota.
Tipos de GPUs
Os nós do Dataproc suportam os seguintes tipos de GPUs. Tem de especificar o tipo de GPU quando 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- Estações de trabalho virtuais NVIDIA® Tesla® P100nvidia-tesla-p4-vws– Estações de trabalho virtuais NVIDIA® Tesla® P4nvidia-tesla-t4-vws- Estações de trabalho virtuais NVIDIA® Tesla® T4
Anexe GPUs a clusters
gcloud
Anexe GPUs aos nós principais e de trabalho primários e secundários num cluster do Dataproc quando
criar o cluster através das flags
‑‑master-accelerator,
‑‑worker-accelerator e
‑‑secondary-worker-accelerator. Estas flags assumem os dois seguintes valores:
- O tipo de GPU a associar a um nó e
- O número de GPUs a associar ao nó.
O tipo de GPU é obrigatório e o número de GPUs é opcional (o valor predefinido é 1 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 seu cluster, tem de instalar controladores de GPU.
API REST
Anexe GPUs aos nós principais e de trabalho primários e secundários num cluster do Dataproc
preenchendo os campos
InstanceGroupConfig.AcceleratorConfig
acceleratorTypeUri e acceleratorCount como parte do pedido da API
cluster.create.
Consola
Clique em CPU PLATFORM AND GPU→GPUs→ADD GPU nas secções de nós principais e de trabalho do painel Configure nodes na página Create a cluster na consola para especificar o número de GPUs e o tipo de GPU para os nós. Google Cloud
Instale controladores da GPU
Os controladores de GPU são necessários para usar quaisquer GPUs associadas a nós do Dataproc. Para instalar controladores de GPU, consulte as seguintes instruções:
Valide a instalação do controlador da GPU
Depois de terminar a instalação do controlador da GPU nos nós do Dataproc, pode verificar se o controlador está a funcionar corretamente. Entre no nó principal do cluster do Dataproc através de SSH e execute o seguinte comando:
nvidia-smi
Se o controlador estiver a funcionar corretamente, o resultado apresenta a versão do controlador e as estatísticas da GPU (consulte a secção Verificar a instalação do controlador da GPU).
Configuração do Spark
Quando envia uma tarefa para o Spark, pode usar a propriedade do spark.executorEnvambiente de execução da configuração 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 tarefa da GPU
Pode testar GPUs no Dataproc executando qualquer um dos seguintes trabalhos, que beneficiam da execução com GPUs:
- Execute um dos exemplos de ML do Spark.
- Execute o seguinte exemplo com
spark-shellpara executar um cálculo 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!")
O que se segue
- Saiba como criar uma instância do Compute Engine com GPUs anexadas.
- Saiba mais sobre os tipos de máquinas com GPU.