Question about IOParameters arguments
VictorY-1Qbit opened this issue · 0 comments
VictorY-1Qbit commented
I've noticed that the performance of my application is strongly affected by the arguments of the IOParameters
, that I defined in a InferenceRPUConfig
before to convert my network to analog.
I'm not sure to totally understand the meaning of the different properties of this object from the documentation. I'm hoping that someone could help me to clarify a few points.
- About
inp_bound
/out_bound
: I think to understand that is the maximal logical values inputed to the DAC / ADC. So ifinp_bound=2.0
andinp_res=1/(2**8)
, each input will be discretized into 2^8 (256) values between 0 and 2. Is it correct? - What happen if an input is lower than 0 or higher than 2 during the inference?
- About
inp_noise
/out_noise
: I think to understand that it represents all the electronic noise , excepted from the memristor reading noise (which is defined in thenoise_model
). This noise is additive, so after each multiplication of the VMM, a gaussian number centred on 0 and a std-deviation defined byout_noise
will be added to the logical value. Is it correct? - Is the noise from DAC / ADC included in this
inp_noise
/out_noise
? What other source of noise should be considered here? - What is justification for the defaults values
inp_noise = 0.0
andout_noise = 0.06
? - Finally, even when I set a seed for pytorch, numpy and python.random, the noise from
inp_noise
/out_noise
are not reproducible. Is guess that could be related to a C implementation. Is there a recommended way to seed the RNG for the whole library?
Environment: python 3.9.2, aihwkit 0.8, torch 2.01