? Sitio web | ? Documentos | Guía de instalación | Tutoría | Ejemplos | Gorjeo | LinkedIn | Medio
Optuna es un marco de software de optimización automática de hiperparámetros, especialmente diseñado para el aprendizaje automático. Cuenta con una API de usuario de estilo imperativo, definido por ejecución . Gracias a nuestra API de definición por ejecución , el código escrito con Optuna disfruta de una alta modularidad y el usuario de Optuna puede construir dinámicamente los espacios de búsqueda para los hiperparámetros.
Terminator
, que se amplía en Optuna 4.0.JournalStorage
, que está estabilizado en Optuna 4.0.pip install -U optuna
. Encuentra lo último aquí y consulta nuestro artículo. Optuna tiene funcionalidades modernas de la siguiente manera:
Usamos los términos estudio y prueba de la siguiente manera:
Consulte el código de muestra a continuación. El objetivo de un estudio es descubrir el conjunto óptimo de valores de hiperparámetros (p. ej., regressor
y svr_c
) a través de múltiples pruebas (p. ej., n_trials=100
). Optuna es un framework diseñado para la automatización y aceleración de estudios de optimización.
import ...
# Define an objective function to be minimized.
def objective ( trial ):
# Invoke suggest methods of a Trial object to generate hyperparameters.
regressor_name = trial . suggest_categorical ( 'regressor' , [ 'SVR' , 'RandomForest' ])
if regressor_name == 'SVR' :
svr_c = trial . suggest_float ( 'svr_c' , 1e-10 , 1e10 , log = True )
regressor_obj = sklearn . svm . SVR ( C = svr_c )
else :
rf_max_depth = trial . suggest_int ( 'rf_max_depth' , 2 , 32 )
regressor_obj = sklearn . ensemble . RandomForestRegressor ( max_depth = rf_max_depth )
X , y = sklearn . datasets . fetch_california_housing ( return_X_y = True )
X_train , X_val , y_train , y_val = sklearn . model_selection . train_test_split ( X , y , random_state = 0 )
regressor_obj . fit ( X_train , y_train )
y_pred = regressor_obj . predict ( X_val )
error = sklearn . metrics . mean_squared_error ( y_val , y_pred )
return error # An objective value linked with the Trial object.
study = optuna . create_study () # Create a new study.
study . optimize ( objective , n_trials = 100 ) # Invoke optimization of the objective function.
Nota
Se pueden encontrar más ejemplos en optuna/optuna-examples.
Los ejemplos cubren diversas configuraciones de problemas, como optimización multiobjetivo, optimización restringida, poda y optimización distribuida.
Optuna está disponible en el índice de paquetes de Python y en Anaconda Cloud.
# PyPI
$ pip install optuna
# Anaconda Cloud
$ conda install -c conda-forge optuna
Importante
Optuna es compatible con Python 3.8 o posterior.
Además, proporcionamos imágenes de la ventana acoplable de Optuna en DockerHub.
Optuna tiene funciones de integración con varias bibliotecas de terceros. Las integraciones se pueden encontrar en optuna/optuna-integration y el documento está disponible aquí.
Optuna Dashboard es un panel web en tiempo real para Optuna. Puede consultar el historial de optimización, la importancia de los hiperparámetros, etc. en gráficos y tablas. No es necesario crear un script de Python para llamar a las funciones de visualización de Optuna. ¡Las solicitudes de funciones y los informes de errores son bienvenidos!
optuna-dashboard
se puede instalar mediante pip:
$ pip install optuna-dashboard
Consejo
Compruebe la conveniencia de Optuna Dashboard utilizando el código de muestra a continuación.
Guarde el siguiente código como optimize_toy.py
.
import optuna
def objective ( trial ):
x1 = trial . suggest_float ( "x1" , - 100 , 100 )
x2 = trial . suggest_float ( "x2" , - 100 , 100 )
return x1 ** 2 + 0.01 * x2 ** 2
study = optuna . create_study ( storage = "sqlite:///db.sqlite3" ) # Create a new study with database.
study . optimize ( objective , n_trials = 100 )
Luego prueba los siguientes comandos:
# Run the study specified above
$ python optimize_toy.py
# Launch the dashboard based on the storage `sqlite:///db.sqlite3`
$ optuna-dashboard sqlite:///db.sqlite3
...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.
OptunaHub es una plataforma para compartir funciones para Optuna. Puede utilizar las funciones registradas y publicar sus paquetes.
optunahub
se puede instalar mediante pip:
$ pip install optunahub
# Install AutoSampler dependencies (CPU only is sufficient for PyTorch)
$ pip install cmaes scipy torch --extra-index-url https://download.pytorch.org/whl/cpu
Puede cargar el módulo registrado con optunahub.load_module
.
import optuna
import optunahub
def objective ( trial : optuna . Trial ) -> float :
x = trial . suggest_float ( "x" , - 5 , 5 )
y = trial . suggest_float ( "y" , - 5 , 5 )
return x ** 2 + y ** 2
module = optunahub . load_module ( package = "samplers/auto_sampler" )
study = optuna . create_study ( sampler = module . AutoSampler ())
study . optimize ( objective , n_trials = 10 )
print ( study . best_trial . value , study . best_trial . params )
Para obtener más detalles, consulte la documentación de optunahub.
Puede publicar su paquete a través de optunahub-registry. Consulte el tutorial de OptunaHub.
¡Cualquier contribución a Optuna es más que bienvenida!
Si es nuevo en Optuna, consulte los primeros números buenos. Son puntos de partida relativamente simples, bien definidos y, a menudo, buenos para familiarizarse con el flujo de trabajo de contribución y con otros desarrolladores.
Si ya ha contribuido a Optuna, le recomendamos los otros números de contribución bienvenidos.
Para obtener pautas generales sobre cómo contribuir al proyecto, consulte CONTRIBUTING.md.
Si utiliza Optuna en uno de sus proyectos de investigación, cite nuestro artículo de KDD "Optuna: un marco de optimización de hiperparámetros de próxima generación":
@inproceedings { akiba2019optuna ,
title = { {O}ptuna: A Next-Generation Hyperparameter Optimization Framework } ,
author = { Akiba, Takuya and Sano, Shotaro and Yanase, Toshihiko and Ohta, Takeru and Koyama, Masanori } ,
booktitle = { The 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining } ,
pages = { 2623--2631 } ,
year = { 2019 }
}
Licencia MIT (ver LICENCIA).
Optuna utiliza los códigos de los proyectos SciPy y fdlibm (ver LICENSE_THIRD_PARTY).