Skip to main content

DistributedDataParallel

Struct DistributedDataParallel 

Source
pub struct DistributedDataParallel<M: Module> { /* private fields */ }
Expand description

Wrapper that enables distributed data parallel training.

DDP replicates the model across multiple processes and synchronizes gradients during the backward pass.

Implementations§

Source§

impl<M: Module> DistributedDataParallel<M>

Source

pub fn new(module: M, process_group: ProcessGroup) -> Self

Creates a new DDP wrapper.

Source

pub fn broadcast_buffers(self, broadcast: bool) -> Self

Sets whether to broadcast buffers from rank 0.

Source

pub fn gradient_as_bucket_view(self, bucket_view: bool) -> Self

Sets whether to use gradient bucketing.

Source

pub fn module(&self) -> &M

Returns a reference to the underlying module.

Source

pub fn module_mut(&mut self) -> &mut M

Returns a mutable reference to the underlying module.

Source

pub fn process_group(&self) -> &ProcessGroup

Returns the process group.

Source

pub fn sync_parameters(&mut self)

Synchronizes model parameters across all processes. Should be called once at the start of training to ensure all ranks start from identical parameters (broadcast from rank 0).

Source

pub fn sync_gradients(&self)

Synchronizes gradients across all processes. Should be called after the backward pass. All-reduces gradients so every rank gets the average gradient across all ranks.

Source

pub fn forward(&self, input: &Variable) -> Variable

Performs forward pass with gradient synchronization.

Trait Implementations§

Source§

impl<M: Module> Module for DistributedDataParallel<M>

Source§

fn forward(&self, input: &Variable) -> Variable

Performs the forward pass. Read more
Source§

fn parameters(&self) -> Vec<Parameter>

Returns all parameters of this module. Read more
Source§

fn train(&mut self)

Sets the module to training mode.
Source§

fn eval(&mut self)

Sets the module to evaluation mode.
Source§

fn is_training(&self) -> bool

Returns whether the module is in training mode. Read more
Source§

fn named_parameters(&self) -> HashMap<String, Parameter>

Returns named parameters of this module.
Source§

fn num_parameters(&self) -> usize

Returns the number of trainable parameters.
Source§

fn set_training(&mut self, _training: bool)

Sets the training mode. Sets the training mode. Read more
Source§

fn zero_grad(&self)

Zeros all gradients of parameters.
Source§

fn to_device(&self, device: Device)

Moves all parameters to the specified device. Read more
Source§

fn name(&self) -> &'static str

Returns the module name for debugging.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V