accessing-mlflow

Par nvidia · skills

Interrogez et parcourez les résultats d'évaluation stockés dans MLflow. À utiliser lorsque l'utilisateur souhaite rechercher des runs par invocation ID, comparer des métriques entre modèles, récupérer des artifacts (configs, logs, résultats) ou configurer le serveur MCP MLflow. Se déclenche TOUJOURS lors de mentions de MLflow, de résultats d'expériences, de comparaisons de runs, d'invocation IDs dans le contexte de résultats, ou de la configuration MLflow MCP.

npx skills add https://github.com/nvidia/skills --skill accessing-mlflow

Accéder à MLflow

Serveur MCP

mlflow-mcp donne aux agents un accès direct à MLflow — interroger les runs, comparer les métriques, parcourir les artefacts, tout en langage naturel.

Convention des ID

Quand l'utilisateur fournit un ID hexadécimal (p. ex. 71f3f3199ea5e1f0) sans spécifier ce qu'il est, supposez que c'est un invocation_id (et non un run_id MLflow). Un invocation_id identifie une invocation de launcher et est stocké à la fois comme tag et comme paramètre sur les runs MLflow. Une invocation peut produire plusieurs runs MLflow (un par tâche). Vous devrez peut-être rechercher across plusieurs expériences si vous ne savez pas à quelle expérience appartient le run.

Interroger les Runs

# Trouver les runs par invocation_id
MLflow:search_runs_by_tags(experiment_id, {"invocation_id": "<invocation_id>"})

# Interroger par exemple les runs de modèle/tâche
MLflow:query_runs(experiment_id, "tags.model LIKE '%<model>%'")
MLflow:query_runs(experiment_id, "tags.task_name LIKE '%<task_name>%'")

# Obtenir une config depuis les artefacts du run
MLflow:get_artifact_content(run_id, "config.yml")

# Obtenir des statistiques imbriquées depuis les artefacts du run
MLflow:get_artifact_content(run_id, "artifacts/eval_factory_metrics.json")

NOTE: Vous NE trouverez PAS les runs PENDING, RUNNING, KILLED ou FAILED dans MLflow ! Seuls les runs SUCCESSFUL sont exportés vers MLflow.

Conseils de Workflow

Quand vous comparez les métriques entre runs, récupérez les données via MCP, puis exécutez le calcul en Python pour des résultats exacts plutôt que de faire du calcul mental en contexte :

uv run --with pandas python3 << 'EOF'
import pandas as pd
# ... calculer les deltas, moyennes, etc.
EOF

Structure des Artefacts

<harness>.<task>/
├── artifacts/
│   ├── config.yml                # Config complètement résolue utilisée lors de l'évaluation
│   ├── launcher_unresolved_config.yaml # Config non résolue passée au launcher
│   ├── results.yml               # Tous les résultats en format YAML
│   ├── eval_factory_metrics.json # Stats runtime (latence, compte de tokens, mémoire)
│   ├── report.html               # Samples de paires Requête-Réponse en format HTML (si activé)
│   └── report.json               # Samples de paires Requête-Réponse en format JSON (si activé)
└── logs/
    ├── client-*.log              # Client d'évaluation
    ├── server-*-N.log            # Déploiement par nœud
    ├── slurm-*.log               # Job Slurm
    └── proxy-*.log               # Proxy de requête

Dépannage

Si le serveur MCP MLflow ne se charge pas ou ses tools ne sont pas disponibles :

  1. uvx non trouvé — installez uv :

    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Serveur MCP non configuré — ajoutez la config et redémarrez l'agent :

    Pour Claude Code — ajoutez à .claude/settings.json (niveau projet ou utilisateur), sous "mcpServers" :

    "MLflow": {
      "command": "uvx",
      "args": ["mlflow-mcp"],
      "env": {
        "MLFLOW_TRACKING_URI": "https://<your-mlflow-server>/"
      }
    }

    Pour Cursor — éditez ~/.cursor/mcp.json (Settings > Tools & MCP > New MCP Server) :

    {
      "mcpServers": {
        "MLflow": {
          "command": "uvx",
          "args": ["mlflow-mcp"],
          "env": {
            "MLFLOW_TRACKING_URI": "https://<your-mlflow-server>/"
          }
        }
      }
    }

Skills similaires