pub struct Attention { /* private fields */ }Expand description
Multi-head attention with optional grouped-query attention
Supports:
- Standard multi-head attention (num_heads == num_key_value_heads)
- Grouped-query attention (num_key_value_heads < num_heads)
- RoPE positional embeddings
- Optional causal masking
Implementations§
Source§impl Attention
impl Attention
Sourcepub fn new(
hidden_size: usize,
head_dim: usize,
num_heads: usize,
num_key_value_heads: usize,
causal: bool,
vb: VarBuilder<'_>,
) -> Result<Self>
pub fn new( hidden_size: usize, head_dim: usize, num_heads: usize, num_key_value_heads: usize, causal: bool, vb: VarBuilder<'_>, ) -> Result<Self>
Create new Attention layer
§Arguments
hidden_size- Input/output dimensionhead_dim- Dimension per attention headnum_heads- Number of query headsnum_key_value_heads- Number of key/value heads (for GQA)causal- Whether to use causal maskingvb- VarBuilder for parameter initialization
Auto Trait Implementations§
impl Freeze for Attention
impl !RefUnwindSafe for Attention
impl Send for Attention
impl Sync for Attention
impl Unpin for Attention
impl !UnwindSafe for Attention
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
Mutably borrows from an owned value. Read more
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>
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 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>
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