Seguimiento de experimentos y observabilidad

Importante

El entorno de ejecución de IA para tareas de nodo único está en versión preliminar pública. La API de entrenamiento distribuido para cargas de trabajo de varias GPU permanece en beta.

En esta página se describe cómo usar MLflow, ver registros, administrar puntos de control de modelo y supervisar recursos de GPU en el entorno de ejecución de IA.

Integración de MLflow

AI Runtime se integra de forma nativa con MLflow para el seguimiento de experimentos, el registro de modelos y la visualización de métricas.

Recomendaciones de configuración:

  • Actualice MLflow a la versión 3.7 o posterior y siga los patrones de flujo de trabajo de aprendizaje profundo.

  • Habilite el registro automático para PyTorch Lightning:

    import mlflow
    mlflow.pytorch.autolog()
    
  • Personalice el nombre de ejecución de MLflow encapsulando el código de entrenamiento del modelo dentro del ámbito de la mlflow.start_run() API. Esto le proporciona control sobre el nombre de ejecución y le permite reiniciar desde una ejecución anterior. Puede personalizar el nombre de ejecución mediante el run_name parámetro en mlflow.start_run(run_name="your-custom-name") o en bibliotecas de terceros que admitan MLflow (por ejemplo, Hugging Face Transformers). De lo contrario, el nombre de ejecución predeterminado es jobTaskRun-xxxxx.

    from transformers import TrainingArguments
    args = TrainingArguments(
        report_to="mlflow",
        run_name="llama7b-sft-lr3e5",  # <-- MLflow run name
        logging_steps=50,
    )
    
  • La API de GPU sin servidor inicia automáticamente un experimento de MLflow con el nombre /Users/{WORKSPACE_USER}/{get_notebook_name()}predeterminado . Los usuarios pueden sobrescribirlo con la variable de entorno MLFLOW_EXPERIMENT_NAME. Use siempre rutas de acceso absolutas para la variable de entorno MLFLOW_EXPERIMENT_NAME.

    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    
  • Reanude el entrenamiento anterior configurando el MLFLOW_RUN_ID de la ejecución previa.

    mlflow.start_run(run_id="<previous-run-id>")
    
  • Establezca el step parámetro en MLFlowLogger a valores razonables por lotes. MLflow tiene un límite de 10 millones de pasos de métricas: el registro de cada lote en grandes ejecuciones de entrenamiento puede alcanzar este límite. Consulte Límites de los recursos.

Visualización de registros

  • Salida del cuaderno : la salida estándar y los errores del código de entrenamiento aparecen en la salida de la celda del cuaderno.
  • Registros de MLflow : la interfaz de usuario del experimento de MLflow muestra métricas de entrenamiento, parámetros y artefactos.

Control de modelos

Guarde los puntos de control del modelo en volúmenes de Catálogo de Unity, que proporcionan la misma gobernanza que otros objetos de Catálogo de Unity. Usa el siguiente formato de ruta para referenciar archivos en volúmenes desde un notebook de Databricks:

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

Guarde los puntos de control en volúmenes de la misma manera que los guarde en el almacenamiento local.

En el ejemplo siguiente se muestra cómo escribir un punto de control de PyTorch en volúmenes del catálogo de Unity:

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)

Este enfoque también funciona para los puntos de control distribuidos. En el ejemplo siguiente se muestra la creación de puntos de control de modelos distribuidos con torch Distributed Checkpoint API:

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")

Supervisión de recursos de GPU

Use el panel recursos de GPU para supervisar el estado y el uso de LA GPU mientras el código se ejecuta en el entorno de ejecución de IA. El panel admite cargas de trabajo de nodo único y de varios nodos.

Para abrir el panel, conecte el cuaderno a AI Runtime y, a continuación, haga clic en el icono chip.Recursos de GPU en el panel derecho.

Panel de recursos de GPU que muestra las métricas de uso, memoria y temperatura de cada GPU.

En el panel se muestran las métricas siguientes para cada GPU:

  • Porcentaje de uso de GPU
  • Uso de memoria de GPU
  • Temperatura

El panel sondea las métricas cada 10 segundos y conserva hasta 2 horas de historial. Haga clic en el icono Actualizar.Actualice para capturar los valores más recientes inmediatamente. Después de 5 minutos de inactividad, el panel se pausa; vuelva a abrirlo para reanudar la supervisión.

Colaboración multiusuario

  • Para asegurarse de que todos los usuarios pueden acceder al código compartido (por ejemplo, módulos auxiliares o archivos YAML de entorno), almacénelos en /Workspace/Shared lugar de carpetas específicas del usuario como /Workspace/Users/<your_email>/.
  • En el caso del código que está en desarrollo activo, use carpetas de Git en carpetas /Workspace/Users/<your_email>/ específicas del usuario e inserte en repositorios de Git remotos. Esto permite a varios usuarios tener un clon y una rama específicos del usuario, mientras sigue usando un repositorio de Git remoto para el control de versiones. Consulte los procedimientos recomendados para usar Git en Databricks.
  • Los colaboradores pueden compartir y comentar en cuadernos.

Límites globales en Azure Databricks

Consulte Límites de los recursos.