Acompanhe as execuções de treinamento de ML e deep learning

O componente de rastreamento MLflow permite registrar propriedades, parâmetros, métricas, tags e artefatos de origem relacionados ao treinamento de um modelo de aprendizado de máquina ou aprendizado profundo. Para começar a usar o MLflow, tente um dos tutoriais de início rápido do MLflow.

Rastreamento de MLflow com experimentos e execuções

O rastreamento MLflow é baseado em dois conceitos, experimentos e execuções:

Nota

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.

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.

Nota

O MLflow é 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. Os pacotes específicos a serem instalados para MLflow são:

  • Para Python, selecione Library Source PyPI e insira mlflow no campo Package .
  • Para R, selecione CRAN de origem da biblioteca e insira mlflow no campo Pacote .
  • Para o Scala, instale estes dois pacotes:
    • Selecione Library Source Maven e insira org.mlflow:mlflow-client:1.11.0 no campo Coordenadas .
    • Selecione Library Source PyPI e insira mlflow no campo Package .

Onde as execuções do MLflow são registradas

Todas as execuções MLflow são registradas no experimento ativo, que pode ser definido usando qualquer uma das seguintes maneiras:

Se nenhum experimento ativo for definido, as execuções serão registradas no experimento do bloco de anotações.

Para registrar os resultados do experimento em um servidor de Controle de MLflow hospedado remotamente em um espaço de trabalho diferente daquele em que você está executando o experimento, defina o URI de controle para fazer referência ao espaço de trabalho remoto com mlflow.set_tracking_uri()e defina o caminho para o experimento no espaço de trabalho remoto usando mlflow.set_experiment().

mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")

Se você estiver executando experimentos localmente e quiser registrar os resultados do experimento no servidor Databricks MLflow Tracking, forneça sua instância de espaço de trabalho Databricks (DATABRICKS_HOST) e token de acesso pessoal Databricks (DATABRICKS_TOKEN). Em seguida, você pode definir o URI de rastreamento para fazer referência ao espaço de trabalho com mlflow.set_tracking_uri()e definir o caminho para seu experimento usando mlflow.set_experiment(). Consulte Executar autenticação de token de acesso pessoal do Azure Databricks para obter detalhes sobre onde encontrar valores para as DATABRICKS_HOST variáveis e DATABRICKS_TOKEN de ambiente.

O exemplo de código a seguir demonstra a configuração desses valores:


os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"

mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")

Bloco de notas de exemplo de registo

Este bloco de notas mostra como registar execuções numa experiência de bloco de notas e numa experiência de espaço de trabalho. Somente as execuções do MLflow iniciadas em um bloco de anotações podem ser registradas no experimento do bloco de anotações. As execuções do MLflow iniciadas a partir de qualquer bloco de anotações ou das APIs podem ser registradas em um experimento de espaço de trabalho. Para obter informações sobre como exibir execuções registradas, consulte Exibir experimento de bloco de anotações e Exibir experiência de espaço de trabalho.

Log MLflow executa notebook

Obter o bloco de notas

Você pode usar as APIs MLflow Python, Java ou Scala e R para iniciar execuções e registrar dados de execução. Para obter detalhes, consulte os blocos de anotações de exemplo MLflow.

Acessar o servidor de rastreamento MLflow de fora do Azure Databricks

Você também pode gravar e ler no servidor de rastreamento de fora do Azure Databricks, por exemplo, usando a CLI MLflow. Consulte Acessar o servidor de rastreamento MLflow de fora do Azure Databricks.

Analisar MLflow é executado programaticamente

Você pode acessar dados de execução MLflow programaticamente usando as duas APIs DataFrame a seguir:

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. Geralmente, esta variação não é significativa e não é 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 treinar vários tipos de modelos e rastrear os dados de treinamento no MLflow e como armazenar dados de rastreamento no Delta Lake.