-
Notifications
You must be signed in to change notification settings - Fork 151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Updated drift compensation mechanism to use is_perfect=True
when determining the reference readout
#674
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: Corey Liam Lammie <[email protected]>
@coreylammie, the drift compensation is on purpose using the rpu config of the tile as this is the realistic situation. In reality, how can you achieve a perfect reference readout, as there always will be noise when reading the analogue devics? I don't think you should change this default behaviour as it would then make the simulation unrealistic and wrong. |
If you want perfect readout during drift compensation, then you should explicitly write a new drift compensation. This should be a special case as this behaviour is wrong in most natural cases. |
This PR will also invalidate the papers we have written using this standard drift where the correct way was used to estimate the drift compensation in a noisy manner. So please take this PR back. If you need a perfect compensation for some reasons, write a special drift compensation class by deriving from the default one. |
Also the implementation seems to permanently set the rpu config to perfect, which is then always using the perfect case, which is even wrong, if you only want to use a noise free reference. It will then use a completely noise free drift. That's completely wrong. |
Please don't change the default drift class in this manner. Use a special drift class if you need this special behaviour for some reasons. |
I am about to close this PR. Please submit a new one where you modify your PR accordingly by deriving a new drift compensation class from the default class and not changing the behaviour of the default class. Also, as stated above, it seems that the rpu configuration is permanently changed which is wrong in any case. |
Btw, if you want the exact weights of a tile for the reference computation of your special drift compensation class, simply use |
@coreylammie can you please let us know what is the latest on this PR. Should we go with the changes you have? We need to close this PR soon. |
Description
Updated drift compensation mechanism to use
is_perfect=True
when determining the reference readout. Previously, all non-idealities (as set by the correspondingrpu_config
) were modeled, resulting in sub-optimal drift compensation scales being computed in some scenarios, e.g., where the output noise is sufficiently large.