aihwkit.simulator.presets.devices module¶
Device configurations presets for resistive processing units.
-
class
aihwkit.simulator.presets.devices.
CapacitorPresetDevice
(construction_seed=0, corrupt_devices_prob=0.0, corrupt_devices_range=1000, diffusion=0.0, diffusion_dtod=0.0, drift=<factory>, dw_min=0.005, dw_min_dtod=0.1, dw_min_std=0.3, enforce_consistency=True, lifetime=1000000.0, lifetime_dtod=0.3, perfect_bias=False, reset=0.01, reset_dtod=0.0, reset_std=0.01, up_down=0.0, up_down_dtod=0.06, w_max=1.0, w_max_dtod=0.07, w_min=-1.0, w_min_dtod=0.07, gamma_up=0.05, gamma_down=0.05, gamma_up_dtod=0.01, gamma_down_dtod=0.01, allow_increasing=False, mean_bound_reference=True, mult_noise=False, write_noise_std=0.0)¶ Bases:
aihwkit.simulator.configs.devices.LinearStepDevice
Preset configuration for a single capacitor resistive processing unit based on linear step device.
Fit of the model
LinearStepDevice
to Li & al., VLSI, 2018Here some capacitor leakage is assumed as well.
Caution
Capacitor leakage is applied only once per mini-batch and this the size of the leakage has to be adapted by the user as it depends not only on the size of the leak of the physical capacitor but also on the assumptions how much physical time is required for a full forward and backward cycle through the network (which depends on whether one assumes pipelining or not).
The parameter
lifetime
needs to be adjusted accordingly.-
allow_increasing
= False¶
-
as_bindings
()¶ Return a representation of this instance as a simulator bindings object.
- Return type
aihwkit.simulator.rpu_base.devices.PulsedResistiveDeviceParameter
-
construction_seed
= 0¶
-
corrupt_devices_prob
= 0.0¶
-
corrupt_devices_range
= 1000¶
-
diffusion
= 0.0¶
-
diffusion_dtod
= 0.0¶
-
dw_min
: float = 0.005¶
-
dw_min_dtod
: float = 0.1¶
-
dw_min_std
: float = 0.3¶
-
enforce_consistency
= True¶
-
gamma_down
: float = 0.05¶
-
gamma_down_dtod
: float = 0.01¶
-
gamma_up
: float = 0.05¶
-
gamma_up_dtod
: float = 0.01¶
-
lifetime
: float = 1000000.0¶
-
lifetime_dtod
: float = 0.3¶
-
mean_bound_reference
: bool = True¶
-
mult_noise
: bool = False¶
-
perfect_bias
= False¶
-
requires_decay
()¶ Return whether device has decay enabled.
- Return type
bool
-
requires_diffusion
()¶ Return whether device has diffusion enabled.
- Return type
bool
-
reset
= 0.01¶
-
reset_dtod
= 0.0¶
-
reset_std
= 0.01¶
-
up_down
: float = 0.0¶
-
up_down_dtod
: float = 0.06¶
-
w_max
: float = 1.0¶
-
w_max_dtod
: float = 0.07¶
-
w_min
: float = -1.0¶
-
w_min_dtod
: float = 0.07¶
-
write_noise_std
: float = 0.0¶
-
-
class
aihwkit.simulator.presets.devices.
EcRamMOPresetDevice
(construction_seed=0, corrupt_devices_prob=0.0, corrupt_devices_range=1000, diffusion=0.0, diffusion_dtod=0.0, drift=<factory>, dw_min=0.00028214, dw_min_dtod=0.1, dw_min_std=2.0, enforce_consistency=True, lifetime=0.0, lifetime_dtod=0.0, perfect_bias=False, reset=0.01, reset_dtod=0.0, reset_std=0.01, up_down=0.0, up_down_dtod=0.01, w_max=1.1714, w_max_dtod=0.05, w_min=-0.8286, w_min_dtod=0.05, gamma_up=0.4152, gamma_down=0.7342, gamma_up_dtod=0.05, gamma_down_dtod=0.05, allow_increasing=False, mean_bound_reference=True, mult_noise=True, write_noise_std=0.0)¶ Bases:
aihwkit.simulator.configs.devices.LinearStepDevice
Preset configuration for a single metal-oxide ECRAM resistive processing unit based on linear step device.
Based on data from Kim et al. IEDM, 2019
-
allow_increasing
= False¶
-
as_bindings
()¶ Return a representation of this instance as a simulator bindings object.
- Return type
aihwkit.simulator.rpu_base.devices.PulsedResistiveDeviceParameter
-
construction_seed
= 0¶
-
corrupt_devices_prob
= 0.0¶
-
corrupt_devices_range
= 1000¶
-
diffusion
= 0.0¶
-
diffusion_dtod
= 0.0¶
-
dw_min
: float = 0.00028214¶
-
dw_min_dtod
: float = 0.1¶
-
dw_min_std
: float = 2.0¶
-
enforce_consistency
= True¶
-
gamma_down
: float = 0.7342¶
-
gamma_down_dtod
: float = 0.05¶
-
gamma_up
: float = 0.4152¶
-
gamma_up_dtod
: float = 0.05¶
-
lifetime
= 0.0¶
-
lifetime_dtod
= 0.0¶
-
mean_bound_reference
: bool = True¶
-
mult_noise
: bool = True¶
-
perfect_bias
= False¶
-
requires_decay
()¶ Return whether device has decay enabled.
- Return type
bool
-
requires_diffusion
()¶ Return whether device has diffusion enabled.
- Return type
bool
-
reset
= 0.01¶
-
reset_dtod
= 0.0¶
-
reset_std
= 0.01¶
-
up_down
: float = 0.0¶
-
up_down_dtod
: float = 0.01¶
-
w_max
: float = 1.1714¶
-
w_max_dtod
: float = 0.05¶
-
w_min
: float = -0.8286¶
-
w_min_dtod
: float = 0.05¶
-
write_noise_std
: float = 0.0¶
-
-
class
aihwkit.simulator.presets.devices.
EcRamPresetDevice
(construction_seed=0, corrupt_devices_prob=0.0, corrupt_devices_range=1000, diffusion=0.0, diffusion_dtod=0.0, drift=<factory>, dw_min=0.002, dw_min_dtod=0.1, dw_min_std=0.3, enforce_consistency=True, lifetime=0.0, lifetime_dtod=0.0, perfect_bias=False, reset=0.01, reset_dtod=0.0, reset_std=0.01, up_down=0.0, up_down_dtod=0.01, w_max=1.1724, w_max_dtod=0.05, w_min=-0.8276, w_min_dtod=0.05, gamma_up=0.1153, gamma_down=0.5085, gamma_up_dtod=0.05, gamma_down_dtod=0.05, allow_increasing=False, mean_bound_reference=True, mult_noise=True, write_noise_std=0.0)¶ Bases:
aihwkit.simulator.configs.devices.LinearStepDevice
Preset configuration for a single Lithium-based ECRAM resistive processing unit based on linear step device.
Fit of the model
LinearStepDevice
to Tang & al., IEDM, 2018The range is shifted, so that the symmetry point is at zero.
-
allow_increasing
= False¶
-
as_bindings
()¶ Return a representation of this instance as a simulator bindings object.
- Return type
aihwkit.simulator.rpu_base.devices.PulsedResistiveDeviceParameter
-
construction_seed
= 0¶
-
corrupt_devices_prob
= 0.0¶
-
corrupt_devices_range
= 1000¶
-
diffusion
= 0.0¶
-
diffusion_dtod
= 0.0¶
-
dw_min
: float = 0.002¶
-
dw_min_dtod
: float = 0.1¶
-
dw_min_std
: float = 0.3¶
-
enforce_consistency
= True¶
-
gamma_down
: float = 0.5085¶
-
gamma_down_dtod
: float = 0.05¶
-
gamma_up
: float = 0.1153¶
-
gamma_up_dtod
: float = 0.05¶
-
lifetime
= 0.0¶
-
lifetime_dtod
= 0.0¶
-
mean_bound_reference
: bool = True¶
-
mult_noise
: bool = True¶
-
perfect_bias
= False¶
-
requires_decay
()¶ Return whether device has decay enabled.
- Return type
bool
-
requires_diffusion
()¶ Return whether device has diffusion enabled.
- Return type
bool
-
reset
= 0.01¶
-
reset_dtod
= 0.0¶
-
reset_std
= 0.01¶
-
up_down
: float = 0.0¶
-
up_down_dtod
: float = 0.01¶
-
w_max
: float = 1.1724¶
-
w_max_dtod
: float = 0.05¶
-
w_min
: float = -0.8276¶
-
w_min_dtod
: float = 0.05¶
-
write_noise_std
: float = 0.0¶
-
-
class
aihwkit.simulator.presets.devices.
GokmenVlasovPresetDevice
(construction_seed=0, corrupt_devices_prob=0.0, corrupt_devices_range=1000, diffusion=0.0, diffusion_dtod=0.0, drift=<factory>, dw_min=0.0016, dw_min_dtod=0.3, dw_min_std=0.3, enforce_consistency=True, lifetime=0.0, lifetime_dtod=0.0, perfect_bias=False, reset=0.01, reset_dtod=0.0, reset_std=0.01, up_down=0.0, up_down_dtod=0.01, w_max=1.0, w_max_dtod=0.3, w_min=-1.0, w_min_dtod=0.3)¶ Bases:
aihwkit.simulator.configs.devices.ConstantStepDevice
Preset configuration using
ConstantStepDevice
.Definitions are (largely) from the specifications listed in Gokmen & Vlasov, Front. Neurosci. 2016 (which includes a number of device-to-device and cycle-to-cycle variations, see
PulsedDevice
).Note, however, that we use some of the algorithmic optimization of the follow-up papers as well and here scale everything to the weight range
-1..1
.-
as_bindings
()¶ Return a representation of this instance as a simulator bindings object.
- Return type
aihwkit.simulator.rpu_base.devices.PulsedResistiveDeviceParameter
-
construction_seed
= 0¶
-
corrupt_devices_prob
= 0.0¶
-
corrupt_devices_range
= 1000¶
-
diffusion
= 0.0¶
-
diffusion_dtod
= 0.0¶
-
dw_min
: float = 0.0016¶
-
dw_min_dtod
: float = 0.3¶
-
dw_min_std
: float = 0.3¶
-
enforce_consistency
= True¶
-
lifetime
= 0.0¶
-
lifetime_dtod
= 0.0¶
-
perfect_bias
= False¶
-
requires_decay
()¶ Return whether device has decay enabled.
- Return type
bool
-
requires_diffusion
()¶ Return whether device has diffusion enabled.
- Return type
bool
-
reset
= 0.01¶
-
reset_dtod
= 0.0¶
-
reset_std
= 0.01¶
-
up_down
: float = 0.0¶
-
up_down_dtod
: float = 0.01¶
-
w_max
: float = 1.0¶
-
w_max_dtod
: float = 0.3¶
-
w_min
: float = -1.0¶
-
w_min_dtod
: float = 0.3¶
-
-
class
aihwkit.simulator.presets.devices.
IdealizedPresetDevice
(construction_seed=0, corrupt_devices_prob=0.0, corrupt_devices_range=1000, diffusion=0.0, diffusion_dtod=0.0, drift=<factory>, dw_min=0.0002, dw_min_dtod=0.3, dw_min_std=0.3, enforce_consistency=True, lifetime=0.0, lifetime_dtod=0.0, perfect_bias=False, reset=0.01, reset_dtod=0.0, reset_std=0.01, up_down=0.0, up_down_dtod=0.0, w_max=1.0, w_max_dtod=0.3, w_min=-1.0, w_min_dtod=0.3)¶ Bases:
aihwkit.simulator.configs.devices.ConstantStepDevice
Preset configuration using an idealized device using
ConstantStepDevice
.(On average) perfectly symmetric device with 10000 steps.
Definitions are from the specifications listed in Gokmen & Vlasov, Front. Neurosci. 2016 (which includes a number of device-to-device and cycle-to-cycle variations, see
PulsedDevice
), however, setting the device-to-device asymmetry term to zero and increasing the number of states by roughly 8 (to 10000 states).This is the same device used for Rasch, Gokmen & Haensch, IEEE Design & Test, 2019.
-
as_bindings
()¶ Return a representation of this instance as a simulator bindings object.
- Return type
aihwkit.simulator.rpu_base.devices.PulsedResistiveDeviceParameter
-
construction_seed
= 0¶
-
corrupt_devices_prob
= 0.0¶
-
corrupt_devices_range
= 1000¶
-
diffusion
= 0.0¶
-
diffusion_dtod
= 0.0¶
-
dw_min
: float = 0.0002¶
-
dw_min_dtod
: float = 0.3¶
-
dw_min_std
: float = 0.3¶
-
enforce_consistency
= True¶
-
lifetime
= 0.0¶
-
lifetime_dtod
= 0.0¶
-
perfect_bias
= False¶
-
requires_decay
()¶ Return whether device has decay enabled.
- Return type
bool
-
requires_diffusion
()¶ Return whether device has diffusion enabled.
- Return type
bool
-
reset
= 0.01¶
-
reset_dtod
= 0.0¶
-
reset_std
= 0.01¶
-
up_down
: float = 0.0¶
-
up_down_dtod
: float = 0.0¶
-
w_max
: float = 1.0¶
-
w_max_dtod
: float = 0.3¶
-
w_min
: float = -1.0¶
-
w_min_dtod
: float = 0.3¶
-
-
class
aihwkit.simulator.presets.devices.
ReRamESPresetDevice
(construction_seed=0, corrupt_devices_prob=0.0, corrupt_devices_range=1000, diffusion=0.0, diffusion_dtod=0.0, drift=<factory>, dw_min=0.00135, dw_min_dtod=0.2, dw_min_std=5.0, enforce_consistency=True, lifetime=0.0, lifetime_dtod=0.0, perfect_bias=False, reset=0.01, reset_dtod=0.0, reset_std=0.01, up_down=0.259359, up_down_dtod=0.05, w_max=1.0, w_max_dtod=0.3, w_min=-1.0, w_min_dtod=0.3, A_up=-1.18445, A_down=-0.081404, gamma_up=5.0, gamma_down=5.0, a=-0.5, b=-0.5, write_noise_std=75.0)¶ Bases:
aihwkit.simulator.configs.devices.ExpStepDevice
Preset configuration for a single RRAM analog resistive processing unit based on exp. step device.
Fit of the model
ExpStepDevice
to Gong & al., Nat. Commun., 2018.-
A_down
: float = -0.081404¶
-
A_up
: float = -1.18445¶
-
a
: float = -0.5¶
-
as_bindings
()¶ Return a representation of this instance as a simulator bindings object.
- Return type
aihwkit.simulator.rpu_base.devices.PulsedResistiveDeviceParameter
-
b
: float = -0.5¶
-
construction_seed
= 0¶
-
corrupt_devices_prob
= 0.0¶
-
corrupt_devices_range
= 1000¶
-
diffusion
= 0.0¶
-
diffusion_dtod
= 0.0¶
-
dw_min
: float = 0.00135¶
-
dw_min_dtod
: float = 0.2¶
-
dw_min_std
: float = 5.0¶
-
enforce_consistency
= True¶
-
gamma_down
: float = 5.0¶
-
gamma_up
: float = 5.0¶
-
lifetime
= 0.0¶
-
lifetime_dtod
= 0.0¶
-
perfect_bias
= False¶
-
requires_decay
()¶ Return whether device has decay enabled.
- Return type
bool
-
requires_diffusion
()¶ Return whether device has diffusion enabled.
- Return type
bool
-
reset
= 0.01¶
-
reset_dtod
= 0.0¶
-
reset_std
= 0.01¶
-
up_down
: float = 0.259359¶
-
up_down_dtod
: float = 0.05¶
-
w_max
: float = 1.0¶
-
w_max_dtod
: float = 0.3¶
-
w_min
: float = -1.0¶
-
w_min_dtod
: float = 0.3¶
-
write_noise_std
: float = 75.0¶
-
-
class
aihwkit.simulator.presets.devices.
ReRamSBPresetDevice
(construction_seed=0, corrupt_devices_prob=0.0, corrupt_devices_range=1000, diffusion=0.0, diffusion_dtod=0.0, drift=<factory>, dw_min=0.002, dw_min_dtod=0.3, dw_min_std=3.75, enforce_consistency=True, lifetime=0.0, lifetime_dtod=0.0, perfect_bias=False, reset=0.01, reset_dtod=0.0, reset_std=0.01, up_down=0.0, up_down_dtod=0.01, w_max=1.25, w_max_dtod=0.24, w_min=-0.75, w_min_dtod=0.39999999999999997, mult_noise=False, write_noise_std=56)¶ Bases:
aihwkit.simulator.configs.devices.SoftBoundsDevice
Preset configuration for a single ReRAM analog resistive processing unit based on soft bounds device.
Loose fit of the model
SoftBoundsDevice
to Gong & al., Nat. Commun., 2018.Note
Here it is assumed that the devices have been calibrated to the symmetry point by subtracting a reference device (which is in this case not explicitly modeled). For a more accurate fit see
ReRamESPresetDevice
.-
as_bindings
()¶ Return a representation of this instance as a simulator bindings object.
- Return type
aihwkit.simulator.rpu_base.devices.PulsedResistiveDeviceParameter
-
construction_seed
= 0¶
-
corrupt_devices_prob
= 0.0¶
-
corrupt_devices_range
= 1000¶
-
diffusion
= 0.0¶
-
diffusion_dtod
= 0.0¶
-
dw_min
: float = 0.002¶
-
dw_min_dtod
: float = 0.3¶
-
dw_min_std
: float = 3.75¶
-
enforce_consistency
= True¶
-
lifetime
= 0.0¶
-
lifetime_dtod
= 0.0¶
-
mult_noise
: bool = False¶
-
perfect_bias
= False¶
-
requires_decay
()¶ Return whether device has decay enabled.
- Return type
bool
-
requires_diffusion
()¶ Return whether device has diffusion enabled.
- Return type
bool
-
reset
= 0.01¶
-
reset_dtod
= 0.0¶
-
reset_std
= 0.01¶
-
up_down
: float = 0.0¶
-
up_down_dtod
: float = 0.01¶
-
w_max
: float = 1.25¶
-
w_max_dtod
: float = 0.24¶
-
w_min
: float = -0.75¶
-
w_min_dtod
: float = 0.39999999999999997¶
-
write_noise_std
: float = 56¶
-