Pular para o conteúdo principal

Acompanhamento de experimentos e observabilidade

Este artigo descreve como usar MLflow, monitorar a integridade da GPU, view logs e gerenciar pontos de verificação de modelos em computação de GPU sem servidor.

Integração do MLflow

compute sem servidor via GPU integra-se nativamente ao MLflow para acompanhamento de experimentos, registro de modelos e visualização de métricas.

Recomendações de configuração:

  • Atualize MLflow para a versão 3.7 ou mais recente e siga os padrões de aprendizagem profunda fluxo de trabalho.

  • Ativar registro automático para PyTorch Lightning:

    Python
    import mlflow
    mlflow.pytorch.autolog()
  • Personalize o nome da sua execução do MLflow encapsulando o código de treinamento do seu modelo dentro do escopo da API mlflow.start_run() . Isso lhe dá controle sobre o nome da execução e permite que você reinicie a partir de uma execução anterior. Você pode personalizar o nome da execução usando o parâmetro run_name em mlflow.start_run(run_name="your-custom-name") ou em bibliotecas de terceiros que suportam MLflow (por exemplo, Hugging Face Transformers). Caso contrário, o nome de execução default é jobTaskRun-xxxxx.

    Python
    from transformers import TrainingArguments
    args = TrainingArguments(
    report_to="mlflow",
    run_name="llama7b-sft-lr3e5", # <-- MLflow run name
    logging_steps=50,
    )
  • A API de GPU serverless inicia automaticamente um experimento MLflow com o nome default /Users/{WORKSPACE_USER}/{get_notebook_name()}. Os usuários podem sobrescrevê-lo com a variável de ambiente MLFLOW_EXPERIMENT_NAME. Sempre use caminhos absolutos para a variável de ambiente MLFLOW_EXPERIMENT_NAME :

    Python
    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
  • Retome o treinamento anterior definindo o MLFLOW_RUN_ID da execução anterior:

    Python
    mlflow.start_run(run_id="<previous-run-id>")
  • Defina o parâmetro step em MLFlowLogger para números de lotes razoáveis. MLflow tem um limite de 10 milhões de métricas dos passos — registrar cada lote em uma grande execução de treinamento pode atingir esse limite. Consulte os limites de recursos.

monitoramento da integridade da GPU

Monitore a utilização e a integridade da GPU diretamente através da interface do usuário Databricks Notebook. As métricas da GPU (utilização, uso de memória, temperatura) estão disponíveis no painel compute quando conectado à computação de GPU sem servidor.

logsde visualização

  • SaídaNotebook — A saída padrão e os erros do seu código de treinamento aparecem na célula de saída do Notebook.
  • logsdo driver — Acessíveis através do painel compute para problemas startup inicialização, problemas de configuração do ambiente e erros de tempo de execução.
  • logsMLflow — incluindo dados de treinamento, parâmetros e artefatos — podem ser visualizados na interface do usuário do experimento MLflow .

Ponto de verificação do modelo

Salve os pontos de verificação do modelo em volumesUnity Catalog, que oferecem a mesma governança que outros objetos Unity Catalog . Use o seguinte formato de caminho para referenciar arquivos em volumes a partir de um Notebook Databricks :

Text
/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Salve os pontos de verificação em volumes da mesma forma que você os salva no armazenamento local.

O exemplo abaixo mostra como gravar um ponto de verificação PyTorch em volumes Unity Catalog :

Python
import torch

checkpoint = {
"epoch": epoch, # last finished epoch
"model_state_dict": model.state_dict(), # weights & buffers
"optimizer_state_dict": optimizer.state_dict(), # optimizer state
"loss": loss, # optional current loss
"metrics": {"val_acc": val_acc}, # optional metrics
# Add scheduler state, RNG state, and other metadata as needed.
}
checkpoint_path = "/Volumes/my_catalog/my_schema/model/checkpoints/ckpt-0001.pt"
torch.save(checkpoint, checkpoint_path)

Essa abordagem também funciona para pontos de verificação distribuídos. O exemplo abaixo mostra o checkpointing de modelos distribuídos com a API Torch Distributed Checkpoint:

Python
import torch.distributed.checkpoint as dcp

def save_checkpoint(self, checkpoint_path):
state_dict = self.get_state_dict(model, optimizer)
dcp.save(state_dict, checkpoint_id=checkpoint_path)

trainer.save_checkpoint("/Volumes/my_catalog/my_schema/model/checkpoints")

Colaboração multiusuário

  • Para garantir que todos os usuários possam acessar o código compartilhado (por exemplo, módulos auxiliares ou arquivos YAML de ambiente), armazene-os em /Workspace/Shared em vez de pastas específicas do usuário como /Workspace/Users/<your_email>/.
  • Para código que está em desenvolvimento ativo, use pastas Git em pastas específicas do usuário /Workspace/Users/<your_email>/ e envie para repositórios Git remotos. Isso permite que vários usuários tenham um clone e um branch específicos para cada usuário, enquanto ainda utilizam um repo Git remoto para controle de versão. Consulte as melhores práticas para usar o Git no Databricks.
  • Os colaboradores podem compartilhar e comentar no Notebook.

Limites globais no Databricks

Consulte os limites de recursos.