Struct QLora
pub struct QLora { /* private fields */ }Expand description
A Reparameterizer implementing QLoRA: it quantizes the (frozen) base weights and
attaches full-precision trainable LoRA adapters to 2-D weights.
It is applied via Module::apply_qlora.
The quantized base is kept at rest in its low-bit representation; the adapter contribution is
added on top during the forward pass (the base is dequantized on the fly when composed).
Module-owned control flags are left unchanged, as with Lora.
§Memory limitations
QLoRA reduces stored base-weight memory and trains only the adapter factors, but still
composes a dense effective weight as dequantize(base) + scale * (a @ b). For a linear
projection whose input requires gradients, autodiff retains that dense weight for backward
and computes a full weight-shaped gradient before propagating into the factors. Peak training
memory can therefore be substantially higher than the packed weights and adapters alone suggest.
Fusion can avoid a separate dequantized base allocation, but does not eliminate all of these
dense intermediates.
Module::valid preserves the packed base and adapters.
Explicitly calling Module::materialize merges them
into dense weights; requantization must be requested separately.
Implementations§
Trait Implementations§
§impl Reparameterizer for QLora
impl Reparameterizer for QLora
§type Reparam = LoraAdapter
type Reparam = LoraAdapter
Auto Trait Implementations§
impl Freeze for QLora
impl RefUnwindSafe for QLora
impl Send for QLora
impl Sync for QLora
impl Unpin for QLora
impl UnsafeUnpin for QLora
impl UnwindSafe for QLora
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<K, Q> Comparable<Q> for K
impl<K, Q> Comparable<Q> for K
§impl<K, Q> Equivalent<Q> for K
impl<K, Q> Equivalent<Q> for K
§fn equivalent(&self, key: &Q) -> bool
fn equivalent(&self, key: &Q) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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