Passer en revue les essais Hyperopt
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 :
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.