gerencia código de treinamento com MLflow execução

Este artigo descreve a execução do MLflow para gerenciamento de treinamento machine learning . Ele também inclui orientações sobre como gerenciar e comparar a execução entre os experimentos.

Uma execução do MLflow corresponde a uma única execução do código do modelo. Cada execução registra a seguinte informação:

  • Source: Nome do Notebook que iniciou a execução ou o nome do projeto e ponto de entrada para a execução.

    • Versão: Git commit hash se Notebook estiver armazenado em uma pasta Git da Databricks ou execução de um projeto MLflow. Caso contrário, Notebook revisão.

    • começar & end time: começar e fim da corrida.

    • Parâmetros: Parâmetros do modelo salvos como valor- keypar. Tanto key quanto os valores são strings.

    • Métricas: métricas de avaliação do modelo salvas como valor- keypar. O valor é numérico. Cada indicador pode ser atualizado ao longo da execução (por exemplo, para rastrear como a função de perda do seu modelo está convergindo), e o MLflow registra e permite que você visualize o histórico do indicador.

    • tags: metadados de execução salvos como valor- keypar. Você pode atualizar tags durante e após a conclusão de uma execução. Tanto key quanto os valores são strings.

    • Artefatos: Arquivos de saída em qualquer formato. Por exemplo, você pode gravar imagens, modelos (por exemplo, um modelo Scikit-Learn em conserva) e arquivos de dados (por exemplo, um arquivo Parquet) como um artefato.

Todas as execuções do MLflow são logs do experimento ativo. Se você não definiu explicitamente um experimento como o experimento ativo, a execução é logs do experimento Notebook .

Ver execução

Você pode acessar uma execução de sua página de experimento pai ou diretamente do Notebook que criou a execução.

Na página de experimentos, na tabela de corridas, clique no tempo de início de uma corrida.

No Notebook, clique em link externo ao lado da data e hora da execução na barra lateral Experiment Runs.

A tela de execução mostra os parâmetros usados para a execução, as métricas resultantes da execução e quaisquer tags ou notas. Para exibir Notes, Parameters, métricas, ou tags para esta execução, clique em seta apontando para a direita à esquerda do rótulo.

Você também acessa artefatos salvos de uma execução nesta tela.

view execução

Snippets de código para previsão

Se o senhor registrar um modelo de uma execução, o modelo aparecerá na seção Artifacts (Artefatos ) dessa página. Para exibir trechos de código que ilustram como carregar e usar o modelo para fazer previsões no Spark e no Pandas DataFrames, clique no nome do modelo.

prever trechos de código

Visualize o projeto Notebook ou Git usado para uma execução

Para view a versão do Notebook que criou uma execução:

  • Na página da experiência, clique no link na coluna Origem .

  • Na página de execução, clique no link ao lado de Origem.

  • No notebook, na barra lateral Experiment Runs, clique no ícone Notebook Ícone da Versão do Notebook na caixa para essa execução de experimento.

A versão do Notebook associada à execução aparece na janela principal com uma barra de destaque mostrando a data e a hora da execução.

Se a execução foi iniciada remotamente a partir de um projeto Git, clique no link no campo Git commit para abrir a versão específica do projeto usado na execução. O link no campo Origem abre a ramificação principal do projeto Git usado na execução.

Adicionar tags a uma execução

tags são valores- keypar que você pode criar e usar posteriormente para pesquisar a execução.

  1. Na página de execução, clique em ícone tags se ainda não estiver aberto. A tabela de tags é exibida.

    tabela de tags
  2. Clique nos campos Nome e Valor e digite a key e o valor de suas tags.

  3. Clique em Adicionar.

    adicionar tags

Editar ou excluir tags para uma execução

Para editar ou excluir tags existentes, use os ícones na coluna Ações .

ações tags

Reproduza o ambiente de software de uma execução

Você pode reproduzir o ambiente de software exato para a execução clicando em Reproduzir execução. A seguinte caixa de diálogo é exibida:

Reproduzir caixa de diálogo de execução

Com as configurações default , ao clicar em Confirmar:

  • O Notebook é clonado no local mostrado na caixa de diálogo.

  • Se os clusters originais ainda existirem, o Notebook clonado é anexado aos clusters originais e os clusters começam.

  • Caso os clusters originais não existam mais, um novo clusters com a mesma configuração, incluindo as bibliotecas instaladas, é criado e começa. O Notebook é anexado aos novos clusters.

Você pode selecionar um local diferente para o Notebook clonado e inspecionar a configuração clusters e as bibliotecas instaladas:

  • Para selecionar uma pasta diferente para salvar o Notebook clonado, clique em Editar pasta.

  • Para ver as especificações clusters , clique em view Spec. Para clonar apenas o Notebook e não os clusters, desmarque esta opção.

  • Para ver as bibliotecas instaladas nos clusters originais, clique em view bibliotecas. Se você não se importa em instalar as mesmas bibliotecas dos clusters originais, desmarque esta opção.

gerentes execução

Renomear execução

Para renomear uma execução, clique em ícone de três botões no canto superior direito da página de execução e selecione Renomear.

Execução do filtro

Você pode pesquisar a execução com base nos valores de parâmetro ou métrica. Você também pode pesquisar a execução por tags.

  • Para pesquisar uma execução que corresponda a uma expressão contendo valores de parâmetro e métrica, insira uma query no campo de pesquisa e clique em Pesquisar. Alguns exemplos de sintaxe query são:

    metrics.r2 > 0.3

    params.elasticNetParam = 0.5

    params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3

    MIN(metrics.rmse) <= 1

    MAX(metrics.memUsage) > 0.9

    LATEST(metrics.memUsage) = 0 AND MIN(metrics.rmse) <= 1

    Em default, os valores métricos são filtrados com base no último valor de registros. O uso de MIN ou MAX permite que o senhor procure a execução com base nos valores métricos mínimos ou máximos, respectivamente. Somente os registros de execução após agosto de 2024 têm valores mínimos e máximos de métricas.

  • Para pesquisar a execução por tags, digite tagss no formato: tags.<key>="<value>". os valores strings devem ser colocados entre aspas, conforme mostrado.

    tags.estimator_name="RandomForestRegressor"

    tags.color="blue" AND tags.size=5

    Tanto key quanto os valores podem conter espaços. Se a key incluir espaços, você deve colocá-la entre acentos graves, conforme mostrado.

    tags.`my custom tag` = "my value"
    

Você também pode filtrar execuções com base em seu estado (Ativo ou Excluído) e se uma versão de modelo está associada à execução. Para fazer isso, faça suas seleções nos menus suspensos State e Time Created , respectivamente.

Execução do filtro

downloads execução

  1. Selecione uma ou mais execuções.

  2. Clique em downloads CSV. Um arquivo CSV contendo os seguintes campos downloads:

    Run ID,Name,Source Type,Source Name,User,Status,<parameter1>,<parameter2>,...,<metric1>,<metric2>,...
    

Excluir execução

O senhor pode excluir a execução usando a interface do usuário Databricks Mosaic AI com os seguintes passos:

  1. No experimento, selecione uma ou mais execuções clicando na caixa de seleção à esquerda da execução.

  2. Clique em Excluir.

  3. Se a execução for uma execução pai, decida se também deseja excluir execuções descendentes. Esta opção é selecionada por default.

  4. Clique em Excluir para confirmar. A execução excluída é salva por 30 dias. Para exibir a execução excluída, selecione Excluído no campo Estado.

Execução de exclusão em massa com base no horário de criação

O senhor pode usar o site Python para excluir em massa as execuções de um experimento que foram criadas antes ou em um carimbo de data/hora do UNIX. Usando o site Databricks Runtime 14.1 ou posterior, o senhor pode chamar o mlflow.delete_runs API para excluir a execução e retornar o número de execuções excluídas.

