entrenar/yaml_mode/
mod.rs1pub mod bridge;
32mod manifest;
33mod templates;
34mod validation;
35
36#[cfg(test)]
37mod tests;
38
39pub use bridge::{manifest_to_spec, BridgeError, BridgeResult};
40pub use manifest::{
41 AuditConfig, BackpressureConfig, BenchmarkConfig, CallbackConfig, CallbackType, CitlConfig,
42 DataConfig, DataLoader, DataSplit, DebugConfig, DistillModelRef, DistillationConfig,
43 DriftDetectionConfig, GradientConfig, GraphConfig, InspectConfig, LoraConfig,
44 MixedPrecisionConfig, ModelConfig, MonitoringConfig, OptimizerConfig, OutputConfig,
45 PreprocessingStep, PrivacyConfig, PublishConfig, QuantizeConfig, RagConfig, SchedulerConfig,
46 SessionConfig, SigningConfig, StressConfig, TerminalMonitor, TrackingConfig, TrainingConfig,
47 TrainingManifest, VerificationConfig, WarmupConfig,
48};
49pub use templates::{generate_manifest, generate_manifest_with_hints, generate_yaml, Template};
50pub use validation::{validate_manifest, ManifestError, ValidationResult};
51
52use std::path::Path;
53
54pub fn load_manifest(path: &Path) -> crate::Result<TrainingManifest> {
56 let content = std::fs::read_to_string(path)
57 .map_err(|e| crate::Error::Io(format!("Failed to read manifest: {e}")))?;
58
59 let manifest: TrainingManifest = serde_yaml::from_str(&content)
60 .map_err(|e| crate::Error::Parse(format!("Failed to parse manifest: {e}")))?;
61
62 validate_manifest(&manifest).map_err(|e| crate::Error::Validation(e.to_string()))?;
63
64 Ok(manifest)
65}
66
67pub fn save_manifest(manifest: &TrainingManifest, path: &Path) -> crate::Result<()> {
69 let content = serde_yaml::to_string(manifest)
70 .map_err(|e| crate::Error::Parse(format!("Failed to serialize manifest: {e}")))?;
71
72 std::fs::write(path, content)
73 .map_err(|e| crate::Error::Io(format!("Failed to write manifest: {e}")))?;
74
75 Ok(())
76}