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

O Databricks dá suporte aos seguintes tipos de instância aceleradas por GPU:

Considerações

Para todos os tipos de instância aceleradas por GPU, lembre-se do seguinte:

  • Devido aos aumentos de preços das instâncias spot da Amazon, as instâncias spot de GPU são difíceis de reter. Use sob demanda, se necessário.

  • Talvez o senhor precise solicitar um aumento de limite para criar um site habilitado para GPU compute.

Consulte Tipos de instâncias compatíveis para obter uma lista de tipos de instâncias de GPU compatíveis e seus atributos.

Programador GPU

O Databricks Runtime é compatível com a programação com reconhecimento de GPU do Apache Spark 3.0. A Databricks o pré-configura na GPU compute.

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").

Nas versões do Databricks Runtime abaixo da 7.0, para evitar conflitos entre várias tarefas do Spark que tentam usar a mesma GPU, o Databricks configura automaticamente a GPU compute para que haja no máximo uma tarefa em execução por nó. Dessa forma, a tarefa pode usar todas as GPUs no nó sem entrar em conflito com outras tarefas.

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 é 535.54.03, 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.

Databricks Container Services em computação de GPU

Visualização

Esse recurso está em Prévia Pública.

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 do Databricks Runtime ML para GPU. Ao selecionar Use your own Docker container (Usar seu próprio contêiner do Docker), o senhor pode escolher o 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, que são diferentes 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, pois ela deve corresponder à versão do driver na máquina host.

O databricksruntime Docker Hub contém exemplos de imagens base 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 contém detalhes sobre o que as imagens de exemplo fornecem e como personalizá-las.

Mensagens de erro

  • O erro a seguir indica que o provedor clouds AWS não tem capacidade suficiente para o recurso compute solicitado. Error: Cluster terminated. Reason: AWS Insufficient Instance Capacity Failure

    Para resolver, o senhor pode tentar criar um compute em uma zona de disponibilidade diferente. A zona de disponibilidade está na configuraçãocompute , em Advanced options (Opções avançadas). O senhor também pode analisar os preços das instâncias reservadas da AWS para comprar cotas adicionais.

  • Se o seu compute usa os tipos de instância P4d ou G5 e o Databricks Runtime 7.3 LTS ML, a versão do pacote CUDA no 7.3 é incompatível com as instâncias de GPU mais recentes. Nesses casos, o pacote de ML, como o TensorFlow Keras e o PyTorch, produzirá erros como o seguinte:

    • Keras do TensorFlow: InternalError: CUDA runtime implicit initialization on GPU:x failed. Status: device kernel image is invalid

    • PyTorch: UserWarning: NVIDIA A100-SXM4-40GB with CUDA capability sm_80 is not compatible with the current PyTorch installation.

    Você pode resolver esses erros atualizando para Databricks Runtime 10.4 LTS ML ouacima.