pub struct YarnScaling {
pub factor: f32,
pub beta_fast: f32,
pub beta_slow: f32,
pub orig_max_pos: usize,
pub truncate: bool,
}Expand description
YaRN RoPE scaling exactly as a checkpoint declares it, in the shape
the reference reads out of rope_scaling (FreeToken
python/freetoken/layers/rotary.py:139, the "yarn" arm of
_get_rope). beta_fast / beta_slow / truncate carry that arm’s
own defaults, because a real YaRN checkpoint usually declares only
factor and original_max_position_embeddings.
This type is only the declaration. The frequency rewrite it implies
is yarn_freq_factors, whose output feeds
apply_rope_with_freq_factors /
apply_rope_interleaved_with_freq_factors like any other per-band
correction.
Fields§
§factor: f32rope_scaling["factor"]: how much longer the served context is
than the context the checkpoint was trained at. 1.0 makes the
whole rewrite a no-op (every band’s divisor is 1.0).
beta_fast: f32rope_scaling["beta_fast"], the number of full rotations that
marks the high-frequency end of the correction ramp – bands
faster than this are left extrapolated. Reference default 32.0.
beta_slow: f32rope_scaling["beta_slow"], the rotation count marking the
low-frequency end – bands slower than this are fully
interpolated. Reference default 1.0.
orig_max_pos: usizerope_scaling["original_max_position_embeddings"]: the context
the checkpoint was actually trained at, which is the length the
rotation counts above are counted against.
truncate: boolrope_scaling["truncate"], reference default true: floor the
low end and ceil the high end of the correction range to whole
band indices. false keeps the fractional range, which is the
case the low == high nudge in yarn_correction_range exists
for.
Implementations§
Source§impl YarnScaling
impl YarnScaling
Sourcepub fn new(factor: f32, orig_max_pos: usize) -> Self
pub fn new(factor: f32, orig_max_pos: usize) -> Self
The reference’s defaults for everything a checkpoint may omit
(rope_scaling.get("beta_fast", 32.0),
.get("beta_slow", 1.0), .get("truncate", True)). Using
anything else here silently moves the correction range and
therefore which dims extrapolate.
Trait Implementations§
Source§impl Clone for YarnScaling
impl Clone for YarnScaling
Source§fn clone(&self) -> YarnScaling
fn clone(&self) -> YarnScaling
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for YarnScaling
Source§impl Debug for YarnScaling
impl Debug for YarnScaling
Source§impl PartialEq for YarnScaling
impl PartialEq for YarnScaling
impl StructuralPartialEq for YarnScaling
Auto Trait Implementations§
impl Freeze for YarnScaling
impl RefUnwindSafe for YarnScaling
impl Send for YarnScaling
impl Sync for YarnScaling
impl Unpin for YarnScaling
impl UnsafeUnpin for YarnScaling
impl UnwindSafe for YarnScaling
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
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> ⓘ
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> ⓘ
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