Skip to content

the-tuning-machine/FrEase

Repository files navigation

IceCubes

How to use it:

training_recipe = ProgressiveRecipes(model) # this split your model main module list into ice cubes training_recipe.progressive_simple( epochs, lr, group_size, global_trainning, scaling_factor ) # this gives the recipe to follow during training (typically adding layers progressively and freezing the ones that have already been trained) trainer = ProgressiveTrainer(training_recipe) # this creates a trainer aware of the recipe (it will maybe be called 'cooker' in the future) trainer.train(data_loader, optimizer, criterion) # this trains the model using (you need to have a data_loader giving pairs of X and y values)

You can also have the following recipe which starts with all layers and unfreeze only one layer at a time: training_recipe.iterative_freeze_defreeze( epochs, lr, group_size, global_trainning, scaling_factor )

I'm starting to love this package. It's the ultimate way to make large nn converge super fast. Probably making it reach local minima, but hell it is quick.

Les avantages du freezing :

  • convergence plus rapide
  • sauvegarde des poids moins lourde (car on peut se permettre de n'enregistrer que les poids entrainés à chaque étape)
  • passe avant plus rapide si l'on enregistre les valeurs en sortie des icebergs (les blocs freeze au début du modèle) -> cela évite de refaire la passe avant dans les parties freeze que l'on connait déjà
  • l'entrainement progressif permet d'incentiver naturellement le réseau à prédire le prochain token dès la première couche -> cela ouvre une porte royale vers l'early exiting
  • il permet également une certaine forme de régularisation que je présens accélérer la convergence vers la phase de grokking

TODO: Recipe: Faire en sorte d'ajuster le recipe si on a des layers sans poids -> dans ce cas il faut les ajouter avec le layer précédent car il est inutile d'apprendre

WARNING: Attention le loading d'un modèle ne fonctionne probablement pas (il n'a pas été testé en condition réelle)

About

A frenchy package, that starts with a shallow PyTorch model and progressively adds layers while freezing previous ones, similar to boosting by minimizing residuals at each step. This method, also inspired by simulated annealing, enables independent retraining of each section for improved model performance.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors