Créez automatiquement une configuration d'hyper-paramètres à partir de variables globales!
·
Signaler un bug
Avez-vous déjà effectué une expérience de machine learning pendant des heures, juste pour vous rendre compte quelques jours plus tard que vous avez oublié de sauvegarder certains hyper-paramètres? Alors vous devez prier pour que votre mémoire soit bonne, ou tout recommencer?
AutoHparams est un outil qui sauvegarde chaque variable de la portée globale de votre code dans un dictionnaire, que vous pouvez ensuite enregistrer à l'aide de votre outil préféré. Cela permet d'éviter 80% des situations d'hyper-paramètres oubliés.
AutoHparams s'utilise en une ligne.
Installez AutoHparams avec pip :
pip install autohparams
Importez-le dans votre code, en ajoutant cette ligne :
from autohparams import get_auto_hparams
Pour obtenir le dictionnaire de hparamsuration, faites simplement :
hparams = get_auto_hparams(globals())
Advanced tip
Par défaut, get_auto_hparams
ignore les variables dont le nom commence par un trait de soulignement _
. Pratique pour filtrer les variables que vous souhaitez inclure dans la hparamsuration.
Par exemple:
lr = 0.001 # nous voulons inclure le taux d'apprentissage
bs = 64 # nous voulons inclure la taille de lot
_gpu = 0 # nous ne voulons pas inclure le GPU choisi
hparams = get_auto_hparams(globals())
Vous pouvez maintenant l'utiliser dans n'importe quel cadre de votre choix, par exemple :
Tensorboard
import tensorflow as tf
from tensorboard.plugins.hparams import api as hp
with tf.summary.create_file_writer('logs/hparam_tuning').as_default():
hp.hparams(hparams)
MLflow
import mlflow
with mlflow.start_run():
mlflow.log_params(hparams)
Weights & Biases (wandb)
import wandb
wandb.init(hparams=hparams)
Comet.ml
from comet_ml import Experiment
experiment = Experiment()
experiment.log_parameters(hparams)
Neptune.ai
import neptune.new as neptune
run = neptune.init()
run['parameters'] = hparams
Pytorch Lightning
import pytorch_lightning as pl
trainer = pl.Trainer(logger=...)
trainer.logger.log_hyperparams(hparams)
Guild AI
import guild
guild.run(hparams=hparams)
Polyaxon
import polyaxon_sdk
api_client = polyaxon_sdk.ApiClient()
api_client.create_hyper_params(run_uuid='uuid-of-your-run', body=hparams)
ClearML
from clearml import Task
task = Task.init()
task.set_parameters(hparams)
Kubeflow
from kubeflow.metadata import metadata
store = metadata.Store()
store.log_metadata(hparams)
Si vous êtes amateur de la sorcellerie de python, vous pouvez même import autohparams et l'utiliser comme une fonction:
import autohparams
config = autohparams(globals())
On ne peut pas faire plus simple !
Contributions are welcome!
Non-Code contribution :
Task | Importance | Difficulty | Contributor on it | Description |
---|---|---|---|---|
Adding documentation | 4/5 | 1/5 | NOBODY | Write basic tutorials with real-life scenarios, write a wiki for other contributors to better understand the functioning of the library. |
For every todo, just click on the link to find the discussion where I describe how I would do it.
See the discussions for a full list of proposed features (and known issues).
Contributing is an awesome way to learn, inspire, and help others. Any contributions you make are greatly appreciated, even if it's just about styling and best practices.
If you have a suggestion that would make this project better, please fork the repo and create a pull request.
Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/YourAmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This library was created by Nicolas MICAUX.