pub struct MixedPrecisionOptimizer<O: Optimizer> { /* private fields */ }Expand description
Mixed precision optimizer wrapper
Implementations§
Source§impl<O: Optimizer> MixedPrecisionOptimizer<O>
impl<O: Optimizer> MixedPrecisionOptimizer<O>
Sourcepub fn new(optimizer: O, config: MixedPrecisionConfig) -> Self
pub fn new(optimizer: O, config: MixedPrecisionConfig) -> Self
Create a new mixed precision optimizer wrapper
Sourcepub fn with_defaults(optimizer: O) -> Self
pub fn with_defaults(optimizer: O) -> Self
Create a mixed precision optimizer with default configuration
Sourcepub fn get_loss_scale(&self) -> f32
pub fn get_loss_scale(&self) -> f32
Get the current loss scale
Sourcepub fn is_enabled(&self) -> bool
pub fn is_enabled(&self) -> bool
Check if mixed precision is enabled
Sourcepub fn initialize_master_weights(
&mut self,
params: &[Arc<RwLock<Tensor>>],
) -> Result<()>
pub fn initialize_master_weights( &mut self, params: &[Arc<RwLock<Tensor>>], ) -> Result<()>
Initialize master weights for mixed precision training
Sourcepub fn scale_loss(&mut self, loss: &mut Tensor) -> Result<()>
pub fn scale_loss(&mut self, loss: &mut Tensor) -> Result<()>
Scale loss for backward pass
Sourcepub fn unscale_gradients(
&mut self,
params: &[Arc<RwLock<Tensor>>],
) -> Result<bool>
pub fn unscale_gradients( &mut self, params: &[Arc<RwLock<Tensor>>], ) -> Result<bool>
Unscale gradients before optimizer step
Sourcepub fn update_master_weights(
&mut self,
params: &[Arc<RwLock<Tensor>>],
) -> Result<()>
pub fn update_master_weights( &mut self, params: &[Arc<RwLock<Tensor>>], ) -> Result<()>
Update master weights from fp16 parameters
Trait Implementations§
Source§impl<O: Optimizer> Optimizer for MixedPrecisionOptimizer<O>
impl<O: Optimizer> Optimizer for MixedPrecisionOptimizer<O>
Source§fn step(&mut self) -> OptimizerResult<()>
fn step(&mut self) -> OptimizerResult<()>
Perform a single optimization step
Source§fn add_param_group(
&mut self,
params: Vec<Arc<RwLock<Tensor>>>,
options: HashMap<String, f32>,
)
fn add_param_group( &mut self, params: Vec<Arc<RwLock<Tensor>>>, options: HashMap<String, f32>, )
Add a parameter group
Source§fn parameters(&self) -> Vec<Arc<RwLock<Tensor>>>
fn parameters(&self) -> Vec<Arc<RwLock<Tensor>>>
Get the parameter tensors managed by this optimizer. Read more
Source§fn state_dict(&self) -> OptimizerResult<OptimizerState>
fn state_dict(&self) -> OptimizerResult<OptimizerState>
Get state dict for serialization
Source§fn load_state_dict(&mut self, state: OptimizerState) -> OptimizerResult<()>
fn load_state_dict(&mut self, state: OptimizerState) -> OptimizerResult<()>
Load state dict
Auto Trait Implementations§
impl<O> Freeze for MixedPrecisionOptimizer<O>where
O: Freeze,
impl<O> RefUnwindSafe for MixedPrecisionOptimizer<O>where
O: RefUnwindSafe,
impl<O> Send for MixedPrecisionOptimizer<O>where
O: Send,
impl<O> Sync for MixedPrecisionOptimizer<O>where
O: Sync,
impl<O> Unpin for MixedPrecisionOptimizer<O>where
O: Unpin,
impl<O> UnsafeUnpin for MixedPrecisionOptimizer<O>where
O: UnsafeUnpin,
impl<O> UnwindSafe for MixedPrecisionOptimizer<O>where
O: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<O> OptimizerExt for Owhere
O: Optimizer,
impl<O> OptimizerExt for Owhere
O: Optimizer,
Source§fn distributed(
self,
config: DistributedConfig,
) -> OptimizerResult<DistributedOptimizer<Self>>
fn distributed( self, config: DistributedConfig, ) -> OptimizerResult<DistributedOptimizer<Self>>
Wrap this optimizer with distributed functionality