Pular para o conteúdo principal

Práticas recomendadas para aprendizagem profunda no Databricks

Este artigo inclui dicas para aprendizagem profunda em Databricks e informações sobre ferramentas integradas e biblioteca projetadas para otimizar cargas de trabalho de aprendizagem profunda, como as seguintes:

Databricks fornece infraestrutura de aprendizado profundo pré-construída com Databricks Runtime para Machine Learning, que inclui as bibliotecas de aprendizado profundo mais comuns, como TensorFlow, PyTorch e Keras. Também possui suporte integrado e pré-configurado para GPUs, incluindo drivers e biblioteca de suporte.

Databricks Runtime ML também inclui todos os recursos do Databricks workspace, como criação e gerenciamento de clusters, gerenciamento de biblioteca e ambiente, gerenciamento de código com pastas Databricks Git , suporte à automação, incluindo LakeFlow Jobs e APIs, e MLflow integrado para acompanhamento do desenvolvimento de modelos e implantação e veiculação de modelos.

recurso e gestão ambiental​

A Databricks ajuda o senhor a personalizar seu ambiente de aprendizagem profunda e a manter o ambiente consistente entre os usuários.

Personalize o ambiente de desenvolvimento​

Com o Databricks Runtime, o senhor pode personalizar seu ambiente de desenvolvimento nos níveis do Notebook, do clustering e do Job.

Usar política de cluster​

O senhor pode criar uma política de cluster para orientar data scientists as escolhas certas, como usar um cluster de nó único para desenvolvimento e usar um cluster de escala automática para trabalhos grandes.

Considere as GPUs A100 para cargas de trabalho de aprendizagem profunda​

As GPUs A100 são uma opção eficiente para muitas tarefas de aprendizagem profunda, como treinamento e ajuste de grandes modelos de linguagem, processamento de linguagem natural, detecção e classificação de objetos e mecanismos de recomendação.

  • A Databricks oferece suporte a GPUs A100 em todas as nuvens. Para ver a lista completa dos tipos de GPU compatíveis, consulte Tipos de instância compatíveis.
  • As GPUs A100 geralmente têm disponibilidade limitada. Entre em contato com o provedor de nuvem para obter a alocação de recursos ou considere reservar a capacidade com antecedência.

Programador de GPU​

Para maximizar suas GPUs para aprendizagem profunda treinamento e inferência distribuída, otimize a programação da GPU. Consulte Programar GPU.

Práticas recomendadas para carregar dados​

O armazenamento de dados em cloud normalmente não é otimizado para E/S, o que pode ser um desafio para modelos de aprendizagem profunda que exigem grandes datasets. Databricks Runtime ML inclui Delta Lake para otimizar a taxa de transferência de dados para aplicações de aprendizagem profunda.

A Databricks recomenda o uso de tabelas Delta Lake para armazenamento de dados. O Delta Lake simplifica o ETL e permite que o senhor acesse os dados com eficiência. Especialmente para imagens, o Delta Lake ajuda a otimizar a ingestão para treinamento e inferência. As soluções de referência para aplicativos de imagem fornecem um exemplo de otimização do ETL para imagens usando o Delta Lake.

Para datasets muito grandes que não cabem na memória, use abordagens de transmissão:

Melhores práticas para modelos de treinamento aprendizagem profunda​

Databricks recomenda o uso do site Databricks Runtime para Machine Learning e MLflow acompanhamento e autologging para todos os modelos de treinamento.

começar com um cluster de nó único​

Umclustering de GPU de nó único (somente driver) é normalmente o mais rápido e econômico para o desenvolvimento de modelos de aprendizagem profunda. É provável que um nó com 4 GPUs seja mais rápido para aprendizagem profunda treinamento do que 4 nós worker com 1 GPU cada. Isso ocorre porque o treinamento distribuído incorre em sobrecarga de comunicação na rede.

Um clustering de nó único é uma boa opção durante o desenvolvimento rápido e iterativo e para modelos de treinamento em dados de pequeno a médio porte. Se o seu dataset for grande o suficiente para tornar o treinamento lento em uma única máquina, considere mudar para multi-GPU e até mesmo para compute distribuído.

Use o TensorBoard para monitorar o processo de treinamento​

O TensorBoard é pré-instalado no Databricks Runtime ML. O senhor pode usá-lo dentro de um Notebook ou em um tab separado. Consulte o TensorBoard para obter detalhes.

Otimizar o desempenho para aprendizagem profunda​

O senhor pode e deve usar técnicas de otimização de desempenho de aprendizagem profunda no Databricks.

Parada antecipada​

