Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Suivi des versions et
Le suivi des versions MLflow vous permet de créer des représentations avec version de vos applications GenAI. Le contrôle de version offre les avantages suivants :
- Reproductibilité et auditabilité. Chaque application ou version de modèle est liée à son code spécifique, tel que le hachage de validation Git et sa configuration.
- Aide au débogage. Comparez le code, les configurations, les résultats d’évaluation et les traces entre les versions du modèle.
- Évaluation systématique. Permet
mlflow.genai.evaluate()de comparer les métriques telles que les scores de qualité, le coût et la latence côte à côte.
Pour créer une application ou une version de modèle, vous utilisez un LoggedModel. Dans MLflow, un LoggedModel représente une version spécifique de votre application GenAI. Chaque état distinct de votre application à évaluer, déployer ou faire référence peut être capturé en tant que nouveau LoggedModel.
Cette page présente le suivi des versions de MLflow. Pour obtenir un didacticiel pas à pas, consultez Suivre les versions d’applications git avec MLflow.
Méthodes pour le suivi des versions
MLflow fournit deux méthodes pour le suivi des versions :
-
mlflow.set_active_model(): suivi de version simple. Crée automatiquement unLoggedModelsi nécessaire et lie les traces qui suivent. -
mlflow.create_external_model(): Contrôle total sur la création de version. Vous pouvez fournir des métadonnées, des paramètres et des balises étendus.
set_active_model
Lie les traces à une version spécifique LoggedModel . Si un modèle portant le nom donné n’existe pas, il en crée automatiquement un.
def set_active_model(
name: Optional[str] = None,
model_id: Optional[str] = None
) -> ActiveModel:
Paramètres
| Paramètre | Catégorie | Obligatoire | Descriptif |
|---|---|---|---|
name |
str \| None |
Non* | Nom du modèle. Si le modèle n’existe pas, crée un nouveau modèle |
model_id |
str \| None |
Non* | ID d’un LoggedModel existant |
Soit name, soit model_id doit être fourni.
Valeur de retour
Retourne un ActiveModel objet (sous-classe de LoggedModel) qui peut être utilisé comme gestionnaire de contexte.
Exemple d’utilisation
import mlflow
# Simple usage - creates model if it doesn't exist
mlflow.set_active_model(name="my-agent-v1.0")
# Use as context manager
with mlflow.set_active_model(name="my-agent-v2.0") as model:
print(f"Model ID: {model.model_id}")
# Traces within this context are linked to this model
# Use with existing model ID
mlflow.set_active_model(model_id="existing-model-id")
create_external_model
Crée une nouvelle LoggedModel application pour les applications dont le code et les artefacts sont stockés en dehors de MLflow (par exemple, dans Git).
def create_external_model(
name: Optional[str] = None,
source_run_id: Optional[str] = None,
tags: Optional[dict[str, str]] = None,
params: Optional[dict[str, str]] = None,
model_type: Optional[str] = None,
experiment_id: Optional[str] = None,
) -> LoggedModel:
Paramètres
| Paramètre | Catégorie | Obligatoire | Descriptif |
|---|---|---|---|
name |
str \| None |
Non | Nom du modèle. S’il n’est pas spécifié, un nom aléatoire est généré |
source_run_id |
str \| None |
Non | ID de l’exécution associée. Par défaut, utilise l'ID d'exécution actif s'il est dans un contexte d'exécution |
tags |
dict[str, str] \| None |
Non | Paires clé-valeur pour l’organisation et le filtrage |
params |
dict[str, str] \| None |
Non | Paramètres et configuration du modèle (doivent être des chaînes) |
model_type |
str \| None |
Non | Type défini par l’utilisateur pour la catégorisation (par exemple, « agent », « rag-system ») |
experiment_id |
str \| None |
Non | Expérimenter pour s'associer. Utilise l’expérience active si elle n’est pas spécifiée |
Valeur de retour
Retourne un objet LoggedModel avec :
-
model_id: identificateur unique pour le modèle -
name: Nom du modèle affecté -
experiment_id: ID d’expérience associé -
creation_timestamp: lors de la création du modèle -
status: État du modèle (toujours « READY » pour les modèles externes) -
tags: Dictionnaire de balises -
params: Dictionnaire de paramètres
Exemple d’utilisation
import mlflow
# Basic usage
model = mlflow.create_external_model(
name="customer-support-agent-v1.0"
)
# With full metadata
model = mlflow.create_external_model(
name="recommendation-engine-v2.1",
model_type="rag-agent",
params={
"llm_model": "gpt-4",
"temperature": "0.7",
"max_tokens": "1000",
"retrieval_k": "5"
},
tags={
"team": "ml-platform",
"environment": "staging",
"git_commit": "abc123def"
}
)
# Within a run context
with mlflow.start_run() as run:
model = mlflow.create_external_model(
name="my-agent-v3.0",
source_run_id=run.info.run_id
)
LoggedModel, classe
La LoggedModel classe représente un modèle versionné dans MLflow.
Propriétés
| Propriété | Catégorie | Descriptif |
|---|---|---|
model_id |
str |
Identificateur unique pour le modèle |
name |
str |
Nom du modèle |
experiment_id |
str |
ID d’expérience associé |
creation_timestamp |
int |
Temps de création (millisecondes depuis l’époque) |
last_updated_timestamp |
int |
Heure de la dernière mise à jour (millisecondes depuis l’époque) |
model_type |
str \| None |
Type de modèle défini par l’utilisateur |
source_run_id |
str \| None |
ID de l’exécution qui a créé ce modèle |
status |
LoggedModelStatus |
État du modèle (READY, FAILED_REGISTRATION, etc.) |
tags |
dict[str, str] |
Dictionnaire de balises |
params |
dict[str, str] |
Dictionnaire de paramètres |
model_uri |
str |
URI pour référencer le modèle (par exemple, « models :/model_id ») |
Modèles courants
Suivi des versions avec l’intégration Git
import mlflow
import subprocess
# Get current git commit
git_commit = subprocess.check_output(["git", "rev-parse", "HEAD"]).decode().strip()[:8]
# Create versioned model name
model_name = f"my-app-git-{git_commit}"
# Track the version
model = mlflow.create_external_model(
name=model_name,
tags={"git_commit": git_commit}
)
Liaison de traces avec des versions
import mlflow
# Set active model - all subsequent traces will be linked
mlflow.set_active_model(name="my-agent-v1.0")
# Your application code with tracing
@mlflow.trace
def process_request(query: str):
# This trace will be automatically linked to my-agent-v1.0
return f"Processing: {query}"
# Run the application
result = process_request("Hello world")
Déploiement de production
En production, utilisez des variables d’environnement au lieu d’appeler set_active_model():
# Set the model ID that traces should be linked to
export MLFLOW_ACTIVE_MODEL_ID="my-agent-v1.0"
Meilleures pratiques
- Utiliser le contrôle de version sémantique dans les noms de modèles (par exemple, « app-v1.2.3 »)
- Inclure les commits Git dans les balises pour la traçabilité
- Les paramètres doivent être des chaînes : convertir des nombres et des booléens
- Utiliser model_type pour catégoriser des applications similaires
- Définir un modèle actif avant le suivi pour garantir une liaison appropriée
Problèmes courants
Types de paramètres non valides :
# Error: Parameters must be strings
# Wrong:
params = {"temperature": 0.7, "max_tokens": 1000}
# Correct:
params = {"temperature": "0.7", "max_tokens": "1000"}
Étapes suivantes
- Suivre les versions d’application - Guide pas à pas pour la version de votre application GenAI
- Lier des traces de production - Connecter des données de production aux versions d’application
- Package pour le déploiement - Déployer des applications avec version sur Model Service