Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O acompanhamento MLflow permite registrar blocos de anotações e conjuntos de dados de treinamento, parâmetros, métricas, tags e artefatos relacionados ao treinamento de um modelo de aprendizado de máquina ou aprendizado profundo. Para obter um bloco de anotações de exemplo para começar a usar o MLflow, consulte Tutorial: Modelos clássicos de ML de ponta a ponta no Azure Databricks.
Rastreamento de MLflow com experimentos, execuções e modelos
O processo de desenvolvimento do modelo é iterativo e pode ser um desafio acompanhar o seu trabalho à medida que desenvolve e otimiza um modelo. No Azure Databricks, você pode usar o controle MLflow para ajudá-lo a acompanhar o processo de desenvolvimento do modelo, incluindo configurações de parâmetros ou combinações que você tentou e como elas afetaram o desempenho do modelo.
O rastreamento MLflow usa experimentos, execuções e modelos para registrar e acompanhar o desenvolvimento de modelos de ML e deep learning. Uma execução é uma única execução do código do modelo. Durante uma execução MLflow, você pode registrar parâmetros e resultados do modelo. Um experimento é uma coleção de corridas relacionadas. Em um experimento, você pode comparar e filtrar execuções para entender como seu modelo funciona e como seu desempenho depende das configurações de parâmetro, dados de entrada e assim por diante. Um modelo é uma coleção de artefatos que representam um modelo de aprendizado de máquina treinado.
Com o MLflow 3, LoggedModels eleva o conceito de um modelo produzido por uma corrida, estabelecendo-o como uma entidade distinta para acompanhar o ciclo de vida do modelo em diferentes execuções de treinamento e avaliação.
- Organize execuções de treinamento com experimentos MLflow
- Rastreie e compare modelos usando Modelos Registrados no MLflow
- Veja os resultados da formação com as sessões do MLflow
- Crie painéis com metadados MLflow em tabelas do sistema
Observação
A partir de 27 de março de 2024, o MLflow impõe um limite de cota para o número total de parâmetros, tags e etapas métricas para todas as execuções novas e existentes e o número total de execuções para todos os experimentos novos e existentes, consulte Limites de recursos. Se você atingir a cota de execuções por experimento, o Databricks recomenda que você exclua execuções que não são mais necessárias usando a API de execução de exclusão em Python. Se você atingir outros limites de cota, o Databricks recomenda ajustar sua estratégia de registro para se manter abaixo do limite. Se você precisar de um aumento para esse limite, entre em contato com sua equipe de conta Databricks com uma breve explicação do seu caso de uso, por que as abordagens de mitigação sugeridas não funcionam e o novo limite solicitado.
API de rastreamento MLflow
A API MLflow Tracking registra parâmetros, métricas, tags e artefatos de uma execução de modelo. A API de rastreamento se comunica com um servidor de rastreamento MLflow. Quando você usa o Databricks, um servidor de rastreamento hospedado no Databricks registra os dados. O servidor de rastreamento MLflow hospedado tem APIs Python, Java e R.
O MLflow é pré-instalado em clusters de ML do Databricks Runtime. Para usar o MLflow em um cluster do Databricks Runtime, você deve instalar a mlflow biblioteca. Para obter instruções sobre como instalar uma biblioteca em um cluster, consulte Instalar uma biblioteca em um cluster. Para usar o MLflow 3 e seus recursos de rastreamento de última geração, certifique-se de atualizar para a versão mais recente (consulte Instalar o MLflow 3).
Onde as execuções do MLflow são registradas
O Databricks fornece um servidor de rastreamento MLflow hospedado que armazena os dados do experimento em seu espaço de trabalho sem a necessidade de configuração. Você também pode configurar o MLflow para usar diferentes servidores de controle quando necessário.
O rastreamento MLflow é controlado por duas configurações:
- URI de rastreamento: determina qual servidor usar (padrão para o espaço de trabalho Databricks atual)
- Experimento: Determina em qual experimento nesse servidor fazer logon
import mlflow
# By default MLflow logs to the Databricks-hosted workspace tracking server. You can connect to a different server using the tracking URI.
mlflow.set_tracking_uri("databricks://remote-workspace-url")
# Set experiment in the tracking server
mlflow.set_experiment("/Shared/my-experiment")
Se nenhum experimento ativo for definido, as execuções serão registradas no experimento do bloco de anotações.
Para obter mais informações sobre como controlar onde os dados MLflow são armazenados, consulte Escolher onde os dados MLflow são armazenados.
Registrar execuções e modelos num experimento
O MLflow pode registrar automaticamente o código de treinamento escrito em muitas estruturas de aprendizado de máquina e aprendizado profundo. Esta é a maneira mais fácil de começar a usar o rastreamento MLflow. Consulte o exemplo de bloco de anotações.
Para obter mais controle sobre quais parâmetros e métricas são registrados ou para registrar artefatos adicionais, como arquivos CSV ou gráficos, use a API de log MLflow. Consulte o exemplo de bloco de anotações.
Use o registro automático para acompanhar o desenvolvimento do modelo
Este bloco de anotações de exemplo mostra como usar o registro automático com scikit-learn. Para obter informações sobre o registro automático com outras bibliotecas Python, consulte a documentação de registro automático MLflow.
MLflow 3
Notebook de registro automático do MLflow em Python para o MLflow 3
MLflow 2.x
Bloco de notas do Python para registo automático com MLflow
Utilizar a API de registos para monitorizar o desenvolvimento do modelo
Este bloco de anotações de exemplo mostra como usar o Python logging API. O MLflow também tem APIs REST, R e Java.
MLflow 3
Caderno Python da API de registo MLflow para o MLflow 3
MLflow 2.x
Caderno Python da API de registo do MLflow
O log é executado em um experimento de espaço de trabalho
Por padrão, quando se treina um modelo num bloco de notas Databricks, as execuções são registadas no experimento do bloco de notas. Apenas as execuções do MLflow iniciadas em um caderno podem ser logadas no experimento do caderno.
As execuções do MLflow iniciadas a partir de qualquer notebook ou das APIs podem ser registadas numa experiência no espaço de trabalho. Para registrar execuções em um experimento de espaço de trabalho, use um código semelhante ao seguinte em seu bloco de anotações ou chamada de API:
experiment_name = "/Shared/name_of_experiment/"
mlflow.set_experiment(experiment_name)
Para obter instruções sobre como criar um experimento de espaço de trabalho, consulte Criar experimento de espaço de trabalho. Para obter informações sobre como ver execuções registradas, consulte Ver experimento de bloco de anotações e Ver experimento de espaço de trabalho.
Analisar execuções do MLflow programaticamente
Você pode acessar dados de execução MLflow programaticamente usando as duas APIs DataFrame a seguir:
- O cliente Python do MLflow search_runs API retorna um DataFrame do pandas.
- A fonte de dados do experimento MLflow retorna um Apache Spark DataFrame.
Este exemplo demonstra como usar o cliente Python MLflow para criar um painel que visualiza as alterações nas métricas de avaliação ao longo do tempo, controla o número de execuções iniciadas por um usuário específico e mede o número total de execuções em todos os usuários:
Por que as métricas e saídas de treinamento do modelo podem variar
Muitos dos algoritmos usados no ML têm um elemento aleatório, como amostragem ou condições iniciais aleatórias dentro do próprio algoritmo. Quando você treina um modelo usando um desses algoritmos, os resultados podem não ser os mesmos com cada execução, mesmo se você iniciar a execução com as mesmas condições. Muitas bibliotecas oferecem um mecanismo de semeadura para fixar as condições iniciais para esses elementos estocásticos. No entanto, pode haver outras fontes de variação que não são controladas pelas sementes. Alguns algoritmos são sensíveis à ordem dos dados, e algoritmos de ML distribuídos também podem ser afetados pela forma como os dados são particionados. Esta variação não é significativa nem importante no processo de desenvolvimento do modelo.
Para controlar a variação causada por diferenças na ordenação e particionamento, use as funções PySpark repartition e sortWithinPartitions.
Exemplos de rastreamento de MLflow
Os blocos de anotações a seguir demonstram como acompanhar o desenvolvimento de modelos usando MLflow.