pub struct DoraLayer { /* private fields */ }Expand description
DoRA (Weight-Decomposed Low-Rank Adaptation) layer.
DoRA decomposes weight updates into magnitude and direction components:
W' = m * (W + ΔW) / ||W + ΔW||
where:
mis a learnable magnitude vector (per output dimension)Wis the original base weightΔW = B @ A * scalingis the LoRA update
Reference: https://arxiv.org/abs/2402.09353
Implementations§
Source§impl DoraLayer
impl DoraLayer
Sourcepub fn new(
in_features: usize,
out_features: usize,
config: LoraConfig,
device: &Device,
base_weight: Option<&Tensor>,
) -> Result<DoraLayer, PeftError>
pub fn new( in_features: usize, out_features: usize, config: LoraConfig, device: &Device, base_weight: Option<&Tensor>, ) -> Result<DoraLayer, PeftError>
Sourcepub fn lora_layer(&self) -> &LoraLayer
pub fn lora_layer(&self) -> &LoraLayer
Get the underlying LoRA layer.
Sourcepub fn set_base_weight(&mut self, weight: Tensor)
pub fn set_base_weight(&mut self, weight: Tensor)
Update the base weight reference.
Trait Implementations§
Source§impl Adapter for DoraLayer
impl Adapter for DoraLayer
Source§type Config = LoraConfig
type Config = LoraConfig
The configuration type for this adapter.
Source§fn forward(
&self,
input: &Tensor,
base_output: Option<&Tensor>,
) -> Result<Tensor, PeftError>
fn forward( &self, input: &Tensor, base_output: Option<&Tensor>, ) -> Result<Tensor, PeftError>
Forward pass applying the adapter transformation. Read more
Source§fn num_parameters(&self) -> usize
fn num_parameters(&self) -> usize
Get the number of trainable parameters.
Auto Trait Implementations§
impl Freeze for DoraLayer
impl !RefUnwindSafe for DoraLayer
impl Send for DoraLayer
impl Sync for DoraLayer
impl Unpin for DoraLayer
impl !UnwindSafe for DoraLayer
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
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