A interrupção antecipada monitora o valor de uma métrica calculada no conjunto de validação e interrompe o treinamento quando a métrica deixa de melhorar. Essa é uma abordagem melhor do que adivinhar um bom número de épocas para completar. Cada biblioteca de aprendizagem profunda fornece uma API nativa para parada antecipada; por exemplo, consulte as APIs de retorno de chamada EarlyStopping para TensorFlow/Keras e para PyTorch Lightning. Para obter um exemplo de Notebook, consulte TensorFlow Keras example Notebook.

ajuste de tamanho de lotes​

O ajuste do tamanho dos lotes ajuda a otimizar a utilização da GPU. Se o tamanho do lote for muito pequeno, os cálculos não poderão usar totalmente os recursos da GPU.

Ajuste o tamanho dos lotes em conjunto com a taxa de aprendizado. Uma boa regra prática é que, quando o senhor aumenta o tamanho do lote em n, aumenta a taxa de aprendizado em sqrt(n). Ao fazer o ajuste manual, tente alterar o tamanho dos lotes em um fator de 2 ou 0,5. Em seguida, continue o ajuste para otimizar o desempenho, seja manualmente ou testando uma variedade de hiperparâmetros usando uma ferramenta automatizada como o Optuna.

Transferir aprendizado​

Com a aprendizagem por transferência, o senhor começa com um modelo previamente treinado e o modifica conforme necessário para a sua aplicação. O aprendizado por transferência pode reduzir significativamente o tempo necessário para treinar e ajustar um novo modelo. Consulte Featurization for transfer learning para obter mais informações e um exemplo.

Mudança para o treinamento distribuído​

O Databricks Runtime ML inclui o TorchDistributor, o DeepSpeed e o Ray para facilitar a mudança do treinamento de nó único para o treinamento distribuído.

TorchDistributor​

TorchDistributor é um módulo de código aberto em PySpark que facilita o treinamento distribuído com PyTorch em Spark clustering, que permite que o senhor inicie o PyTorch treinamento Job como Spark Job. Consulte Treinamento distribuído com TorchDistributor.

Optuna​

O Optuna fornece ajuste adaptativo de hiperparâmetros para aprendizado de máquina.

Práticas recomendadas para inferência​

Esta seção contém dicas gerais sobre o uso de modelos para inferência com a Databricks.

  • Para minimizar os custos, considere tanto as CPUs quanto as GPUs otimizadas para inferência, como a família de máquinas A2. Não há uma recomendação clara, pois a melhor escolha depende do tamanho do modelo, das dimensões dos dados e de outras variáveis.

  • Use MLflow para simplificar a implementação e a manutenção do modelo. MLflow pode log qualquer modelo de aprendizagem profunda, incluindo lógica personalizada de pré-processamento e pós-processamento. Modelos em Unity Catalog ou modelos registrados no Workspace Model Registry podem ser implantados para lotes, transmissão ou inferência on-line.

Atendimento on-line​

A melhor opção para a veiculação de baixa latência é a veiculação on-line por meio de uma API REST. Databricks fornece um modelo de serviço para inferência on-line. O servindo modelo oferece uma interface unificada para implantar, administrar e consultar os modelos AI e suporta o atendimento ao seguinte:

  • Modelos personalizados. Esses são os modelos Python pacote no formato MLflow. Os exemplos incluem os modelos de transformadores scikit-learn, XGBoost, PyTorch e Hugging Face.
  • Modelos externos. Esses são modelos hospedados fora da Databricks. Por exemplo, modelos generativos do AI como o GPT-4 da OpenAI, o Claude do Anthropic e outros. que atendem a esses modelos podem ser controlados de forma centralizada e os clientes podem estabelecer limites de taxa e controle de acesso para eles.

MLflow fornece APIs para implantação de vários serviços gerenciados para inferência on-line, bem como APIs para criação de contêineres Docker para soluções de atendimento personalizadas.

inferência de lotes e transmissão​

A pontuação de lotes e transmissão oferece suporte à pontuação de alto custo e baixa taxa de transferência em latências tão baixas quanto minutos. Para obter mais informações, consulte modelos implantados para inferência e previsão de lotes.

  • Se o senhor espera acessar os dados para inferência mais de uma vez, considere criar um trabalho de pré-processamento para ETL os dados em uma tabela Delta Lake antes de executar o trabalho de inferência. Dessa forma, o custo de ingestão e preparação dos dados é distribuído em várias leituras dos dados. Separar o pré-processamento da inferência também permite que o senhor selecione um hardware diferente para cada trabalho a fim de otimizar o custo e o desempenho. Por exemplo, o senhor pode usar CPUs para ETL e GPUs para inferência.
  • Use Spark Pandas UDFs para escalar lotes e transmitir inferências em um clustering.