pub struct ModernBertWeights<T> {
pub tok_embeddings: T,
pub emb_norm_weight: T,
pub final_norm_weight: T,
pub zero_bias: T,
pub layers: Vec<ModernBertLayerWeights<T>>,
pub num_heads: usize,
pub head_dim: usize,
pub hidden_dim: usize,
pub intermediate_dim: usize,
pub layer_norm_eps: f32,
pub local_window: usize,
}Expand description
Full ModernBERT model weights, generic over tensor type.
Includes embedding table, per-layer encoder weights, final norm, and model
geometry. The tensor type T becomes
Driver::Tensor when loaded onto a
specific backend.
Fields§
§tok_embeddings: TWord embedding table [vocab_size, hidden].
emb_norm_weight: TPost-embedding LayerNorm weight [hidden] (no bias).
final_norm_weight: TFinal LayerNorm weight [hidden] applied before pooling (no bias).
zero_bias: TA zero-filled tensor [hidden] used as dummy bias for LayerNorm calls.
The Driver::layer_norm API requires a bias tensor; ModernBERT has
none, so we pass this zero buffer instead.
layers: Vec<ModernBertLayerWeights<T>>Per-layer encoder weights.
num_heads: usizeNumber of attention heads (12 for modernbert-embed-base).
head_dim: usizeDimension per attention head (hidden / num_heads, 64).
Hidden dimension (768 for modernbert-embed-base).
intermediate_dim: usizeMLP intermediate dimension (1152 for modernbert-embed-base).
layer_norm_eps: f32Layer normalization epsilon (1e-5).
local_window: usizeSliding window size for local attention layers (128).
Auto Trait Implementations§
impl<T> Freeze for ModernBertWeights<T>where
T: Freeze,
impl<T> RefUnwindSafe for ModernBertWeights<T>where
T: RefUnwindSafe,
impl<T> Send for ModernBertWeights<T>where
T: Send,
impl<T> Sync for ModernBertWeights<T>where
T: Sync,
impl<T> Unpin for ModernBertWeights<T>where
T: Unpin,
impl<T> UnsafeUnpin for ModernBertWeights<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for ModernBertWeights<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.