Recherche d'exécutions dans MLflow

Recherche D Executions Dans Mlflow



Pour suivre et gérer les expériences d'apprentissage automatique, MLflow propose une plate-forme étendue. La possibilité de rechercher des exécutions est l'une des fonctionnalités clés de MLflow. Cela permet d'identifier les expériences développées et de les organiser de manière à faciliter la localisation des informations en cas de besoin. Nous pouvons rechercher des exécutions à l'aide de l'API de recherche MLflow en utilisant un certain nombre de critères différents, qui peuvent inclure les suivants :
  • ID ou nom du test
  • ID d'exécution
  • Paramètres et valeurs
  • Mesures et valeurs
  • Mots clés
  • Autres attributs associés aux exécutions

Les exécutions peuvent être filtrées par statut, heure de début, heure de fin et durée à l'aide de l'API de recherche MLflow. Il permet de filtrer plus facilement de nombreuses exécutions et de trouver des exécutions spécifiques qui intéressent les utilisateurs.

Fonction de recherche MLflow

Utilisez la fonction mlflow.search_runs() pour accéder à l'API de recherche MLflow. Cette fonction accepte une variété d'arguments comme les suivants :







  • L'ID ou le nom de l'expérience
  • Filtrer une chaîne ou du texte
  • Le nombre maximum d'exécutions à renvoyer est spécifié par l'argument max_results

Une variante simplifiée de la clause SQL (Structured Query Language) WHERE est la chaîne ou le texte du filtre. Il peut être utilisé pour indiquer les critères selon lesquels nous souhaitons trier les exécutions.



Syntaxe de la fonction MLflow Search_Runs()

L'ID ou le nom réel de l'expérience dans laquelle nous souhaitons effectuer la recherche doit être remplacé par « experiment_id ou experimental_name » dans l'exemple suivant. La variable search_criteria permet de saisir les critères de recherche comme vous le souhaitez. Ces critères peuvent être déterminés par des métriques, des balises, des paramètres ou des caractéristiques supplémentaires. La syntaxe de base de la fonction search_runs() est la suivante :



# Importez l'API de recherche mlflow pour utiliser la fonction search_runs

importer mlflow

# Fournissez un identifiant ou un nom d'expérience (c'est facultatif ; )

exp_id = 'ID ou NOM de l'expérience'

# Définir les critères de recherche des runs

chaîne_de recherche = 'metrics.accuracy > 0,8 ET params.learning_rate = '0,01' ET params.efficiency_rate > '80''

# Effectuer la recherche

court = mlflow. recherche_runs ( expérience_ids = exp_id , chaîne_filtre = chaîne_de recherche )

# Afficher les résultats

imprimer ( 'Résultats de recherche:' )

imprimer ( court )

Exécutez une recherche en utilisant de nombreux critères

1. Recherche par valeur métrique

Les exécutions peuvent être filtrées par les valeurs de métriques particulières à l'aide du champ métriques de l'API de recherche MLflow. Une collection de noms de métriques séparés par des virgules apparaît dans le champ des métriques. Par exemple, la chaîne de filtre suivante localise toutes les exécutions avec une valeur de précision supérieure à 0,9 :





métrique. précision > 0,9

La liste complète des métriques disponibles pour une utilisation dans le champ métriques est donnée comme suit :

  • précision
  • auc
  • f1
  • précision
  • rappel
  • carte
  • perte de log
  • erreur_classification
  • multi_class_logloss

De plus, les utilisateurs peuvent filtrer les exécutions en fonction de la plage de valeurs d'une métrique à l'aide du champ métriques. Par exemple, la chaîne de filtre suivante localise toutes les exécutions qui ont une mesure de précision avec une valeur comprise entre 0,4 et 0,8 :



métrique. précision ENTRE 0,4 ET 0,8

Dans le champ des métriques, les opérateurs AND et OR combinent les métriques pour trouver les exécutions avec une précision des métriques et des valeurs f1 supérieures à 0,3 et 0,8 :

métrique. précision > 0,3 ET des métriques. f1 > 0,8

2. Recherche par valeur de paramètre

Utilisez le champ params dans l'API de recherche MLflow pour effectuer une recherche par valeur de paramètre. Les noms et valeurs des paramètres sont répertoriés dans le champ params à l’aide de virgules. Dans cet exemple, la chaîne de filtre susmentionnée localise toutes les exécutions avec le paramètre num_boost_round qui ont la valeur 100 :

paramètres. num_boost_round = '100'

Quelques autres exemples de chaînes de recherche pour les valeurs de paramètres :

  • params.num_boost_round = 900
  • params.learning_rate ENTRE 0,001 ET 0,01
  • params.num_boost_round=’70’ ET params.learning_rate=’0.01′

3. Recherche par balises

Voici un exemple de recherche utilisant des balises :

critères de recherche = 'tags.mlflow.source.type = 'dictionnaire''

Exemple de valeurs de matrice et de paramètre pour exécuter la fonction Mlflow.search_runs()

Examinons un exemple de configuration d'une expérience MLflow, de journalisation des exécutions, puis d'utilisation de mlflow.search_runs() pour lancer une recherche. Pour comprendre complètement le code, procédez comme suit :

Étape 1 : Créer une expérience MLflow

Nous commençons par mettre en place une expérience MLflow. Il récupère l'expérience existante si l'expérience existe déjà. Sinon, il en crée un nouveau.

