pub struct Sampler { /* private fields */ }Expand description
A small, seedable xorshift64* generator. Not cryptographically secure – sampling doesn’t need that – but reproducible given a seed, which greedy argmax already was for free.
Implementations§
Source§impl Sampler
impl Sampler
pub fn new(seed: u64) -> Self
Sourcepub fn sample(
&mut self,
logits: &[f32],
params: &SamplingParams,
history: &[usize],
) -> usize
pub fn sample( &mut self, logits: &[f32], params: &SamplingParams, history: &[usize], ) -> usize
Samples one token id from logits, given params and the
already-generated history (for repetition penalty). Falls back
to plain greedy argmax when params.temperature <= 0.0.
A length-1 logits vector is treated as a precomputed greedy token
id (logits[0] as usize) — used by the Metal dense-stack path that
returns GPU argmax instead of downloading the full vocab.
Sourcepub fn sample_with_mask(
&mut self,
logits: &[f32],
params: &SamplingParams,
history: &[usize],
mask: Option<LogitMask<'_>>,
) -> usize
pub fn sample_with_mask( &mut self, logits: &[f32], params: &SamplingParams, history: &[usize], mask: Option<LogitMask<'_>>, ) -> usize
Like Self::sample, but optionally zeroes disallowed logits via
mask before argmax / nucleus sampling (used for JSON-object mode).
Auto Trait Implementations§
impl Freeze for Sampler
impl RefUnwindSafe for Sampler
impl Send for Sampler
impl Sync for Sampler
impl Unpin for Sampler
impl UnsafeUnpin for Sampler
impl UnwindSafe for Sampler
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> 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