Skip to main content

entrenar/config/validate/
error.rs

1//! Validation error types
2//!
3//! Defines all validation error variants for training specifications.
4
5/// Validation error type
6#[derive(Debug, thiserror::Error)]
7pub enum ValidationError {
8    #[error("Model path does not exist: {0}")]
9    ModelPathNotFound(String),
10
11    #[error("Training data path does not exist: {0}")]
12    TrainDataNotFound(String),
13
14    #[error("Validation data path does not exist: {0}")]
15    ValDataNotFound(String),
16
17    #[error("Invalid learning rate: {0} (must be > 0.0 and <= 1.0)")]
18    InvalidLearningRate(f32),
19
20    #[error("Invalid batch size: {0} (must be > 0)")]
21    InvalidBatchSize(usize),
22
23    #[error("Invalid epochs: {0} (must be > 0)")]
24    InvalidEpochs(usize),
25
26    #[error("Invalid LoRA rank: {0} (must be > 0 and <= 1024)")]
27    InvalidLoRARank(usize),
28
29    #[error("Invalid LoRA alpha: {0} (must be > 0.0)")]
30    InvalidLoRAAlpha(f32),
31
32    #[error("Invalid LoRA dropout: {0} (must be in [0.0, 1.0))")]
33    InvalidLoRADropout(f32),
34
35    #[error("Invalid quantization bits: {0} (must be 4 or 8)")]
36    InvalidQuantBits(u8),
37
38    #[error("Invalid optimizer: {0} (must be one of: adam, adamw, sgd)")]
39    InvalidOptimizer(String),
40
41    #[error("Invalid merge method: {0} (must be one of: ties, dare, slerp)")]
42    InvalidMergeMethod(String),
43
44    #[error("Invalid gradient clip value: {0} (must be > 0.0)")]
45    InvalidGradClip(f32),
46
47    #[error("Invalid sequence length: {0} (must be > 0)")]
48    InvalidSeqLen(usize),
49
50    #[error("Invalid save interval: {0} (must be > 0)")]
51    InvalidSaveInterval(usize),
52
53    #[error("LoRA target modules cannot be empty")]
54    EmptyLoRATargets,
55
56    #[error("Invalid LR scheduler: {0} (must be one of: cosine, linear, constant)")]
57    InvalidLRScheduler(String),
58
59    #[error("Invalid publish repo: {0} (must be org/name format)")]
60    InvalidPublishRepo(String),
61
62    #[error("Invalid publish format: {0} (must be safetensors or gguf)")]
63    InvalidPublishFormat(String),
64}