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 são pré-instalados em imagens do Dataproc (recomenda-se a utilização das imagens do Dataproc) e podem ser instalados manualmente quando e se necessário.
-ml-ml - 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 GPU.
- 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-rtx-pro-6000- NVIDIA® RTX® PRO 6000nvidia-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
Associe GPUs a um cluster
Para anexar GPUs a um cluster do Dataproc, quando cria o cluster, tem de especificar uma -ml imagem (recomendado) ou usar uma ação de inicialização para instalar controladores de GPU.
Os exemplos seguintes especificam a imagem 2.3-ml-ubuntu quando cria um cluster.
CLI do Google Cloud
Para anexar GPUs aos nós principais e de trabalho primários e secundários num cluster do Dataproc, crie o cluster com as flags gcloud dataproc clusters create
‑‑master-accelerator,
‑‑worker-accelerator e
‑‑secondary-worker-accelerator. Estas flags assumem os seguintes valores:
- O tipo de GPU a associar a um nó
- 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 \ --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 principais e de trabalho primários e secundários num cluster do Dataproc, preencha os campos
InstanceGroupConfig.AcceleratorConfig
acceleratorTypeUri e acceleratorCount como parte do pedido da API
cluster.create. Estes campos aceitam os seguintes valores:
- O tipo de GPU a associar a um nó
- O número de GPUs a associar ao nó
Consola
Para anexar GPUs aos nós principais e de trabalho primários e secundários num cluster do Dataproc, siga estes passos:
- Abra a página Dataproc Crie um cluster do Dataproc no Compute Engine.
- Selecione o painel Configurar nós.
- Nas secções Nó do gestor, Nós de trabalho e Nós de trabalho secundários, em Plataforma de CPU e GPU > GPUs, especifique o número de GPUs e o tipo de GPU para os nós.
Instale controladores da GPU
São necessários controladores de GPU para usar GPUs associadas a nós do Dataproc.
Em alternativa à utilização dos controladores da GPU instalados nas imagens do Dataproc
-ml, pode utilizar as seguintes ações de inicialização para instalar os controladores da GPU quando cria um cluster:
Valide a instalação do controlador da GPU
Pode verificar a instalação do controlador da GPU num cluster estabelecendo ligação através de SSH ao nó principal do cluster e, em seguida, executando 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 acerca dos tipos de máquinas com GPU.