Habilitado para GPU compute
Alguns tipos de instância habilitados para GPU estão na versão Beta e são marcados como tal na lista suspensa quando o senhor seleciona os tipos de driver e worker durante a criação do compute.
Visão geral
Databricks suporta compute acelerado com unidades de processamento gráfico (GPUs). Este artigo descreve como criar o site compute com instâncias habilitadas para GPU e descreve os drivers de GPU e a biblioteca instalada nessas instâncias.
Para saber mais sobre aprendizagem profunda em compute habilitado para GPU, consulte aprendizagem profunda.
Criar uma GPU compute
Criar uma GPU compute é semelhante a criar qualquer compute. Você deve ter em mente o seguinte:
- A versãoDatabricks Runtime deve ser uma versão habilitada para GPU, como Runtime 13.3 LTS ML (GPU, Scala 2.12.15, Spark 3.4.1) .
- O tipo de trabalhador e o tipo de driver devem ser tipos de instância de GPU.
Tipos de instância compatíveis
O Databricks é compatível com os seguintes tipos de instância:
- A2 Ultra
- A2 Standard
- G2
- Tipo de GPU: GPU NVIDIA A100 80GB
Nome da instância | Número de GPUs | Memória GPU | vCPUs | Memória da CPU |
---|---|---|---|---|
a2-ultraflu-1g | 1 | 80 GB | 12 | 170 GB |
a2-ultra gpu-2g | 2 | 80 GB x 2 | 24 | 340GB |
a2-ultra gpu - 4g | 4 | 80 GB x 4 | 48 | 680 GB |
uma GPU de 2 ultragpu-8 g | 8 | 80 GB x 8 | 96 | 1360 GB |
- Tipo de GPU: GPU NVIDIA A100 de 40 GB
Nome da instância | Número de GPUs | Memória GPU | vCPUs | Memória da CPU |
---|---|---|---|---|
uma GPU de 2 alturas - 1g | 1 | 40GB | 12 | 85 GB |
uma GPU de 2 g de altura | 2 | 40 GB x 2 | 24 | 170 GB |
a2-high gpu -4g | 4 | 40 GB x 4 | 48 | 340GB |
uma GPU de 2 alturas - 8g | 8 | 40 GB x 8 | 96 | 680 GB |
uma GPU de 2 megapixels - 16g | 16 | 40 GB x 16 | 96 | 1360 GB |
- Tipo de GPU: GPU NVIDIA L4
Nome da instância | Número de GPUs | Memória GPU | vCPUs | Memória da CPU |
---|---|---|---|---|
padrão g2 4 | 1 | 24 GB | 4 | 16GB |
padrão g2 - 8 | 1 | 24 GB | 8 | 32 GB |
padrão g2 12 | 1 | 24 GB | 12 | 48 GB |
padrão g2 16 | 1 | 24 GB | 16 | 64GB |
padrão g2 24 | 2 | 24 GB x 2 | 24 | 96 GB |
padrão g2 32 | 1 | 24 GB | 32 | 128 GB |
padrão g2 48 | 4 | 24 GB x 4 | 44 | 192 GB |
padrão g2 96 | 8 | 24 GB x 8 | 96 | 384 GB |
Consulte GCP accelerator-optimized machines para obter mais informações sobre esses tipos de instância e GCP regions para verificar onde essas instâncias estão disponíveis. Sua implantação do Databricks deve residir em uma região com suporte para iniciar o compute habilitado para GPU.
Programador de GPU
A programação da GPU distribui a tarefa Spark de forma eficiente em um grande número de GPUs.
Databricks Runtime 9.1 LTS ML e acima suportam programação com reconhecimento de GPU a partir de Apache Spark 3.0. Databricks o pré-configura na GPU compute para o senhor.
A programação da GPU não está habilitada em um único nó compute.
Programação de GPU para AI e ML
spark.task.resource.gpu.amount
é a única configuração do Spark relacionada ao programa com reconhecimento de GPU que o senhor talvez precise configurar.
A configuração default usa uma GPU por tarefa, o que é uma boa linha de base para cargas de trabalho de inferência distribuída e treinamento distribuído se o senhor usar todos os nós de GPU.
Para reduzir a sobrecarga de comunicação durante o treinamento distribuído, oDatabricks site recomenda definir spark.task.resource.gpu.amount
como o número de GPUs por worker nó na compute Sparkconfiguração. Isso cria apenas uma tarefa Spark para cada Spark worker e atribui todas as GPUs nesse nó worker à mesma tarefa.
Para aumentar a paralelização da inferência de aprendizagem profunda distribuída, o senhor pode definir spark.task.resource.gpu.amount
como valores fracionários, como 1/2, 1/3, 1/4, ... 1/N. Isso cria mais Spark tarefa do que o número de GPUs, permitindo que mais tarefa concorrente lide com solicitações de inferência em paralelo. Por exemplo, se o senhor definir spark.task.resource.gpu.amount
como 0.5
, 0.33
, ou 0.25
, as GPUs disponíveis serão divididas entre o dobro, o triplo ou o quádruplo do número de tarefas.
Índices de GPU
Para PySpark tarefa, Databricks remapeia automaticamente a(s) GPU(s) atribuída(s) para índices baseados em zero. Para a configuração default que usa uma GPU por tarefa, o senhor pode usar a GPU default sem verificar qual GPU está atribuída à tarefa.
Se o senhor definir várias GPUs por tarefa, por exemplo, 4, os índices das GPUs atribuídas serão sempre 0, 1, 2 e 3. Se o senhor precisar dos índices físicos das GPUs atribuídas, poderá obtê-los na variável de ambiente CUDA_VISIBLE_DEVICES
.
Se o senhor usar Scala, poderá obter os índices das GPUs atribuídas à tarefa em TaskContext.resources().get("gpu")
.
Driver de GPU NVIDIA, CUDA e cuDNN
Databricks instala o driver NVIDIA e a biblioteca necessários para usar GPUs nas instâncias do driver Spark e worker:
- CUDA Toolkit, instalado em
/usr/local/cuda
. - cuDNN: NVIDIA CUDA Deep rede neural biblioteca.
- NCCL: biblioteca de comunicações coletivas da NVIDIA.
A versão do driver NVIDIA incluída é a 525.105.17, que suporta CUDA 11.0.
Para conhecer as versões da biblioteca incluídas, consulte as notas sobre a versão da versão específica do site Databricks Runtime que o senhor está usando.
Este software contém código-fonte fornecido pela NVIDIA Corporation. Especificamente, para oferecer suporte a GPUs, o Databricks inclui código de amostras CUDA.
Contrato de licença de usuário final (EULA) da NVIDIA
Ao selecionar uma "VersãoDatabricks Runtime " habilitada para GPU em Databricks, o usuário concorda implicitamente com os termos e condições descritos no EULA da NVIDIA com relação às bibliotecas CUDA, cuDNN e Tesla e ao Contrato de Licença de Usuário Final da NVIDIA (com Suplemento NCCL) para a biblioteca NCCL.
Limitações
- Não é possível criar uma nova GPU compute quando o senhor programa um trabalho a partir de um Notebook. O senhor pode executar um trabalho em uma GPU existente compute somente se ele tiver sido criado na nova UI compute.
- Com Databricks on Google Cloud, os executáveis NVIDIA comumente usados, como
nvidia-smi
, não são incluídos na variável de ambientePATH
. Em vez disso, eles estão em/usr/local/nvidia/bin
. Por exemplo, para usar o,nvidia-smi
o senhor deve usar o terminal da Web ou o%sh
comando mágico do Notebook para executar/usr/local/nvidia/bin/nvidia-smi
o. - O monitoramento compute métricas usando Ganglia não é compatível com Databricks on Google Cloud.