-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Description
1.0.3 -> 1.0.4 breaks pytorch-hooks
What is your question?
I implemented a custom optimizer that stores the input and the incoming gradients for each layer and recomputes the gradients in a per-sample fashion (wich I do because I want to use K-FAC for my optimization).
I'm using the pytorch hooks on modules (i.e. module123.register_forward_pre_hook(_save_input_function) which will store the inputs into the state dictionary of the optimizer.
I use the same mod123.register_backward_hook(_save_gradient_function) for the backward gradients) and when calling optimizer.step().
As I updated from 1.0.1 to 1.1.0 it broke the hooks that are required in the KFAC optimizer.
I checked different versions and from 1.0.3 to 1.0.4 something changed such that the Trainer ignores/steps over the hooks in the forward and backward pass.
I checked the release notes but couldn't identify anything essential that would warrant these breaking changes.
Additionally they were issue popping up with manually modifying gradients in other sampling-based types of optimizers.
These issue do not exist for the standard optimizers straight from PyTorch optim class.
Code
It would be a huge codebase as the implementation of KFAC is a bit sophisticated.
But if nothing helps I could write an minimal working example from scratch.