Rastreio e observabilidade de experimentos

Importante

Este recurso está no Public Preview.

O rastreamento de experiências e a observabilidade estão integrados no tempo de execução da IA. O MLflow é um único local para os parâmetros de uma execução, métricas, métricas do sistema GPU, logs e artefactos. Cada execução está num experimento MLflow que podes partilhar com a tua equipa, e um painel de recursos da GPU integrado mostra a utilização em tempo real da GPU, memória e temperatura enquanto o teu código corre.

Pontos-chave nesta página:

  • O MLflow é a interface unificada para experiências em tempo de execução de IA: métricas, parâmetros, métricas do sistema, registos e artefactos.
  • Cargas de trabalho submetidas com a CLI Databricks recebem automaticamente uma execução MLflow. Em cadernos e guiões, chamar mlflow.start_run() ou mlflow.autolog().
  • Um painel de recursos da GPU incorporado mostra utilização, memória e temperatura.

O que o MLflow oferece para aprendizagem profunda

  • Métricas e parâmetros: Registar a perda de treino, métricas de avaliação, taxa de aprendizagem e hiperparâmetros, e compará-los entre execuções na interface do MLflow.
  • Métricas do sistema: a utilização da GPU, da CPU e da memória é registada a par das suas métricas de treino no separador Métricas do sistema da execução.
  • Registos: Saída do controlador da execução da tarefa no separador Registos da execução.
  • Artefactos e modelos: Armazena ficheiros de modelo, configurações e outras saídas durante a execução. Os artefactos podem ser armazenados num volume do Unity Catalog.
  • Partilha e colaboração: As experiências são objetos de espaço de trabalho. Conceda aos colegas de equipa acesso a uma experiência para partilhar corridas e comparar resultados. Consulte Organize treinos com experimentos do MLflow.
  • Integrações de frameworks: Hugging Face Transformers, PyTorch Lightning e outras bibliotecas fazem login diretamente no MLflow.

Para padrões de deep learning no MLflow 3, veja o fluxo de trabalho de aprendizagem profunda do MLflow 3.

Preciso de adicionar código MLflow?

Depende de como submetes a carga de trabalho:

Como corres A corrida MLflow foi criada automaticamente? O que adiciona
Databricks CLI (databricks air run) Yes. experiment_name no YAML da carga de trabalho configura o experimento, e as métricas e os registos do sistema são captados sem escrever código. Optional. Registar métricas personalizadas na execução MLFLOW_RUN_ID. Veja Track runs com MLflow e a página de Jobs run.
API de GPU serverless (@distributed) Yes. Cada chamada a .distributed() cria uma execução. Optional. Regista métricas personalizadas dentro da função.
Caderno ou script num único nó No. O autologging não está ativado automaticamente em computação serverless. Chamar mlflow.start_run() e registar métricas, ou chamar mlflow.autolog().

Introdução

Usa MLflow 3.7 e superiores. Os exemplos seguintes estão prontos para copiar para uma célula de caderno ou para um script Python.

Registar métricas de um ciclo de treino

import mlflow

mlflow.set_experiment("/Users/<username>/my-experiment")

with mlflow.start_run(run_name="baseline-lr3e-4"):
    mlflow.log_params({"learning_rate": 3e-4, "batch_size": 32, "epochs": 3})
    for epoch in range(3):
        train_loss = train_one_epoch(model, train_loader, optimizer)  # your training code
        val_loss = evaluate(model, val_loader)
        mlflow.log_metrics({"train_loss": train_loss, "val_loss": val_loss}, step=epoch)

Usar autologging

No PyTorch Lightning, chame mlflow.pytorch.autolog() antes do treino. Para outras bibliotecas suportadas, contacte mlflow.autolog().

import mlflow

mlflow.pytorch.autolog()

with mlflow.start_run(run_name="lightning-baseline"):
    trainer.fit(model, datamodule=datamodule)

Registo do Hugging Face Transformers

Defina report_to="mlflow". O argumento run_name define o nome da execução MLflow.

from transformers import TrainingArguments

args = TrainingArguments(
    output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
    report_to="mlflow",
    run_name="llama7b-sft-lr3e5",
    logging_steps=50,
)

