Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O AI Runtime integra-se com o MLflow para fornecer rastreamento e observabilidade de experimentos. O MLflow fornece um único local para os parâmetros de uma execução, métricas, métricas do sistema GPU, logs e artefactos, quer desenvolva num notebook, submeta uma carga de trabalho com a databricks air CLI ou agende um trabalho.
O que o MLflow oferece
Uma experiência do MLflow agrupa as execuções de treino relacionadas, e cada execução fornece um registo persistente da configuração e dos resultados do treino.
- Métricas e parâmetros: Registar a perda de treino, métricas de avaliação, taxas de aprendizagem e hiperparâmetros, e depois compare-os entre as execuções.
- Métricas do sistema: Veja a utilização da GPU, CPU e memória para execuções geridas no separador de métricas do sistema .
- Logs: Veja a saída do driver para uma carga de trabalho suportada por uma tarefa no separador Logs da execução.
- Artefactos e modelos: Armazenar ficheiros de modelo, configurações e outras saídas com a execução. Utilize um volume do Unity Catalog para artefactos grandes ou duráveis.
- Partilha e colaboração: Conceda acesso a um experimento para que outros utilizadores do espaço de trabalho possam visualizar e comparar as suas execuções. Consulte Organize treinos com experimentos do MLflow.
- Integrações com frameworks: Use integrações MLflow com Hugging Face Transformers, PyTorch Lightning e outras bibliotecas suportadas.
Para cargas de trabalho suportadas por tarefas, como cargas submetidas com databricks air run, a execução da tarefa no Azure Databricks complementa o MLflow ao registar o estado de execução, computação, tentativas e saída do driver.
Como são criadas as execuções do MLflow
A forma como inicias ou participas numa run do MLflow depende de como inicias o workload:
| Como executa a carga de trabalho | Como começa a execução do MLflow | Como selecionar a experiência |
|---|---|---|
Databricks CLI (databricks air run) |
Cada tentativa cria automaticamente uma execução. | Defina experiment_name no YAML da carga de trabalho. |
Notebook com o Databricks AI Runtime SDK (.distributed()) |
Cada chamada cria automaticamente uma execução. | Invoque mlflow.set_experiment() antes de .distributed(), ou defina MLFLOW_EXPERIMENT_NAME. |
| Código executado diretamente num notebook anexado | Nenhuma execução é criada automaticamente. Usar mlflow.start_run() ou autologging. |
Chama mlflow.set_experiment() no portátil. |
Agendado ai_runtime_task |
A tarefa cria automaticamente uma execução. | Defina experiment na configuração da tarefa. Veja a tarefa de execução de IA. |
Depois de o seu código iniciar ou se juntar à execução correta, use a API de rastreamento MLflow para registar dados de treino personalizados. Para frameworks suportados, pode usar o autologging em vez de adicionar chamadas de registo individuais. Para padrões de deep learning, veja o fluxo de trabalho de deep learning do MLflow 3.
Utilize as seguintes práticas ao configurar o rastreamento MLflow:
- Defina
steppara um valor significativo, como o lote global ou época. Registo a intervalos em vez de a cada lote. O MLflow limita o número de passos de métricas por execução. Consulte Limites de recursos. - Para treino distribuído, regista uma métrica apenas a partir do rank 0 para que cada valor seja registado uma vez.
- Para fluxos de trabalho de notebook, use caminhos absolutos do experimento, como
/Users/<username>/my-experimentou/Workspace/Shared/<team>/my-experiment. Coloca os experimentos que queres partilhar numa pasta de área de trabalho partilhada. - Armazene pontos de verificação grandes e duráveis num volume do Unity Catalog. Para padrões de checkpointing, veja Melhorar o desempenho do treino e a resiliência no AI Runtime.
Note
Utilize o MLflow 3.7 ou superior para os exemplos desta página.
Monitorizar cargas de trabalho da CLI do Databricks
Quando submetes uma carga de trabalho com databricks air run, o AI Runtime cria uma execução de tarefa no Azure Databricks com os detalhes da execução e uma execução MLflow para dados de experiências. A submissão original e as suas tentativas partilham uma execução de tarefa, enquanto cada tentativa cria uma execução separada de MLflow no mesmo experimento para que possas comparar tentativas.
As métricas do sistema de GPU, CPU e memória são capturadas automaticamente para cada execução gerida e aparecem no separador de métricas do Sistema MLflow.
Configurar e iniciar sessão no run
Use o YAML da carga de trabalho para selecionar o experimento e, opcionalmente, configurar o nome da execução e a localização do artefacto. O exemplo seguinte mostra apenas os campos MLflow:
experiment_name: my-training
mlflow_run_name: baseline-lr3e5
mlflow_artifact_location: /Volumes/main/default/mlflow-artifacts/my-training
Para requisitos de campo, predefinições e valores suportados, consulte referência do YAML de Workload.
O AI Runtime expõe o ID da execução gerida através de MLFLOW_RUN_ID. Para registares os teus próprios parâmetros, métricas e artefactos nessa execução, reabre-a com a API de rastreamento do MLflow:
import os
import mlflow
# Log from rank 0 only because all nodes share the same MLFLOW_RUN_ID.
if os.environ.get("RANK", "0") == "0":
with mlflow.start_run(run_id=os.environ["MLFLOW_RUN_ID"]):
mlflow.log_param("learning_rate", 3e-4)
for step, loss in enumerate(training_losses):
mlflow.log_metric("train_loss", loss, step=step)
Encontre execuções e registos
Os registos estão disponíveis tanto através da CLI Databricks como da página de execução do MLflow. Utilize os seguintes comandos para encontrar cargas de trabalho, inspecionar uma carga de trabalho e transmitir ou descarregar registos:
databricks air list --all-status
databricks air get <job-run-id>
databricks air logs <job-run-id>
databricks air logs <job-run-id> --node 2
databricks air logs <job-run-id> --download-to ./logs/
Acompanhar as cargas de trabalho dos notebooks
A partir de um notebook, pode executar código diretamente na sessão anexada ou executar treino distribuído através do decorador @distributed a partir do Databricks AI Runtime SDK.
Executar código diretamente num notebook
O código executado diretamente num caderno associado não cria automaticamente um MLflow run. Selecione um experimento, depois inicie uma execução ou ative o autologging:
import mlflow
mlflow.set_experiment("/Users/<username>/my-experiment")
with mlflow.start_run(run_name="baseline"):
train()
Para ativar o autoregisto do PyTorch Lightning, use o seguinte padrão:
mlflow.pytorch.autolog()
with mlflow.start_run(run_name="lightning-baseline"):
trainer.fit(model, datamodule=datamodule)
Para Hugging Face Transformers, configure TrainingArguments da seguinte forma:
from transformers import TrainingArguments
args = TrainingArguments(
output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
report_to="mlflow",
run_name="llama7b-sft-lr3e5",
logging_steps=50,
)
Utilize o SDK de Runtime de IA Databricks
Para treino distribuído a partir de um notebook, use o decorador @distributed do Databricks AI Runtime SDK (databricks-sdk-air). O SDK está disponível no databricks.air namespace no ambiente GPU versão 6 e superior, ou como serverless_gpu no ambiente GPU versão 5 e inferior.
from databricks.air import distributed
@distributed()
def train():
# Training code
...
train.distributed()
Cada chamada a .distributed() cria automaticamente uma execução do MLflow. O experimento padrão é /Users/{WORKSPACE_USER}/{notebook-name}. Para selecionar outro experimento, defina-o antes de chamar .distributed():
mlflow.set_experiment("/Users/<username>/my-experiment")
train.distributed()
Quando chama .distributed() dentro de uma execução ativa, o Runtime da IA cria uma execução filha aninhada:
with mlflow.start_run() as parent_run:
train.distributed()
Para retomar uma execução anterior, defina MLFLOW_RUN_ID antes de .distributed():
import os
os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
train.distributed()
Utilize o link de execução na saída da célula ou o painel Experiment do notebook para abrir a execução do MLflow.
Ver registos
- Saída do notebook: A saída padrão e os erros do código de treinamento aparecem na saída da célula do notebook.
-
MLflow logs: Para cargas de trabalho de notebook suportadas por job, como chamadas
.distributed(remote=True), o separador MLflow Logs mostra a saída da execução do job associado.
Monitorizar os recursos da GPU em tempo real
O painel de recursos da GPU do portátil mostra a utilização em tempo real da GPU, memória e temperatura para cargas de trabalho de nó único e de vários nós. Utilize o separador de métricas do Sistema MLflow quando precisar de um registo persistente ligado a uma execução.
Para abrir o painel, liga o notebook ao AI Runtime, depois clica no , Recursos da GPU, no painel lateral direito.
O painel consulta as métricas a cada 10 segundos e mantém até 2 horas de histórico. Clique Atualize para obter os valores mais recentes. Após 5 minutos de inatividade, o painel pára. Reabra-o para retomar a monitorização.
Resolução de problemas do acesso aos registos
O separador Logs na página de execução do MLflow apresenta em fluxo a saída da execução da tarefa associada do Azure Databricks. O acesso ao experimento MLflow não implica acesso à tarefa.
Se o separador mostrar que não tens acesso a esses registos, pede a um utilizador com permissão Pode gerir ou a um administrador de espaço de trabalho para te conceder pelo menos Pode ver no trabalho. Consulte Controlar o acesso a um trabalho.
Limites globais no Azure Databricks
Consulte Limites de recursos.