pub struct Soap {
pub lr: f32,
pub beta1: f32,
pub beta2: f32,
pub shampoo_beta: f32,
pub eps: f32,
pub weight_decay: f32,
pub precond_freq: u64,
pub jacobi_sweeps: u32,
/* private fields */
}Expand description
SOAP — Shampoo-in-Adam-basis optimizer.
Fields§
§lr: f32Learning rate.
beta1: f32First-moment EMA decay (in the rotated basis). Default 0.95.
beta2: f32Second-moment EMA decay (in the rotated basis). Default 0.95.
shampoo_beta: f32Decay for the L/R covariance EMAs. Often equal to β₂.
eps: f32Denominator stability constant. Default 1e-8.
weight_decay: f32Decoupled weight-decay coefficient λ. Default 0.01.
precond_freq: u64Recompute the eigenbasis every precond_freq steps. Larger
values amortize the Jacobi cost but lag the preconditioner.
Default 10.
jacobi_sweeps: u32Max Jacobi sweeps per rediagonalization. Default 30.
Implementations§
Trait Implementations§
Source§impl Optimizer for Soap
impl Optimizer for Soap
fn step(&mut self, name: &str, shape: &[usize], param: &mut [f32], grad: &[f32])
Source§fn end_iteration(&mut self)
fn end_iteration(&mut self)
Advance the global step counter. Most algorithms increment per
call to [
step], so most implementations leave this a no-op.Source§fn lr_scale(&self, _name: &str) -> f32
fn lr_scale(&self, _name: &str) -> f32
Per-tensor multiplier on the effective learning rate. Default
is
1.0 for every name. Override when wrapping this crate to
support per-name LR schedules (e.g. embedding-vs-attention
splits, or the Gaussian-splat attribute-typed LR setup). The
CPU impls in this crate currently honor this only when the
caller passes a pre-scaled lr for the relevant call —
backends are encouraged to consult it inside their fused
kernel.Auto Trait Implementations§
impl Freeze for Soap
impl RefUnwindSafe for Soap
impl Send for Soap
impl Sync for Soap
impl Unpin for Soap
impl UnsafeUnpin for Soap
impl UnwindSafe for Soap
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