pub struct RotaryEmbedding {
pub head_dim: usize,
pub max_positions: usize,
pub theta: f32,
/* private fields */
}Expand description
Rotary Positional Embedding (RoPE).
Precomputes cos and sin tables for all positions up to max_positions.
The rotation applies to pairs of dimensions (x_{2i}, x_{2i+1}) as:
x_out[2i] = x[2i]*cos(θ_i*pos) − x[2i+1]*sin(θ_i*pos)
x_out[2i+1] = x[2i]*sin(θ_i*pos) + x[2i+1]*cos(θ_i*pos)where θ_i = theta ^ (-2i / head_dim).
This embeds position information directly into the attention dot product without requiring separate positional embeddings.
Fields§
§head_dim: usizeHead dimension (must be even).
max_positions: usizeMaximum sequence length for which tables are precomputed.
theta: f32RoPE base frequency (typically 10 000 for LLaMA-2, 500 000 for LLaMA-3).
Implementations§
Source§impl RotaryEmbedding
impl RotaryEmbedding
Sourcepub fn new(head_dim: usize, max_positions: usize, theta: f32) -> LmResult<Self>
pub fn new(head_dim: usize, max_positions: usize, theta: f32) -> LmResult<Self>
Build RoPE tables for the given configuration.
Trait Implementations§
Source§impl Clone for RotaryEmbedding
impl Clone for RotaryEmbedding
Source§fn clone(&self) -> RotaryEmbedding
fn clone(&self) -> RotaryEmbedding
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for RotaryEmbedding
impl RefUnwindSafe for RotaryEmbedding
impl Send for RotaryEmbedding
impl Sync for RotaryEmbedding
impl Unpin for RotaryEmbedding
impl UnsafeUnpin for RotaryEmbedding
impl UnwindSafe for RotaryEmbedding
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