Computação habilitada para GPU

Observação

Alguns tipos de instância habilitados para GPU estão em 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 de compute.

Visão geral

O 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 computação de GPU

Criar uma GPU compute é semelhante a criar qualquer compute. O senhor deve ter em mente o seguinte:

  • A versão do Databricks 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 tipoworker e o tipo de driver devem ser tipos de instância de GPU.

Tipos de instância compatíveis

Databricks dá suporte aos seguintes tipos de instância:

  • Família de máquinas A2: a2-highgpu-1g, a2-highgpu-2g, a2-highgpu-4g, a2-highgpu-8g, a2-megagpu-16g

Consulte Máquinas otimizadas por acelerador do GCP para obter mais informações sobre esses tipos de instância e regiões do GCP 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 GPU

O Databricks Runtime 9.1 LTS ML e acima suportam programação com reconhecimento de GPU do Apache Spark 3.0. O Databricks o pré-configura na GPU compute para o senhor.

A programação da GPU não está habilitada em um único nó compute.

spark.task.resource.gpu.amount é a única configuração do Spark relacionada à programação com reconhecimento de GPU que o senhor talvez precise alterar. A configuração default usa uma GPU por tarefa, o que é ideal para cargas de trabalho de inferência distribuída e treinamento distribuído, se o senhor usar todos os nós de GPU. Para fazer o treinamento distribuído em um subconjunto de nós, o que ajuda a reduzir a sobrecarga de comunicação durante o treinamento distribuído, a Databricks recomenda definir spark.task.resource.gpu.amount como o número de GPUs por nó worker na configuração compute Spark.

Para a tarefa PySpark, o Databricks remapeia automaticamente as GPU(s) atribuídas para os índices 0, 1,…. Na configuração default que usa uma GPU por tarefa, seu código pode simplesmente usar a GPU default sem verificar qual GPU está atribuída à tarefa. Se você definir várias GPUs por tarefa, por exemplo 4, seu código poderá assumir que os índices das GPUs atribuídas são sempre 0, 1, 2 e 3. Se você precisar dos índices físicos das GPUs atribuídas, poderá obtê-los na variável de ambiente CUDA_VISIBLE_DEVICES .

Se você 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ária para usar GPUs no driver Spark e nas instâncias worker :

  • CUDA Toolkit, instalado em /usr/local/cuda.

  • cuDNN: biblioteca NVIDIA CUDA Deep Neural Network.

  • NCCL: biblioteca de comunicações coletivas da NVIDIA.

A versão do driver NVIDIA incluída é 525.105.17, que suporta CUDA 11.0.

Para as versões da biblioteca incluídas, consulte as notas sobre a versão para a versão específica do Databricks Runtime que você está usando.

Observação

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 da NVIDIA (EULA)

Ao selecionar uma “versão de Databricks Runtime ” habilitada para GPU no Databricks, você concorda implicitamente com os termos e condições descritos no EULA da NVIDIA com relação às bibliotecas CUDA, cuDNN e Tesla, e o Contrato de licença de usuário final da NVIDIA (com NCCL Suplemento) para a biblioteca NCCL.

Limitações

  • Não é possível criar uma nova GPU compute quando o senhor programa uma Job a partir de uma Notebook. O senhor pode executar um Job em uma GPU compute existente somente se ela tiver sido criada 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 nvidia-smi você deve usar o terminal web ou o %sh comando mágicoNotebook para executar /usr/local/nvidia/bin/nvidia-smi.

  • O monitoramento das métricas do compute usando o Ganglia não é compatível com o Databricks on Google Cloud.