Skip to main content

NeedleModel

Struct NeedleModel 

Source
pub struct NeedleModel {
    pub cfg: TransformerConfig,
    pub embedding: Vec<f32>,
    pub encoder_layers: Vec<EncoderLayer>,
    pub decoder_layers: Vec<DecoderLayer>,
    pub encoder_final_norm: Vec<f32>,
    pub decoder_final_norm: Vec<f32>,
    /* private fields */
}

Fields§

§cfg: TransformerConfig§embedding: Vec<f32>

Token embedding matrix [vocab_size, d_model] (also used as LM head transposed)

§encoder_layers: Vec<EncoderLayer>§decoder_layers: Vec<DecoderLayer>§encoder_final_norm: Vec<f32>

Encoder final norm scale [d_model]

§decoder_final_norm: Vec<f32>

Decoder final norm scale [d_model]

Implementations§

Source§

impl NeedleModel

Source

pub fn new( cfg: TransformerConfig, embedding: Vec<f32>, encoder_layers: Vec<EncoderLayer>, decoder_layers: Vec<DecoderLayer>, encoder_final_norm: Vec<f32>, decoder_final_norm: Vec<f32>, ) -> Self

Source

pub fn encode( &self, input_ids: &[u32], enc_kv_caches: &mut [KvCache], ) -> Vec<f32>

Run the encoder over the full input sequence. Returns encoder hidden states [enc_len, d_model]. Also fills enc_kv_caches (one per decoder layer) with cross-attn K/V projections.

Source

pub fn decode_step( &self, token_id: u32, enc_kv_caches: &[KvCache], dec_kv_caches: &mut [KvCache], logits: &mut [f32], )

Autoregressive decode: generates one token given decoder input token and KV caches. Returns logits over the full vocabulary.

Source

pub fn make_enc_kv_caches(&self, enc_len: usize) -> Vec<KvCache>

Allocate fresh KV caches for cross-attention (one per decoder layer, sized for enc input).

Source

pub fn make_dec_kv_caches(&self) -> Vec<KvCache>

Allocate fresh KV caches for decoder self-attention.

Auto Trait Implementations§

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.