Skip to main content

CpuModel

Struct CpuModel 

Source
pub struct CpuModel<'a> {
    pub p: &'a Packed,
    pub embed: QLinear<'a>,
    pub layers: Vec<Layer<'a>>,
    pub final_mixer: HcWeights<'a>,
    pub lm_head: QLinear<'a>,
    pub mtp: Option<MtpWeights<'a>>,
}

Fields§

§p: &'a Packed§embed: QLinear<'a>§layers: Vec<Layer<'a>>§final_mixer: HcWeights<'a>§lm_head: QLinear<'a>§mtp: Option<MtpWeights<'a>>

Implementations§

Source§

impl<'a> CpuModel<'a>

Source

pub fn load(p: &'a Packed) -> Result<Self>

Source§

impl<'a> CpuModel<'a>

Source

pub fn new_state(&self) -> State

Source

pub fn mtp_forward( &self, token: u32, hyper_in: &[f32], pos: usize, state: &mut State, ) -> Result<(Vec<f32>, Vec<f32>)>

MTP draft head at trunk position pos: pairs the trunk’s wide residual for that position (hyper_in) with the embedding of the token that follows it, appends to the head’s KV cache (which must hold exactly pos entries) and returns (logits for the token after token, the head’s wide residual for chained drafting).

Source

pub fn forward_token(&self, token: u32, state: &mut State) -> Result<Vec<f32>>

Forward one token at state.pos; returns logits.

Source

fn gated_residual( &self, w: &HcWeights<'_>, hyper: &[f32], eps: f32, ) -> (Vec<f32>, Vec<f32>)

Gated residual read: returns the mixed hidden input for the block and the per-stream injection weights (empty for the final mixer).

Source

fn moe(&self, w: &MoeWeights<'_>, x: &[f32]) -> Vec<f32>

Source

fn attention( &self, w: &AttnWeights<'_>, x: &[f32], cache: &mut KvCache, pos: usize, ) -> Result<Vec<f32>>

Source

fn select_tokens( &self, w: &AttnWeights<'_>, iq: &[f32], cache: &KvCache, pos: usize, ) -> Vec<usize>

QSA indexer for one query at pos over the causal prefix: blocks of compress_ratio tokens scored by relu(q . pooled_key) summed over index heads; the top budget / ratio blocks plus the incomplete tail are visible. Returns visible token indices in ascending order.

Source

fn deltanet( &self, w: &DeltaWeights<'_>, x: &[f32], state: &mut DeltaState, ) -> Vec<f32>

Gated DeltaNet, recurrent form, f32 state; sigmoid output gate.

Source

fn ngram_ids(&self, w: &PleWeights<'_>, tokens: &[u32]) -> Vec<u64>

Source

pub fn ngram_ids_from( c: &Qwen4ExpConfig, multipliers: &[i64], head_offsets: &[u64], head_sizes: &[u64], tokens: &[u32], ) -> Vec<u64>

Hashed n-gram ids for the current (last) token: bigram heads then trigram heads. A token before the current segment (past an EOS, or before the start) reads as EOS. Multiplication wraps like torch int64.

Source

fn ple( &self, w: &PleWeights<'_>, hyper: &[f32], state: &mut State, ) -> Result<Vec<f32>>

PLE block: n-gram embedding, per-stream key/query gating, value, dilated depthwise conv with SiLU. Returns the hc_hidden-wide addend.

Auto Trait Implementations§

§

impl<'a> Freeze for CpuModel<'a>

§

impl<'a> RefUnwindSafe for CpuModel<'a>

§

impl<'a> Send for CpuModel<'a>

§

impl<'a> Sync for CpuModel<'a>

§

impl<'a> Unpin for CpuModel<'a>

§

impl<'a> UnsafeUnpin for CpuModel<'a>

§

impl<'a> UnwindSafe for CpuModel<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> DropFlavorWrapper<T> for T

§

type Flavor = MayDrop

The DropFlavor that [wrap]s T into Self
§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

§

const WITNESS: W = W::MAKE

A constant of the type witness
§

impl<T> Identity for T
where T: ?Sized,

§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more