Skip to main content

entrenar/yaml_mode/manifest/
output.rs

1//! Output Configuration
2//!
3//! Contains output and artifact configuration types for training manifests.
4
5use serde::{Deserialize, Serialize};
6
7/// Output and artifact configuration
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct OutputConfig {
10    /// Output directory (supports templates)
11    pub dir: String,
12
13    /// Model output configuration
14    #[serde(default, skip_serializing_if = "Option::is_none")]
15    pub model: Option<ModelOutputConfig>,
16
17    /// Metrics export configuration
18    #[serde(default, skip_serializing_if = "Option::is_none")]
19    pub metrics: Option<MetricsOutputConfig>,
20
21    /// Training report configuration
22    #[serde(default, skip_serializing_if = "Option::is_none")]
23    pub report: Option<ReportConfig>,
24
25    /// Artifact registry configuration
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub registry: Option<RegistryConfig>,
28}
29
30/// Model output configuration
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct ModelOutputConfig {
33    /// Output format (safetensors, pt, gguf, apr)
34    #[serde(default, skip_serializing_if = "Option::is_none")]
35    pub format: Option<String>,
36
37    /// Save optimizer state
38    #[serde(default, skip_serializing_if = "Option::is_none")]
39    pub save_optimizer: Option<bool>,
40
41    /// Save scheduler state
42    #[serde(default, skip_serializing_if = "Option::is_none")]
43    pub save_scheduler: Option<bool>,
44}
45
46/// Metrics output configuration
47#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct MetricsOutputConfig {
49    /// Output format (parquet, csv, json)
50    #[serde(default, skip_serializing_if = "Option::is_none")]
51    pub format: Option<String>,
52
53    /// Metrics to include
54    #[serde(default, skip_serializing_if = "Option::is_none")]
55    pub include: Option<Vec<String>>,
56}
57
58/// Training report configuration
59#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct ReportConfig {
61    pub enabled: bool,
62    #[serde(default, skip_serializing_if = "Option::is_none")]
63    pub format: Option<String>,
64    #[serde(default, skip_serializing_if = "Option::is_none")]
65    pub include_plots: Option<bool>,
66}
67
68/// Artifact registry configuration
69#[derive(Debug, Clone, Serialize, Deserialize)]
70pub struct RegistryConfig {
71    pub enabled: bool,
72    #[serde(default, skip_serializing_if = "Option::is_none")]
73    pub target: Option<String>,
74    #[serde(default, skip_serializing_if = "Option::is_none")]
75    pub include_config: Option<bool>,
76    #[serde(default, skip_serializing_if = "Option::is_none")]
77    pub include_metrics: Option<bool>,
78}