pub struct GradientCheckpointer {
pub config: CheckpointerConfig,
pub global_step: u64,
/* private fields */
}Expand description
Production-grade gradient checkpointing engine.
Collects GcGradientTensor objects via accumulate,
combines them into a GcGradientCheckpoint via flush,
and maintains a bounded history of the most recent checkpoints.
Fields§
§config: CheckpointerConfigRuntime configuration.
global_step: u64Cumulative step counter. Incremented once per accumulate call.
Implementations§
Source§impl GradientCheckpointer
impl GradientCheckpointer
Sourcepub fn new(config: CheckpointerConfig) -> Self
pub fn new(config: CheckpointerConfig) -> Self
Create a new checkpointer with the given configuration.
Sourcepub fn accumulate(&mut self, gradient: GcGradientTensor)
pub fn accumulate(&mut self, gradient: GcGradientTensor)
Push a gradient tensor into the accumulation buffer for its layer.
The global step counter is incremented once per call.
Sourcepub fn flush(
&mut self,
now: u64,
) -> Result<GcGradientCheckpoint, GradientCheckpointerError>
pub fn flush( &mut self, now: u64, ) -> Result<GcGradientCheckpoint, GradientCheckpointerError>
Flush accumulated gradients into a new checkpoint.
Applies the configured accumulation mode over all pending tensors for
each layer, optionally clips the resulting global norm, computes a
FNV-1a checksum, and stores the checkpoint. If the checkpoint count
exceeds max_checkpoints, the oldest entry is evicted.
§Errors
Returns GradientCheckpointerError::NoAccumulatedGradients when
there are no pending tensors.
Sourcepub fn replay(&self, checkpoint: &GcGradientCheckpoint) -> Vec<GcGradientTensor>
pub fn replay(&self, checkpoint: &GcGradientCheckpoint) -> Vec<GcGradientTensor>
Return gradient tensors from checkpoint sorted by layer_id.
Sourcepub fn latest_checkpoint(&self) -> Option<&GcGradientCheckpoint>
pub fn latest_checkpoint(&self) -> Option<&GcGradientCheckpoint>
Return a reference to the most recently flushed checkpoint, if any.
Sourcepub fn checkpoint_by_id(
&self,
id: CheckpointId,
) -> Option<&GcGradientCheckpoint>
pub fn checkpoint_by_id( &self, id: CheckpointId, ) -> Option<&GcGradientCheckpoint>
Return a reference to the checkpoint with the given id, if it still
resides in the bounded history.
Sourcepub fn diff(
&self,
a: &GcGradientCheckpoint,
b: &GcGradientCheckpoint,
) -> HashMap<String, f64>
pub fn diff( &self, a: &GcGradientCheckpoint, b: &GcGradientCheckpoint, ) -> HashMap<String, f64>
Compute the per-layer L2 distance between two checkpoints.
For each layer present in either checkpoint the function returns the L2
distance between the corresponding gradient value vectors. If a layer
is absent in one of the checkpoints its contribution is 0.0.
Sourcepub fn global_norm(&self, checkpoint: &GcGradientCheckpoint) -> f64
pub fn global_norm(&self, checkpoint: &GcGradientCheckpoint) -> f64
Compute the global L2 norm of a checkpoint (sqrt of sum of squared per-layer norms).
Sourcepub fn pending_layers(&self) -> Vec<&str>
pub fn pending_layers(&self) -> Vec<&str>
Return a sorted list of layer IDs that have pending (unflushed) gradients.
Sourcepub fn pending_count(&self) -> usize
pub fn pending_count(&self) -> usize
Return the total count of pending gradient tensors across all layers.
Sourcepub fn stats(&self) -> GcCheckpointerStats
pub fn stats(&self) -> GcCheckpointerStats
Return a snapshot of current checkpointer statistics.
Auto Trait Implementations§
impl Freeze for GradientCheckpointer
impl RefUnwindSafe for GradientCheckpointer
impl Send for GradientCheckpointer
impl Sync for GradientCheckpointer
impl Unpin for GradientCheckpointer
impl UnsafeUnpin for GradientCheckpointer
impl UnwindSafe for GradientCheckpointer
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
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>
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