Revisión de las pruebas de Hyperopt
Al usar Hyperopt para probar varias combinaciones de hiperparámetros, es posible que quiera revisar los detalles de cada prueba. Puede revisar estos detalles de dos maneras:
- Vea la ejecución de MLflow para cada prueba.
- Use la clase Trials para capturar los detalles de la ejecución.
Visualización de la ejecución de MLflow para cada prueba
En Azure Databricks, las llamadas a la función fmin de Hyperopt generan automáticamente ejecuciones de experimentos de MLflow que puede ver en el portal de Azure Databricks, lo que le brinda una manera sencilla de ver el conjunto completo de hiperparámetros y métricas de cada prueba, tal como se muestra aquí:
Uso de la clase Trials
Hyperopt incluye una clase Trials que registra los detalles de cada prueba que se ejecuta durante una llamada a la función fmin. En el ejemplo de código siguiente, se muestra cómo se utiliza la clase 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 salida detallada completa de una colección de pruebas es similar a este ejemplo:
{'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)}
...
Sugerencia
Para más información sobre los detalles registrados por la clase Trials, consulte la documentación de Hyperopt.