Clusters ativados pela GPU

Nota

Alguns tipos de instâncias ativados pela GPU estão em Beta e estão marcados como tal na lista de drop-down quando seleciona os tipos de condutor e trabalhador durante a criação do cluster.

Descrição geral

A Azure Databricks suporta clusters acelerados com unidades de processamento gráfico (GPUs). Este artigo descreve como criar clusters com instâncias ativadas pela GPU e descreve os controladores e bibliotecas da GPU instalados nesses casos.

Para saber mais sobre aprendizagem profunda em clusters com GPU, consulte Deep learning.

Criar um cluster de GPU

A criação de um cluster GPU é semelhante à criação de qualquer cluster Spark (Ver Clusters). Deve ter em mente o seguinte:

  • A versão de runtime databricks deve ser uma versão ativada pela GPU, como Runtime 6.6 ML (GPU, Scala 2.11, Spark 2.4.5).
  • O Tipo de Trabalhador e o Tipo de Condutor devem ser tipos de instância gpu.
  • Para fluxos de trabalho de máquina única sem Faísca, pode definir o número de trabalhadores para zero.

A Azure Databricks suporta a série de instâncias NC: NC12 e NC24 e a série de instância nCv3: NC6s_v3, NC12s_v3, e NC24s_v3. Consulte o preço do Azure Databricks para obter uma lista atualizada de tipos de instâncias gpu suportados e suas regiões de disponibilidade. A sua implantação de dados Azure deve residir numa região apoiada para lançar clusters ativados pela GPU.

Agendamento de GPU

Databricks Runtime 7.0 ML e acima suportam agendamento de conhecimento gpu de Apache Spark 3.0. O Azure Databricks pré-configura-o em clusters gpu para si.

spark.task.resource.gpu.amount é o único config spark relacionado com o agendamento consciente da GPU que você pode precisar de mudar. A configuração padrão utiliza uma GPU por tarefa, ideal para cargas de trabalho de inferência distribuídas e treino distribuído, se utilizar todos os nós gpu. Se pretender fazer formação distribuída num subconjunto de nós, o que ajuda a reduzir a sobrecarga de comunicação durante a formação distribuída, a Databricks recomenda a definição spark.task.resource.gpu.amount do número de GPUs por nó de trabalhador na configuraçãodo cluster Spark .

Para tarefas PySpark, a Azure Databricks reatribui automaticamente GPU(s) atribuídas aos índices 0, 1, .... Sob a configuração padrão que utiliza uma GPU por tarefa, o seu código pode simplesmente utilizar a GPU predefinida sem verificar qual a GPU que está atribuída à tarefa. Se definir várias GPUs por tarefa, por exemplo 4, o seu código pode assumir que os índices das GPUs atribuídas são sempre 0, 1, 2 e 3. Se precisar dos índices físicos das GPUs atribuídas, pode obtê-los a partir da CUDA_VISIBLE_DEVICES variável ambiental.

Se utilizar o Scala, pode obter os índices das GPUs atribuídos à tarefa a partir de TaskContext.resources().get("gpu") .

Para databricks o tempo de execução é inferior a 7.0, de modo a evitar conflitos entre várias tarefas Spark tentando usar a mesma GPU, a Azure Databricks configura automaticamente os clusters de GPU de modo a que haja no máximo uma tarefa de execução por nó. Neste caso, a tarefa pode utilizar todas as GPUs no nó sem entrar em conflitos com outras tarefas.

Piloto de GPU da NVIDIA, CUDA e cuDNN

A Azure Databricks instala o controlador e bibliotecas NVIDIA necessários para utilizar GPUs em instâncias de condutor e trabalhadores:

A versão do condutor da NVIDIA incluída é 440.64. Para as versões das bibliotecas incluídas, consulte as notas de lançamento para a versão específica databricks Runtime que está a utilizar.

Nota

Este software contém código fonte fornecido pela NVIDIA Corporation. Especificamente, para apoiar as GPUs, a Azure Databricks inclui código das amostras da CUDA.

Contrato de Licença final de utilizador NVIDIA (EULA)

Quando seleciona uma versão "Databricks Runtime Version" ativada pela GPU em Azure Databricks, concorda implicitamente com os termos e condições descritos na EULA da NVIDIA no que diz respeito às bibliotecas CUDA, cuDNN e Tesla, e ao Contrato de Licença final do utilizador NVIDIA (com suplemento NCCL) para a biblioteca NCCL.

Databricks Container Services em clusters de GPU

Importante

Esta funcionalidade está em Pré-visualização Pública.

Você pode usar serviços de contentores databricks em clusters com GPUs para criar ambientes portáteis de aprendizagem profunda com bibliotecas personalizadas. Consulte os recipientes de personalização com os serviços de contentores databricks para obter instruções.

O Databricks Runtime Docker Hub contém imagens base de exemplo com capacidade de GPU. Os Dockerfiles utilizados para gerar estas imagens estão localizados nos recipientes de exemplo GitHub,que também tem detalhes sobre o que as imagens de exemplo fornecem, e como personalizá-las.

Ao criar imagens personalizadas para clusters GPU, não é possível alterar a versão do controlador NVIDIA. A versão do controlador NVIDIA deve coincidir com a versão do condutor na máquina de anfitrião, que é de 440.64. Esta versão não suporta CUDA 11.