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 · 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 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