pub struct ParamRegistry { /* private fields */ }Expand description
Assigns and remembers a stable ParamId for every parameter an optimizer sees.
Cheap to clone and free of interior mutability, so optimizers embedding it stay
Clone + Send + Sync.
Implementations§
Source§impl ParamRegistry
impl ParamRegistry
Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Forgets every registration. Call this alongside clearing optimizer state.
Sourcepub fn key(&self, id: ParamId) -> Option<&str>
pub fn key(&self, id: ParamId) -> Option<&str>
The canonical state-map key for id, if it has been registered.
Sourcepub fn name(&self, id: ParamId) -> Option<&str>
pub fn name(&self, id: ParamId) -> Option<&str>
The stable name of id, if it was registered through the named path.
Sourcepub fn numel(&self, id: ParamId) -> Option<usize>
pub fn numel(&self, id: ParamId) -> Option<usize>
The element count recorded for id, if it has been registered.
Sourcepub fn id_for_named_tensor(
&mut self,
name: &str,
tensor: &Tensor,
) -> Result<ParamId>
pub fn id_for_named_tensor( &mut self, name: &str, tensor: &Tensor, ) -> Result<ParamId>
Resolves the id of a parameter identified by a stable caller-supplied name.
The first call for a given name registers it; later calls return the same id regardless of where the tensor lives in memory.
Sourcepub fn id_for_named_addr(
&mut self,
name: &str,
addr: usize,
numel: usize,
) -> ParamId
pub fn id_for_named_addr( &mut self, name: &str, addr: usize, numel: usize, ) -> ParamId
Resolves the id for a name plus an already-extracted address / element count.
Sourcepub fn id_for_tensor(&mut self, tensor: &Tensor) -> Result<ParamId>
pub fn id_for_tensor(&mut self, tensor: &Tensor) -> Result<ParamId>
Resolves the id of an anonymous parameter tensor.
See the module documentation for the ordering contract this implies for checkpoint resume.
§Errors
Returns an error when a slot restored from a checkpoint is bound to a parameter whose element count does not match, which means the caller is presenting parameters in a different order than the checkpointed run.
Sourcepub fn id_for_addr(&mut self, addr: usize, numel: usize) -> Result<ParamId>
pub fn id_for_addr(&mut self, addr: usize, numel: usize) -> Result<ParamId>
Resolves the id for an already-extracted address / element count.
§Errors
Sourcepub fn rebind(&mut self, id: ParamId, tensor: &Tensor) -> Result<()>
pub fn rebind(&mut self, id: ParamId, tensor: &Tensor) -> Result<()>
Re-points an existing slot at a new data address.
Optimizers that write results back with
Tensor::set_data_f32 — which
replaces the underlying buffer rather than mutating it — must call this after the
write so the anonymous identity cache keeps tracking the parameter. Optimizers
that mutate through iter_mut() keep their address and need not call it.
§Errors
Returns an error when id was never registered or the tensor dtype is unsupported.
Sourcepub fn key_for_named_tensor(
&mut self,
name: &str,
tensor: &Tensor,
) -> Result<String>
pub fn key_for_named_tensor( &mut self, name: &str, tensor: &Tensor, ) -> Result<String>
Convenience wrapper returning the canonical state-map key for a named tensor.
§Errors
Returns an error for tensor dtypes whose data address cannot be taken.
Sourcepub fn key_for_named_addr(
&mut self,
name: &str,
addr: usize,
numel: usize,
) -> String
pub fn key_for_named_addr( &mut self, name: &str, addr: usize, numel: usize, ) -> String
Convenience wrapper returning the canonical state-map key for a named parameter given its address and element count.
Sourcepub fn key_for_tensor(&mut self, tensor: &Tensor) -> Result<String>
pub fn key_for_tensor(&mut self, tensor: &Tensor) -> Result<String>
Convenience wrapper returning the canonical state-map key for a tensor.
This is the direct replacement for the old format!("{:p}", …) idiom.
§Errors
Sourcepub fn key_for_addr(&mut self, addr: usize, numel: usize) -> Result<String>
pub fn key_for_addr(&mut self, addr: usize, numel: usize) -> Result<String>
Convenience wrapper returning the canonical state-map key for an anonymous parameter given its data address and element count.
§Errors
Sourcepub fn restore_key(&mut self, key: &str, numel: usize) -> Result<ParamId>
pub fn restore_key(&mut self, key: &str, numel: usize) -> Result<ParamId>
Re-creates the registry slot described by a checkpointed state key.
numel is the length of the restored buffer and is used to validate later
bindings. The recreated slot has no address, so the first matching update()
of the resuming run claims it.
§Errors
Returns an error when key does not use a recognised identity prefix.
Trait Implementations§
Source§impl Clone for ParamRegistry
impl Clone for ParamRegistry
Source§fn clone(&self) -> ParamRegistry
fn clone(&self) -> ParamRegistry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ParamRegistry
impl Debug for ParamRegistry
Source§impl Default for ParamRegistry
impl Default for ParamRegistry
Source§fn default() -> ParamRegistry
fn default() -> ParamRegistry
Auto Trait Implementations§
impl Freeze for ParamRegistry
impl RefUnwindSafe for ParamRegistry
impl Send for ParamRegistry
impl Sync for ParamRegistry
impl Unpin for ParamRegistry
impl UnsafeUnpin for ParamRegistry
impl UnwindSafe for ParamRegistry
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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