Comparaison et Gestion des Exécutions
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import logging import mlflow import mlflow.sklearn from mlflow.models import infer_signature from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s") # Load data iris = load_iris() X_train, X_test, y_train, y_test = train_test_split( iris.data, iris.target, test_size=0.2, random_state=42 ) # Optionally set/announce experiment experiment_name = "IrisRandomForest" mlflow.set_experiment(experiment_name) logging.info(f"Using experiment: {experiment_name}") # Define different hyperparameter sets hyperparams_list = [ {"n_estimators": 50, "max_depth": 2}, {"n_estimators": 100, "max_depth": 3}, {"n_estimators": 150, "max_depth": 4} ] for params in hyperparams_list: run_name = f"rf_n{params['n_estimators']}_d{params['max_depth']}" logging.info(f"Starting run: {run_name} with params: {params}") with mlflow.start_run(run_name=run_name) as run: clf = RandomForestClassifier( n_estimators=params["n_estimators"], max_depth=params["max_depth"], random_state=42 ) clf.fit(X_train, y_train) preds = clf.predict(X_test) acc = accuracy_score(y_test, preds) logging.info(f"Accuracy: {acc:.4f}") # Log hyperparameters and metrics mlflow.log_params(params) mlflow.log_metric("accuracy", acc) # Log the model with input example and signature to avoid warnings input_example = X_test[:5] signature = infer_signature(X_test, preds) mlflow.sklearn.log_model(clf, "model", input_example=input_example, signature=signature) run_id = run.info.run_id artifact_uri = mlflow.get_artifact_uri() logging.info(f"Run ID: {run_id}") logging.info(f"Artifact URI: {artifact_uri}")
Après avoir enregistré plusieurs exécutions avec différents hyperparamètres, il est possible de comparer les résultats à l'aide de l'interface utilisateur MLflow ou de l'API. Pour utiliser l'interface, lancez-la en exécutant mlflow ui dans votre terminal. L'interface affiche toutes les exécutions, leurs paramètres et métriques, et permet de trier ou filtrer selon la accuracy, les valeurs d'hyperparamètres ou les tags. Il est possible de sélectionner plusieurs exécutions pour comparer leurs performances côte à côte et choisir le meilleur modèle selon la métrique d'évaluation. Alternativement, l'API Python MLflow permet de rechercher des exécutions et de récupérer la meilleure de façon programmatique, ce qui est utile pour automatiser la sélection de modèles dans les workflows de production.
Une nomenclature et un étiquetage cohérents des exécutions rendent les grands projets plus faciles à gérer. Utilisez des noms d'exécution descriptifs et des tags pour suivre l'objectif de l'expérience, la version du jeu de données ou le groupe de recherche d'hyperparamètres. Cette pratique permet d'identifier et de comparer rapidement les exécutions pertinentes à mesure que le projet évolue.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Génial!
Completion taux amélioré à 6.67
Comparaison et Gestion des Exécutions
Glissez pour afficher le menu
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import logging import mlflow import mlflow.sklearn from mlflow.models import infer_signature from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s") # Load data iris = load_iris() X_train, X_test, y_train, y_test = train_test_split( iris.data, iris.target, test_size=0.2, random_state=42 ) # Optionally set/announce experiment experiment_name = "IrisRandomForest" mlflow.set_experiment(experiment_name) logging.info(f"Using experiment: {experiment_name}") # Define different hyperparameter sets hyperparams_list = [ {"n_estimators": 50, "max_depth": 2}, {"n_estimators": 100, "max_depth": 3}, {"n_estimators": 150, "max_depth": 4} ] for params in hyperparams_list: run_name = f"rf_n{params['n_estimators']}_d{params['max_depth']}" logging.info(f"Starting run: {run_name} with params: {params}") with mlflow.start_run(run_name=run_name) as run: clf = RandomForestClassifier( n_estimators=params["n_estimators"], max_depth=params["max_depth"], random_state=42 ) clf.fit(X_train, y_train) preds = clf.predict(X_test) acc = accuracy_score(y_test, preds) logging.info(f"Accuracy: {acc:.4f}") # Log hyperparameters and metrics mlflow.log_params(params) mlflow.log_metric("accuracy", acc) # Log the model with input example and signature to avoid warnings input_example = X_test[:5] signature = infer_signature(X_test, preds) mlflow.sklearn.log_model(clf, "model", input_example=input_example, signature=signature) run_id = run.info.run_id artifact_uri = mlflow.get_artifact_uri() logging.info(f"Run ID: {run_id}") logging.info(f"Artifact URI: {artifact_uri}")
Après avoir enregistré plusieurs exécutions avec différents hyperparamètres, il est possible de comparer les résultats à l'aide de l'interface utilisateur MLflow ou de l'API. Pour utiliser l'interface, lancez-la en exécutant mlflow ui dans votre terminal. L'interface affiche toutes les exécutions, leurs paramètres et métriques, et permet de trier ou filtrer selon la accuracy, les valeurs d'hyperparamètres ou les tags. Il est possible de sélectionner plusieurs exécutions pour comparer leurs performances côte à côte et choisir le meilleur modèle selon la métrique d'évaluation. Alternativement, l'API Python MLflow permet de rechercher des exécutions et de récupérer la meilleure de façon programmatique, ce qui est utile pour automatiser la sélection de modèles dans les workflows de production.
Une nomenclature et un étiquetage cohérents des exécutions rendent les grands projets plus faciles à gérer. Utilisez des noms d'exécution descriptifs et des tags pour suivre l'objectif de l'expérience, la version du jeu de données ou le groupe de recherche d'hyperparamètres. Cette pratique permet d'identifier et de comparer rapidement les exécutions pertinentes à mesure que le projet évolue.
Merci pour vos commentaires !