Passer en revue les essais Hyperopt

Effectué

Lorsque vous utilisez Hyperopt pour essayer plusieurs combinaisons d’hyperparamètres, vous pouvez consulter les détails de chaque essai. Vous pouvez consulter ces informations de deux manières :

  • Affichez l’exécution de MLflow pour chaque essai.
  • Utilisez la classe Trials pour capturer les détails de l’exécution.

Afficher l’exécution de MLflow pour chaque essai

Dans Azure Databricks, les appels à la fonction Hyperopt fmin génèrent automatiquement des exécutions d’expériences MLflow que vous pouvez afficher dans le portail Azure Databricks ; vous offrant un moyen simple d’afficher l’ensemble complet des hyperparamètres et des métriques pour chaque essai, comme indiqué ici :

Capture d’écran de l’exécution de MLflow pour une version d’évaluation Hyperopt.

Utiliser la classe Trials

Hyperopt inclut une classe Trials qui journalise les détails de chaque essai exécuté lors d’un appel de fonction fmin. L’exemple de code suivant montre comment utiliser la classe Trials.

from hyperopt import Trials

# Create a Trials object to track each run
trial_runs = Trials()

argmin = fmin(
  fn=objective,
  space=search_space,
  algo=algo,
  max_evals=100,
  trials=trial_runs)

print("Best param values: ", argmin)

# Get details from each trial run
print ("trials:")
for trial in trial_runs.trials:
    print ("\n", trial)

La sortie détaillée complète d’une collection d’essais ressemble à cet exemple :

{'state': 2, 'tid': 0, 'spec': None, 'result': {'loss': -0.8571428571428571, 'status': 'ok'}, 'misc': {'tid': 0, 'cmd': ('domain_attachment', 'FMinIter_Domain'), 'workdir': None, 'idxs': {'Iterations': [0], 'Regularization': [0]}, 'vals': {'Iterations': [1], 'Regularization': [0.4965634473237057]}}, 'exp_key': None, 'owner': None, 'version': 0, 'book_time': datetime.datetime(2023, 3, 17, 22, 45, 24, 993000), 'refresh_time': datetime.datetime(2023, 3, 17, 22, 46, 30, 374000)}

 {'state': 2, 'tid': 1, 'spec': None, 'result': {'loss': -0.8857142857142857, 'status': 'ok'}, 'misc': {'tid': 1, 'cmd': ('domain_attachment', 'FMinIter_Domain'), 'workdir': None, 'idxs': {'Iterations': [1], 'Regularization': [1]}, 'vals': {'Iterations': [9], 'Regularization': [0.8446551490616772]}}, 'exp_key': None, 'owner': None, 'version': 0, 'book_time': datetime.datetime(2023, 3, 17, 22, 46, 30, 379000), 'refresh_time': datetime.datetime(2023, 3, 17, 22, 47, 34, 155000)}

 {'state': 2, 'tid': 2, 'spec': None, 'result': {'loss': -0.9523809523809523, 'status': 'ok'}, 'misc': {'tid': 2, 'cmd': ('domain_attachment', 'FMinIter_Domain'), 'workdir': None, 'idxs': {'Iterations': [2], 'Regularization': [2]}, 'vals': {'Iterations': [9], 'Regularization': [0.3931915704555482]}}, 'exp_key': None, 'owner': None, 'version': 0, 'book_time': datetime.datetime(2023, 3, 17, 22, 47, 34, 160000), 'refresh_time': datetime.datetime(2023, 3, 17, 22, 48, 45, 986000)}

 ...

Conseil

Pour plus d’informations sur les détails enregistrés par la classe Trials, consultez la documentation Hyperopt.