pub struct RotaryPositionEncoding {
pub config: PositionEncodingConfig,
}Expand description
Rotary Position Embedding (RoPE)
Used in models like LLaMA, GPT-NeoX, PaLM. RoPE encodes position by rotating query and key vectors in the complex plane, providing natural relative position information without adding extra parameters.
Reference: “RoFormer: Enhanced Transformer with Rotary Position Embedding” https://arxiv.org/abs/2104.09864
Fields§
§config: PositionEncodingConfigConfiguration
Implementations§
Source§impl RotaryPositionEncoding
impl RotaryPositionEncoding
Sourcepub fn new(config: PositionEncodingConfig) -> Result<Self>
pub fn new(config: PositionEncodingConfig) -> Result<Self>
Create a new rotary position encoding
Sourcepub fn build_encoding_graph(
&self,
graph: &mut EinsumGraph,
) -> Result<Vec<usize>>
pub fn build_encoding_graph( &self, graph: &mut EinsumGraph, ) -> Result<Vec<usize>>
Build einsum graph for RoPE
RoPE applies rotation to query and key vectors in attention:
- Splits d_model into pairs of dimensions
- Rotates each pair by position-dependent angle
- Preserves relative position information
Input tensors:
- 0: x (input) [batch, seq_len, d_model]
- 1: cos_cached [max_seq_len, d_model/2] (precomputed cosines)
- 2: sin_cached [max_seq_len, d_model/2] (precomputed sines)
Output tensors:
- output: [batch, seq_len, d_model] (rotated embeddings)
Sourcepub fn scaling_factor(&self) -> f64
pub fn scaling_factor(&self) -> f64
Get the scaling factor for long sequences
Trait Implementations§
Source§impl Clone for RotaryPositionEncoding
impl Clone for RotaryPositionEncoding
Source§fn clone(&self) -> RotaryPositionEncoding
fn clone(&self) -> RotaryPositionEncoding
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 RotaryPositionEncoding
impl RefUnwindSafe for RotaryPositionEncoding
impl Send for RotaryPositionEncoding
impl Sync for RotaryPositionEncoding
impl Unpin for RotaryPositionEncoding
impl UnsafeUnpin for RotaryPositionEncoding
impl UnwindSafe for RotaryPositionEncoding
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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