Explication du code :

La bibliothèque MLflow est importée dans la première ligne du code et le nom_expérience est défini sur « Ma première expérience MLflow » dans la ligne suivante. Lorsque le nom de l'expérience est transmis à la fonction « mlflow.get_experiment_by_name », cette fonction renvoie « Aucun » si l'expérience n'existe pas et un objet de l'expérience dans le cas contraire.

Vérifiez l'existence de l'expérience dans l'instruction conditionnelle. Si l'expérience existe déjà, définissez le experimental_id. Sinon, utilisez « mlflow.create_experiment » pour créer une nouvelle expérience. L'ID de l'expérience est renvoyé par cette fonction. Affichez l’ID de l’expérience sur la console ou sur l’écran du terminal à la fin de l’expérience. Copiez le code suivant dans le bloc-notes et enregistrez le fichier sous le nom souhaité et avec l'extension « .py » :

# importer la bibliothèque mlflow

importer mlflow

# Créer ou récupérer l'expérience

nom_exp = 'Ma première expérience MLflow'

# Récupérez l'expérience par nom à l'aide de la fonction mlflow get_experiment_by_name

exp = mlflow. get_experiment_by_name ( nom_exp )

# Vérifiez si l'expérience n'existe pas déjà

si exp est Aucun :

# Créez une nouvelle expérience et transmettez le nom de l'expérience à la fonction mlflow.create_experiment

exp_id = mlflow. créer_expérience ( nom_exp )

# Afficher le message de réussite à l'écran

imprimer ( 'L'expérience n'existe pas. Expérience créée avec succès !' )

autre :

# Récupère l'experience_id de l'expérience existante

exp_id = exp. expérience_id

imprimer ( 'L'expérience existe déjà !' )

# Afficher l'ID de l'expérience

imprimer ( « ID de l'expérience : » , exp_id )

Maintenant, lancez le programme dans l'invite de commande ou dans la fenêtre du terminal à l'aide du compilateur Python et tapez « Python », puis le nom du fichier qui, dans ce cas, est « MyFirstMlflowExperiment.py ». Lorsque l’expérience est lancée pour la première fois, elle n’existe pas encore. Ainsi, MLFlow en crée un et imprime l'ID de l'expérience sur l'écran de la console :

Réexécutez le code pour vérifier qu'il ne crée pas de nouvelles expériences et pour afficher l'ID de celles qui existent déjà. La capture d'écran suivante montre que l'expérience existe déjà :

Étape 2 : Enregistrez les exécutions avec des métriques et des paramètres

Essayons maintenant d'enregistrer quelques exécutions avec les métriques et les paramètres de l'expérience qui vient d'être établie. Dans un scénario réel, nous développons les modèles d'apprentissage automatique et enregistrons les informations pertinentes, telles que les métriques et les paramètres, à la fin de chaque exécution. Ici, la précision est utilisée comme valeur matricielle, et elle est de 0,95 dans ce cas. Les valeurs des paramètres pour l'apprentissage et le taux d'efficacité sont respectivement 0,01 et 90. Voici le code :

# Démarrez une exécution MLflow pour enregistrer les métriques et les paramètres

avec mlflow. Démarrer, Exécuter ( expérience_id = exp_id ) :

# Votre code d'apprentissage automatique ici (ceci est juste un exemple simulé)

modèle_précision = 0,95

taux_apprentissage_machine = 0,01

taux_d'efficacité = 90

# Enregistrer les métriques et les paramètres

mlflow. log_métrique ( 'précision' , modèle_précision )

mlflow. log_param ( 'taux d'apprentissage' , taux_apprentissage_machine )

mlflow. log_param ( 'taux_d'efficacité' , taux_d'efficacité )

Le résultat, lorsque le code susmentionné est exécuté, est visible ici. Le résultat est le même que précédemment :

Étape 3 : effectuez une recherche à l’aide de Mlflow.search_runs()

Enfin, nous effectuons une recherche sur les exécutions qui ont été enregistrées à l'aide de quelques paramètres et affichons les résultats sur l'écran du terminal :

# Définir les critères de recherche des runs

définir_critères_de_recherche = 'metrics.accuracy > 0,8 ET params.learning_rate = '0,01' ET params.efficiency_rate = '90''

# Effectuer la recherche

court = mlflow. recherche_runs ( expérience_ids = exp_id , chaîne_filtre = définir_critères_de_recherche )

# Afficher les résultats

imprimer ( 'Résultats de recherche:' )

imprimer ( court )

Un avertissement relatif à l'outil Git est produit par l'exécution de la fonction search_runs :


Ajoutez du code en haut du fichier Python pour désactiver cet avertissement. Voici la courte section du code :

importer mlflow

importer toi

toi . environ [ 'GIT_PYTHON_REFRESH' ] = 'calme'

La fonction « mlflow.search_runs » est exécutée avec succès une fois ces lignes de code ajoutées :

Conclusion

La fonction « mlflow.search_runs » permet aux utilisateurs d'explorer et d'évaluer rapidement les expériences d'apprentissage automatique, d'analyser de nombreuses exécutions et d'identifier les variations ou modèles d'hyperparamètres optimaux qui aboutissent aux résultats souhaités. Il s'agit d'un outil efficace pour superviser, planifier et analyser le flux de travail d'apprentissage automatique.