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:
- Delta e transmissão do Mosaic para carregar dados
- Optuna para paralelizar o treinamento
- UDFs do Pandas para inferência
Databricks Mosaic AI O senhor tem uma infraestrutura pré-construída de aprendizagem profunda com Databricks Runtime para Machine Learning, que inclui as bibliotecas de aprendizagem profunda mais comuns, como TensorFlow, PyTorch e Keras. Ele também tem suporte integrado e pré-configurado para GPU, 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 Databricks 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.
- Use a biblioteca Python com escopo de Notebook ou a biblioteca R com escopo de Notebook para usar um conjunto ou uma versão específica da biblioteca sem afetar outros usuários de clustering.
- Instale o biblioteca no nível de clustering para padronizar as versões de uma equipe ou de um projeto.
- Configure um Databricks Job para garantir a execução de uma tarefa repetida em um ambiente consistente e imutável.
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 nuvem normalmente não é otimizado para E/S, o que pode ser um desafio para modelos de aprendizagem profunda que exigem grandes conjuntos de dados. Databricks Runtime ML inclui Delta Lake e transmissão Mosaic para otimizar a Taxa de transferência de dados para aplicativos 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.
Databricks recomenda a transmissão do Mosaic para o carregamento de dados em PyTorch ou no Mosaic Composer, especialmente quando envolve cargas de trabalho distribuídas. O StreamingDataset e o StreamingDataLoader fornecidos APIs ajudam a simplificar o treinamento em grandes conjuntos de dados e, ao mesmo tempo, maximizam as garantias de correção, o desempenho, a flexibilidade e a facilidade de uso em um ambiente distribuído. Consulte Carregar uso de dados Mosaic transmissão para obter detalhes adicionais.
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 Anthropice 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.
- Quando o senhor acessa log um modelo de Databricks, MLflow fornece automaticamente o código de inferência para aplicar o modelo como um Pandas UDF .
- O senhor também pode otimizar ainda mais seu pipeline de inferência, especialmente para grandes modelos de aprendizagem profunda. Veja as soluções de referência para a imagem ETL para obter um exemplo.