pub enum NormFunction {
Rms,
LayerNorm,
LayerNormBias,
LayerNormNoParams,
RmsNoParams,
RmsBias,
}Expand description
The norm FUNCTION an architecture applies at its parametric sites –
the LLM_NORM / LLM_NORM_RMS argument of build_norm, plus
whether there is a weight to hand it.
One answer per architecture, read at every site. The loader used to
decide this with a chain of if branches restated at the
pre-attention, pre-FFN and final sites: three places that had to
agree about one thing. crate::norm_sites resolves it ONCE through
norm_function and the three sites read the result.
Variants§
Rms
LLM_NORM_RMS with a weight. The generic path’s default.
LayerNorm
LLM_NORM with a weight and no bias: dbrx
(capability::WEIGHTED_LAYER_NORM).
LayerNormBias
LLM_NORM with a weight AND a bias: orion, nemotron
(capability::BIASED_LAYER_NORM), NormOp::LayerNormBias.
LayerNormNoParams
LLM_NORM with neither: olmo
(capability::NON_PARAMETRIC_LAYER_NORM).
RmsNoParams
LLM_NORM_RMS with a null weight: talkie
(capability::NON_PARAMETRIC_RMS_NORM), NormOp::RmsNoParams.
RmsBias
LLM_NORM_RMS with a weight AND a bias: phimoe
(capability::BIASED_RMS_NORM), NormOp::RmsBias.
Implementations§
Source§impl NormFunction
impl NormFunction
Sourcepub fn resolve<E>(
self,
load: impl FnMut(NormParam) -> Result<Vec<f32>, E>,
) -> Result<NormOp, E>
pub fn resolve<E>( self, load: impl FnMut(NormParam) -> Result<Vec<f32>, E>, ) -> Result<NormOp, E>
The NormOp for one site, reading its weight through load
only when this function has a weight to read.
The closure rather than a Vec<f32> argument is the point:
LayerNormNoParams never calls it, so a file that carries no
norm tensor (OLMo-1 ships none) is never asked for one, and a
site cannot be handed a weight its function would drop.
load is asked for each PART the function has – Weight, and
for the biased form Bias too – so a function that has no bias
never asks the file for one and the biased form cannot be built
with the bias forgotten.
Trait Implementations§
Source§impl Clone for NormFunction
impl Clone for NormFunction
impl Copy for NormFunction
Source§impl Debug for NormFunction
impl Debug for NormFunction
impl Eq for NormFunction
Source§impl PartialEq for NormFunction
impl PartialEq for NormFunction
impl StructuralPartialEq for NormFunction
Auto Trait Implementations§
impl Freeze for NormFunction
impl RefUnwindSafe for NormFunction
impl Send for NormFunction
impl Sync for NormFunction
impl Unpin for NormFunction
impl UnsafeUnpin for NormFunction
impl UnwindSafe for NormFunction
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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