Databricks Autologging

O Databricks Autologging é uma solução sem código que estende o log automático do MLflow para fornecer acompanhamento automático de experimentos para sessões de treinamento em aprendizado de máquina no Azure Databricks.

Com o Databricks Autologging, parâmetros de modelos, métricas, arquivos e informações de linhagem são capturados automaticamente quando você treina modelos a partir de várias bibliotecas populares de aprendizado de máquina. As sessões de treinamento são registradas como execuções de acompanhamento do MLflow. Os arquivos de modelo também são acompanhados para que você possa registrá-los facilmente no Registro de Modelos do MLflow e implantá-los para pontuação em tempo real com o Serviço de Modelo.

O vídeo a seguir mostra o Databricks Autologging com uma sessão de treinamento de modelo scikit-learn em um notebook Python interativo. As informações de acompanhamento são capturadas e exibidas automaticamente na barra lateral Execuções de experimento e na interface do usuário do MLflow.

Exemplo de log automático

Requisitos

  • O Registro em Log Automático do Databricks está em disponibilidade geral em todas as regiões com o Databricks Runtime 10.4 LTS ML ou superior.
  • O Databricks Autologging está disponível em regiões de versão prévia selecionadas com o Databricks Runtime 9.1 LTS ML ou superior.

Como ele funciona

Quando você anexa um notebook Python interativo a um cluster do Azure Databricks, o Databricks Autologging chama mlflow.autolog() para configurar o acompanhamento para suas sessões de treinamento de modelo. Quando você treina modelos no notebook, as informações de treinamento do modelo são rastreadas automaticamente com o Acompanhamento do MLflow. Para obter informações sobre como essas informações de treinamento de modelo são protegidas e gerenciadas, consulte Segurança e gerenciamento de dados.

A configuração padrão para a chamada mlflow.autolog() é:

mlflow.autolog(
    log_input_examples=False,
    log_model_signatures=True,
    log_models=True,
    disable=False,
    exclusive=False,
    disable_for_unsupported_versions=True,
    silent=False
)

Você pode personalizar a configuração de registro em log automático.

Uso

Para usar o Databricks Autologging, treine um modelo de machine learning em uma estrutura com suporte usando um notebook Python interativo do Azure Databricks. O Databricks Autologging registra automaticamente informações de linhagem de modelo, parâmetros e métricas para o Acompanhamento do MLflow. Você também pode personalizar o comportamento do Databricks Autologging.

Observação

O Databricks Autologging não é aplicado a execuções criadas usando a API fluente do MLflow com mlflow.start_run(). Nesses casos, você deve chamar mlflow.autolog() para salvar o conteúdo registrado automaticamente na execução MLflow. Confira Acompanhar conteúdo adicional.

Personalizar o comportamento de registro em log

Para personalizar o registro em log, use mlflow.autolog(). Essa função fornece parâmetros de configuração para habilitar o registro em log do modelo (log_models), coletar exemplos de entrada (log_input_examples), configurar avisos (silent) e muito mais.

Acompanhar conteúdo adicional

Para acompanhar métricas, parâmetros, arquivos e metadados adicionais com execuções do MLflow criadas pelo Databricks Autologging, siga estas etapas em um notebook Python interativo do Azure Databricks:

  1. Chame mlflow.autolog() com exclusive=False.
  2. Inicie uma execução do MLflow usando mlflow.start_run(). Você pode envolver essa chamada em with mlflow.start_run(). Quando fizer isso, a operação será encerrada automaticamente após a conclusão.
  3. Use métodos de Acompanhamento do MLflow, como mlflow.log_param(), para acompanhar o conteúdo de pré-treinamento.
  4. Treine um ou mais modelos de machine learning em uma estrutura com suporte pelo Databricks Autologging.
  5. Use métodos de Acompanhamento do MLflow, como mlflow.log_metric(), para acompanhar o conteúdo de pós-treinamento.
  6. Se você não usou with mlflow.start_run() na Etapa 2, termine a execução do MLflow usando mlflow.end_run().

Por exemplo:

import mlflow
mlflow.autolog(exclusive=False)

with mlflow.start_run():
  mlflow.log_param("example_param", "example_value")
  # <your model training code here>
  mlflow.log_metric("example_metric", 5)

Desabilitar Databricks Autologging

Para desabilitar o Databricks Autologging em um notebook Python interativo do Azure Databricks, chame mlflow.autolog() com disable=True:

import mlflow
mlflow.autolog(disable=True)

Os administradores também podem desabilitar o Databricks Autologging para todos os clusters em um workspace na guia Avançado da página de configurações de administração. Os clusters devem ser reiniciados para que essa alteração entre em vigor.

Ambientes e estruturas com suporte

O Databricks Autologging tem suporte em notebooks Python interativos e está disponível para as seguintes estruturas ML:

  • scikit-learn
  • MLlib do Apache Spark
  • TensorFlow
  • Keras
  • PyTorch Lightning
  • XGBoost
  • LightGBM
  • Gluon
  • Fast.ai (versão 1.x)
  • statsmodels.

Para obter mais informações sobre cada uma das estruturas com suporte, consulte Registro em log automático do MLflow.

Segurança e gerenciamento de dados

Todas as informações de treinamento de modelo rastreadas com o Databricks Autologging são armazenadas no Acompanhamento de MLflow e são protegidas por permissões do Experimento MLflow. Você pode compartilhar, modificar ou excluir informações de treinamento de modelo usando a API de Acompanhamento do MLflow ou a interface do usuário.

Administração

Os administradores podem habilitar ou desabilitar o Databricks Autologging para todas as sessões interativas do notebook em seu espaço de trabalho na guia Avançado da página de configurações de administração. As alterações não fazem efeito até que o cluster seja reiniciado.

Limitações

  • Não há suporte para o Databricks Autologging em trabalhos do Azure Databricks. Para usar o registro em log automático a partir de trabalhos, você pode chamar mlflow.autolog() explicitamente.
  • O Databricks Autologging está habilitado somente no nó do driver do seu cluster do Azure Databricks. Para usar o registro em log automático a partir de nós de trabalho, você deve chamar mlflow.autolog() explicitamente de dentro do código em execução em cada trabalho.
  • Não há suporte para a integração scikit-learn do XGBoost.

Apache Spark MLlib, Hyperopt e acompanhamento de MLflow automatizado

O Databricks Autologging não altera o comportamento das integrações de acompanhamento de MLflow automatizadas existentes para Apache Spark MLlib e Hyperopt.

Observação

No Databricks Runtime 10.1 ML, desabilitar a integração automatizada de acompanhamento do MLflow para os modelos CrossValidator e TrainValidationSplit MLlib do Apache Spark também desabilita o recurso do Databricks Autologging para todos os modelos MLlib do Apache Spark.