Computação habilitada para GPU
Nota
Alguns tipos de instância compatíveis com GPU estão em Beta e são marcados como tal na lista suspensa quando o utilizador seleciona os tipos de driver e de trabalhador durante a criação da computação.
Descrição geral
O Azure Databricks dá suporte à computação acelerada com unidades de processamento gráfico (GPUs). Este artigo descreve como criar computação com instâncias habilitadas para GPU e descreve os drivers e bibliotecas de GPU instalados nessas instâncias.
Para saber mais sobre o deep learning em computação habilitada para GPU, consulte Deep learning.
Criar uma computação de GPU
Criar uma computação GPU é semelhante a criar qualquer computação. Você deve ter em mente o seguinte:
- A versão de tempo de execução do Databricks 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 Trabalho e o Tipo de Driver devem ser tipos de instância de GPU.
Tipos de instância suportados
Advertência
O Azure Databricks deixará de suportar a inicialização de computação usando a série de tipos de instância NC v3, como o Azure está a descontinuar Nc24rs até 31 de março de 2025 e NC6s_v3, NC12s_v3 e NC24s_v3 até 30 de setembro de 2025.
O Azure Databricks dá suporte aos seguintes tipos de instância:
NCads_H100_v5
- Tipo de GPU: NVIDIA H100 NVL GPU
Nome da instância | Número de GPUs | Memória GPU | CPUs virtuais | Memória da CPU |
---|---|---|---|---|
Standard_NC40ads_H100_v5 | 1 | 94 GB | 40 | 320 GB |
Standard_NC80adis_H100_v5 | 2 | 94GB x 2 | 80 | 640 GB |
ND_H100_v5
- Tipo de GPU: NVIDIA H100 Tensor Core GPU
Nome da instância | Número de GPUs | Memória GPU | CPUs virtuais | Memória da CPU |
---|---|---|---|---|
Standard_ND96isr_H100_v5 | 8 | 80GB x 8 | 96 | 1900GB |
NC_A100_v4
- Tipo de GPU: NVIDIA A100 PCIe GPU
Nome da instância | Número de GPUs | Memória GPU | CPUs virtuais | Memória da CPU |
---|---|---|---|---|
Standard_NC24ads_A100_v4 | 1 | 80 GB | 24 | 220GB |
Standard_NC48ads_A100_v4 | 1 | 80GB x 2 | 48 | 440GB |
Standard_NC96ads_A100_v4 | 1 | 80GB x 4 | 96 | 880 GB |
NDasrA100_v4
- Tipo de GPU: NVIDIA Ampere A100 40GB Tensor Core GPU
Nome da instância | Número de GPUs | Memória GPU | CPUs virtuais | Memória da CPU |
---|---|---|---|---|
Standard_ND96asr_v4 | 8 | 40GB x 8 | 96 | 900GB |
NVadsA10_v5
- Tipo de GPU: NVIDIA A10 GPU
Nome da instância | Número de GPUs | Memória GPU | CPUs virtuais | Memória da CPU |
---|---|---|---|---|
Standard_NV36ads_A10_v5 | 1 | 24 GB | 36 | 440GB |
Standard_NV36adms_A10_v5 | 1 | 24 GB | 36 | 880 GB |
Standard_NV72ads_A10_v5 | 2 | 24GB x 2 | 72 | 880 GB |
NCasT4_v3
- Tipo de GPU: NVIDIA T4 GPU
Nome da instância | Número de GPUs | Memória GPU | CPUs virtuais | Memória da CPU |
---|---|---|---|---|
Standard_NC4as_T4_v3 | 1 | 16 GB | 4 | 28 GB |
Standard_NC8as_T4_v3 | 1 | 16 GB | 8 | 56 GB |
Standard_NC16as_T4_v3 | 1 | 16 GB | 16 | 110 GB |
Standard_NC64as_T4_v3 | 4 | 16GB x 4 | 64 | 440GB |
NC_v3
- Tipo de GPU: NVIDIA Tesla V100 GPU
Nome da instância | Número de GPUs | Memória GPU | CPUs virtuais | Memória da CPU |
---|---|---|---|---|
Standard_NC6s_v3 | 1 | 16 GB | 6 | 112 GB |
Standard_NC12s_v3 | 2 | 16GB x 2 | 12 | 224 GB |
Standard_NC24s_v3 | 4 | 16GB x 4 | 24 | 448 GB |
Standard_NC24rs_v3 | 4 | 16GB x 4 | 24 | 448 GB |
Consulte de Preços do Azure Databricks para obter uma lista de up-todata dos tipos de instância de GPU suportados e suas regiões de disponibilidade. Sua implantação do Azure Databricks deve residir em uma região com suporte para iniciar a computação habilitada para GPU.
Agendamento de GPU
O agendamento de GPU distribui tarefas do Spark de forma eficiente em um grande número de GPUs.
O Databricks Runtime suporta agendamento com reconhecimento de GPU a partir do Apache Spark 3.0. O Azure Databricks pré-configura na computação da GPU.
Nota
O agendamento de GPU não está habilitado na computação de nó único.
Agendamento de GPU para IA e ML
spark.task.resource.gpu.amount
é a única configuração do Spark relacionada ao agendamento com reconhecimento de GPU que você pode precisar configurar.
A configuração padrão 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 você usar todos os nós da GPU.
Para reduzir a sobrecarga de comunicação durante o treinamento distribuído, o Databricks recomenda definir spark.task.resource.gpu.amount
o número de GPUs por nó de trabalho na configuração do Spark de computação. Isso cria apenas uma tarefa do Spark para cada trabalhador do Spark e atribui todas as GPUs nesse nó de trabalho à mesma tarefa.
Para aumentar a paralelização para inferência de aprendizagem profunda distribuída, você pode definir spark.task.resource.gpu.amount
para valores fracionários, como 1/2, 1/3, 1/4, ... 1/N. Isso cria mais tarefas do Spark do que GPUs, permitindo que mais tarefas simultâneas lidem com solicitações de inferência em paralelo. Por exemplo, se você 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 tarefas do PySpark, o Azure Databricks remapeia automaticamente a(s) GPU(s) atribuída(s) para índices baseados em zero. Para a configuração padrão que usa uma GPU por tarefa, você pode usar a GPU padrão sem verificar qual GPU está atribuída à tarefa.
Se você definir várias GPUs por tarefa, por exemplo, 4, os índices das GPUs atribuídas serão sempre 0, 1, 2 e 3. Se você precisar dos índices físicos das GPUs atribuídas, poderá obtê-los da variável de ambiente CUDA_VISIBLE_DEVICES
.
Se usar o Scala, pode obter os índices das GPUs atribuídas à tarefa a partir de TaskContext.resources().get("gpu")
.
Driver de GPU NVIDIA, CUDA e cuDNN
O Azure Databricks instala o driver NVIDIA e as bibliotecas necessárias para usar GPUs em instâncias de trabalho e driver do Spark:
-
CUDA Toolkit, instalado em
/usr/local/cuda
. - cuDNN: Biblioteca de Redes Neurais Profundas NVIDIA CUDA.
- NCCL: Biblioteca de Comunicações Coletivas NVIDIA.
A versão do driver NVIDIA incluído é 535.54.03, que suporta CUDA 11.0. Para a série de tipos de instância NV A10 v5, a versão do driver NVIDIA incluída é 535.154.05
.
Para obter as versões das bibliotecas incluídas, consulte as notas de versão da versão específica do Databricks Runtime que você está usando.
Nota
Este software contém o código fonte fornecido pela NVIDIA Corporation. Especificamente, para dar suporte a GPUs, o Azure Databricks inclui código de Exemplos CUDA.
Contrato de Licença de Usuário Final (EULA) da NVIDIA
Ao selecionar uma "Versão de Tempo de Execução do Databricks" habilitada para GPU no Azure Databricks, você concorda implicitamente com os termos e condições descritos no EULA da NVIDIA em relação às bibliotecas CUDA, cuDNN e Tesla e com o Contrato de Licença de Usuário Final da NVIDIA (com Suplemento NCCL) para a biblioteca NCCL.
Serviços de contêiner Databricks na computação de GPU
Importante
Esta funcionalidade está em Pré-visualização Pública.
Você pode usar o Databricks Container Services na computação com GPUs para criar ambientes portáteis de aprendizado profundo com bibliotecas personalizadas. Consulte Personalizar contêineres com o Databricks Container Service para obter instruções.
Para criar imagens personalizadas para computação de GPU, você deve selecionar uma versão de tempo de execução padrão em vez de Databricks Runtime ML para GPU. Ao selecionar Usar o seu próprio contêiner Docker, pode escolher computação de GPU com uma versão de tempo de execução padrão. As imagens personalizadas para GPU são baseadas nos contêineres CUDA oficiais, que é diferente do Databricks Runtime ML para GPU.
Quando você cria imagens personalizadas para computação de GPU, não é possível alterar a versão do driver NVIDIA porque ela deve corresponder à versão do driver na máquina host.
O databricksruntime
Docker Hub contém imagens base de exemplo com capacidade de GPU. Os Dockerfiles usados para gerar essas imagens estão localizados no repositório GitHub de contêineres de exemplo, que também tem detalhes sobre o que as imagens de exemplo fornecem e como personalizá-las.