Os parâmetros mlflow.delete_runs são os seguintes:

  • experiment_id: O ID do experimento que contém a execução a ser excluída.

  • max_timestamp_millis: O registro de data e hora máximo de criação em milissegundos desde a época do UNIX para excluir a execução. Somente as execuções criadas antes ou nesse registro de data e hora são excluídas.

  • max_runs: Opcional. Um número inteiro positivo que indica o número máximo de execuções a serem excluídas. O valor máximo permitido para max_runs é 10000. Se não for especificado, max_runs tem como padrão 10000.

import mlflow

# Replace <experiment_id>, <max_timestamp_ms>, and <max_runs> with your values.
runs_deleted = mlflow.delete_runs(
  experiment_id=<experiment_id>,
  max_timestamp_millis=<max_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_deleted = mlflow.delete_runs(
  experiment_id="4183847697906956",
  max_timestamp_millis=1711990504000,
  max_runs=10
)

Usando o Databricks Runtime 13.3 LTS ou anterior, o senhor pode executar o seguinte código de cliente em um Databricks Notebook.

from typing import Optional

def delete_runs(experiment_id: str,
                max_timestamp_millis: int,
                max_runs: Optional[int] = None) -> int:
    """
    Bulk delete runs in an experiment that were created prior to or at the specified timestamp.
    Deletes at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to delete.
    :param max_timestamp_millis: The maximum creation timestamp in milliseconds
                                 since the UNIX epoch for deleting runs. Only runs
                                 created prior to or at this timestamp are deleted.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to delete. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs deleted.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request

    json_body = {"experiment_id": experiment_id, "max_timestamp_millis": max_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/delete-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_deleted"]

Consulte a documentação da API Databricks Experiments para parâmetros e especificações de valor de retorno para exclusão de execução com base no horário de criação.

Restaurar execução

O senhor pode restaurar a execução excluída anteriormente usando a interface de usuário Databricks Mosaic AI.

  1. Na página Experimento , selecione Excluído no campo Estado para exibir a execução excluída.

  2. Selecione uma ou mais execuções clicando na caixa de seleção à esquerda da execução.

  3. Clique em Restaurar.

  4. Clique em Restaurar para confirmar. Para exibir a execução restaurada, selecione Ativo no campo Estado.

Execução de restauração em massa com base no horário de exclusão

O senhor também pode usar o site Python para restaurar em massa a execução de um experimento que foi excluído em ou após um carimbo de data/hora do UNIX. Usando o site Databricks Runtime 14.1 ou posterior, o senhor pode chamar o mlflow.restore_runs API para restaurar a execução e retornar o número da execução restaurada.

Os parâmetros mlflow.restore_runs são os seguintes:

  • experiment_id: O ID do experimento que contém a execução a ser restaurada.

  • min_timestamp_millis: O registro de data e hora mínimo de exclusão em milissegundos desde a época do UNIX para restaurar a execução. Somente as execuções excluídas nesse momento ou após esse registro de data e hora são restauradas.

  • max_runs: Opcional. Um número inteiro positivo que indica o número máximo de execuções a serem restauradas. O valor máximo permitido para max_runs é 10000. Se não for especificado, o padrão de max_runs é 10000.

import mlflow

# Replace <experiment_id>, <min_timestamp_ms>, and <max_runs> with your values.
runs_restored = mlflow.restore_runs(
  experiment_id=<experiment_id>,
  min_timestamp_millis=<min_timestamp_ms>,
  max_runs=<max_runs>
)
# Example:
runs_restored = mlflow.restore_runs(
  experiment_id="4183847697906956",
  min_timestamp_millis=1711990504000,
  max_runs=10
)

Usando o Databricks Runtime 13.3 LTS ou anterior, o senhor pode executar o seguinte código de cliente em um Databricks Notebook.

from typing import Optional

def restore_runs(experiment_id: str,
                 min_timestamp_millis: int,
                 max_runs: Optional[int] = None) -> int:
    """
    Bulk restore runs in an experiment that were deleted at or after the specified timestamp.
    Restores at most max_runs per request.

    :param experiment_id: The ID of the experiment containing the runs to restore.
    :param min_timestamp_millis: The minimum deletion timestamp in milliseconds
                                 since the UNIX epoch for restoring runs. Only runs
                                 deleted at or after this timestamp are restored.
    :param max_runs: Optional. A positive integer indicating the maximum number
                     of runs to restore. The maximum allowed value for max_runs
                     is 10000. If not specified, max_runs defaults to 10000.
    :return: The number of runs restored.
    """
    from mlflow.utils.databricks_utils import get_databricks_host_creds
    from mlflow.utils.request_utils import augmented_raise_for_status
    from mlflow.utils.rest_utils import http_request
    json_body = {"experiment_id": experiment_id, "min_timestamp_millis": min_timestamp_millis}
    if max_runs is not None:
        json_body["max_runs"] = max_runs
    response = http_request(
        host_creds=get_databricks_host_creds(),
        endpoint="/api/2.0/mlflow/databricks/runs/restore-runs",
        method="POST",
        json=json_body,
    )
    augmented_raise_for_status(response)
    return response.json()["runs_restored"]

Consulte a documentação da API Databricks Experiments para parâmetros e especificações de valor de retorno para restaurar a execução com base no tempo de exclusão.

Comparar execução

Você pode comparar a execução de um único experimento ou de vários experimentos. A página Comparando a execução apresenta informações sobre a execução selecionada em formato gráfico e tabular. Você também pode criar visualizações de resultados de execução e tabelas de informações de execução, parâmetros de execução e métricas.

Para criar uma visualização:

  1. Selecione o tipo de gráfico (gráfico de coordenadas paralelas, Scatter gráfico ou Contour gráfico).

    1. Para um gráfico de coordenadas paralelas, selecione os parâmetros e métricas a serem gráficas. A partir daqui, você pode identificar relacionamentos entre os parâmetros e métricas selecionados, o que ajuda a definir melhor o espaço de ajuste de hiperparâmetros para seus modelos.

      comparar a visualização da página de execução
    2. Para um gráfico de dispersão ou gráfico de contorno, selecione o parâmetro ou medição a ser exibido em cada eixo.

As tabelas Parâmetros e Métricas exibem os parâmetros e métricas de execução de todas as execuções selecionadas. As colunas nessas tabelas são identificadas pela tabela de detalhes da execução imediatamente acima. Para simplificar, você pode ocultar parâmetros e métricas idênticos em todas as execuções selecionadas alternando Botão Mostrar somente diferenças.

comparar tabelas de páginas de execução

Comparar a execução de um único experimento

  1. Na página da experiência, selecione duas ou mais execuções clicando na caixa de seleção à esquerda da execução ou selecione todas as execuções marcando a caixa na parte superior da coluna.

  2. Clique em Comparar. A tela Comparando a execução <N> é exibida.

Compare a execução de vários experimentos

  1. Na página de experiências, selecione as experiências que deseja comparar clicando na caixa à esquerda do nome da experiência.

  2. Clique em Comparar (n) (n é o número de experimentos que você selecionou). Aparece uma tela mostrando toda a execução dos experimentos que você selecionou.

  3. Selecione duas ou mais execuções clicando na caixa de seleção à esquerda da execução ou selecione todas as execuções marcando a caixa na parte superior da coluna.

  4. Clique em Comparar. A tela Comparando a execução <N> é exibida.

Copiar execução entre áreas de trabalho

Para importar ou exportar a execução do MLflow para ou do seu workspace do Databricks, você pode usar o projeto de código aberto orientado pela comunidade MLflow Export-Import.