Skip to main content

entrenar/yaml_mode/manifest/
lora.rs

1//! LoRA Configuration
2//!
3//! Contains Low-Rank Adaptation configuration types for training manifests.
4
5use serde::{Deserialize, Serialize};
6
7/// LoRA (Low-Rank Adaptation) configuration
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct LoraConfig {
10    /// Enable LoRA
11    pub enabled: bool,
12
13    /// Rank of low-rank matrices (r)
14    pub rank: usize,
15
16    /// Scaling factor (alpha)
17    pub alpha: f64,
18
19    /// LoRA dropout
20    #[serde(default, skip_serializing_if = "Option::is_none")]
21    pub dropout: Option<f64>,
22
23    /// Target modules for LoRA
24    pub target_modules: Vec<String>,
25
26    /// Target modules pattern (regex)
27    #[serde(default, skip_serializing_if = "Option::is_none")]
28    pub target_modules_pattern: Option<String>,
29
30    /// Bias training (none, all, lora_only)
31    #[serde(default, skip_serializing_if = "Option::is_none")]
32    pub bias: Option<String>,
33
34    /// Weight initialization (gaussian, xavier, kaiming)
35    #[serde(default, skip_serializing_if = "Option::is_none")]
36    pub init_weights: Option<String>,
37
38    /// QLoRA: Quantize base model
39    #[serde(default, skip_serializing_if = "Option::is_none")]
40    pub quantize_base: Option<bool>,
41
42    /// QLoRA: Quantization bits
43    #[serde(default, skip_serializing_if = "Option::is_none")]
44    pub quantize_bits: Option<u8>,
45
46    /// QLoRA: Double quantization
47    #[serde(default, skip_serializing_if = "Option::is_none")]
48    pub double_quantize: Option<bool>,
49
50    /// QLoRA: Quantization type (nf4, fp4)
51    #[serde(default, skip_serializing_if = "Option::is_none")]
52    pub quant_type: Option<String>,
53}