pub struct DistributedOptimizer<O: Optimizer> { /* private fields */ }Expand description
Distributed optimizer wrapper
This wrapper can be applied to any optimizer to enable distributed training. It handles gradient synchronization across multiple processes before applying the underlying optimizer’s update rule.
Implementations§
Source§impl<O: Optimizer> DistributedOptimizer<O>
impl<O: Optimizer> DistributedOptimizer<O>
Sourcepub fn new(optimizer: O, config: DistributedConfig) -> OptimizerResult<Self>
pub fn new(optimizer: O, config: DistributedConfig) -> OptimizerResult<Self>
Create a new distributed optimizer
Sourcepub fn config(&self) -> &DistributedConfig
pub fn config(&self) -> &DistributedConfig
Get the configuration
Sourcepub fn set_config(&mut self, config: DistributedConfig)
pub fn set_config(&mut self, config: DistributedConfig)
Update the configuration
Sourcepub fn get_communication_stats(&self) -> CommunicationStats
pub fn get_communication_stats(&self) -> CommunicationStats
Get communication statistics
Sourcepub fn synchronize_gradients(&mut self) -> OptimizerResult<()>
pub fn synchronize_gradients(&mut self) -> OptimizerResult<()>
Synchronize gradients across all processes
Sourcepub fn create_gradient_buckets(
&mut self,
parameters: &[Arc<RwLock<Tensor>>],
) -> OptimizerResult<()>
pub fn create_gradient_buckets( &mut self, parameters: &[Arc<RwLock<Tensor>>], ) -> OptimizerResult<()>
Create gradient buckets for efficient communication
Trait Implementations§
Source§impl<O: Optimizer> Optimizer for DistributedOptimizer<O>
impl<O: Optimizer> Optimizer for DistributedOptimizer<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 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 DistributedOptimizer<O>where
O: Freeze,
impl<O> !RefUnwindSafe for DistributedOptimizer<O>
impl<O> Send for DistributedOptimizer<O>where
O: Send,
impl<O> Sync for DistributedOptimizer<O>where
O: Sync,
impl<O> Unpin for DistributedOptimizer<O>where
O: Unpin,
impl<O> UnsafeUnpin for DistributedOptimizer<O>where
O: UnsafeUnpin,
impl<O> !UnwindSafe for DistributedOptimizer<O>
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
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