Pular para o conteúdo principal

Habilitado para GPU compute

nota

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

A criação de um GPU compute é semelhante à criação de qualquer compute. Lembre-se do seguinte:

  • A caixa de seleção Aprendizado de máquina deve estar marcada. A versão do GPU ( ML ) é selecionada automaticamente com base no tipo de worker.
  • A caixa de seleção “Photon ” (Aceleração do mouse ) deve estar desmarcada. O Photon não é compatível com tipos de instância de GPU.
  • O tipo de trabalhador deve ser um tipo de instância de GPU.
  • A caixa de seleção de nó único pode ser marcada para obter uma única instância de GPU.

O processo de configuração de instâncias de GPU usando os clusters API varia dependendo da definição do campo kind. kind determina se sua solicitação usa a especificação de formulário simples:

  • Se kind = CLASSIC_PREVIEW, defina "use_ml_runtime": true.
  • Se você não definir o campo kind, defina spark_version como uma versão habilitada para GPU, como 15.4.x-gpu-ml-scala2.12.

Tipos de instância compatíveis

O Databricks é compatível com os seguintes tipos de instância:

  • 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

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.

nota

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.

nota

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.

Databricks Container Services na GPU compute

info

Visualização

Esse recurso está em Public Preview.

O senhor pode usar o Databricks Container Services em compute com GPUs para criar ambientes portáteis de aprendizagem profunda com biblioteca personalizada. Consulte Personalizar contêineres com o serviço Databricks Container para obter instruções.

Para criar imagens personalizadas para GPU compute, o senhor deve selecionar uma versão de tempo de execução padrão em vez de Databricks Runtime ML para GPU. Ao selecionar Use your own Docker container , o senhor pode escolher a GPU compute com uma versão de tempo de execução padrão. As imagens personalizadas para GPU são baseadas nos contêineres CUDA oficiais, o que é diferente do Databricks Runtime ML para GPU.

Quando o senhor cria imagens personalizadas para a GPU compute, 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 de 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.

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 ambiente PATH. 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.