Registo de várias GPUs

No treino distribuído, todos os processos executam o seu código de treino. Registar apenas do rank 0 para que cada métrica seja registada apenas uma vez:

import os

import mlflow

if int(os.environ.get("RANK", "0")) == 0:
    mlflow.log_metric("train_loss", loss, step=step)

Melhores práticas

  • Defina step para um valor significativo, como o lote global ou época, e registre a intervalos (por exemplo, a cada 50 passos) em vez de a cada lote. O MLflow limita o número de passos de métricas por execução. Consulte Limites de recursos.
  • Use caminhos experimentais absolutos, como /Users/<username>/my-experiment ou /Workspace/Shared/<team>/my-experiment. Coloque os experimentos que pretende partilhar numa pasta partilhada.
  • Para retomar uma execução anterior, passe o seu ID: mlflow.start_run(run_id="<previous-run-id>").

Serverless GPU API

Quando utiliza a API Serverless GPU, cada chamada para .distributed() cria automaticamente uma execução do MLflow. O experimento padrão é /Users/{WORKSPACE_USER}/{notebook-name}.

  • Se chamar .distributed() dentro de uma execução MLflow ativa, cria-se uma execução filha aninhada sob essa execução:

    import mlflow
    
    with mlflow.start_run() as outer_run:
        run_train.distributed()  # creates a nested child run under outer_run
    
  • Para usar um experimento diferente, chame mlflow.set_experiment() antes de .distributed(), ou defina a variável de ambiente MLFLOW_EXPERIMENT_NAME. Usa sempre caminhos absolutos.

    import os
    
    import mlflow
    
    mlflow.set_experiment("/Users/<username>/my-experiment")
    # or: os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    run_train.distributed()
    
  • Para retomar uma execução anterior, defina MLFLOW_RUN_ID antes de chamar .distributed():

    os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
    run_train.distributed()
    

Registos de visualização

  • Saída do notebook: A saída padrão e os erros padrão do seu código de treino são apresentados na saída da célula do notebook.
  • Registos MLflow: A interface do experimento MLflow apresenta métricas de treino, parâmetros e artefactos.

Se não conseguires ver registos

O separador Logs na página de execução do MLflow transmite os logs da execução de trabalhos Databricks associada à execução do MLflow, pelo que o acesso é governado pelas permissões desse trabalho. Se o separador mostrar Não tem acesso a estes registos, então não tem permissões suficientes.

O acesso à execução no MLflow não implica acesso ao trabalho. Pode ter a permissão da experiência do MLflow e, ainda assim, ser-lhe negado o acesso aos registos. Para obter acesso, pede a um utilizador com permissões de Gestão Possível ou a um administrador de espaço de trabalho para te conceder pelo menos a Visualização Pode no trabalho. Consulte Acesso de Controlo a um trabalho para saber como as permissões são concedidas.

Monitorizar recursos da GPU

O painel de recursos da GPU é uma funcionalidade de conveniência para sessões de notebook. Mostra a saúde e utilização da GPU em tempo real sem qualquer configuração de MLflow, por isso é especialmente útil quando a tua sessão de notebook não cria uma experiência MLflow. Para um registo persistente de métricas de GPU, CPU e memória associadas a uma execução, use antes o separador Métricas do sistema do MLflow. O painel suporta tanto cargas de trabalho de nó único como de múltiplos nós.

Para abrir o painel, liga o teu portátil ao AI Runtime e depois clica no ícone do chip.Recursos da GPU no painel lateral direito.

Painel de recursos da GPU que mostra a utilização, memória e métricas de temperatura para cada GPU.

O painel mostra as seguintes métricas para cada GPU:

  • Percentagem de utilização da GPU
  • Utilização da memória da GPU
  • Temperatura

O painel consulta as métricas a cada 10 segundos e mantém até 2 horas de histórico. Clica no ícone de atualizar.Atualize para obter imediatamente os valores mais recentes. Após 5 minutos de inatividade, o vidro faz uma pausa; Reabra para retomar a monitorização.

Limites globais no Azure Databricks

Consulte Limites de recursos.