// // HyperParams.swift // Zyquo MLX // // Author: Simon-Pierre Boucher // Mail: contact@spboucher.ai // import Foundation /// Training hyperparameters. Field names/defaults mirror mlx-lm's /// `CONFIG_DEFAULTS` exactly (docs/TRAINING-RESEARCH.md ยง1.2); serialized to /// the YAML config the Python bridge consumes (`lora_parameters` and /// `lr_schedule` are config-only upstream). struct HyperParams: Codable, Hashable, Sendable { // LoRA-specific (config-only upstream) var rank: Int = 8 /// MLX uses a single scale factor instead of alpha/rank (default 20.0). var scale: Double = 20.0 var dropout: Double = 0.0 /// Target modules; nil = adapt all linear layers in targeted blocks. var keys: [String]? // Core loop var numLayers: Int = 16 // -1 = all layers var batchSize: Int = 4 var iterations: Int = 1000 var learningRate: Double = 1e-5 var maxSeqLength: Int = 2048 var seed: Int = 0 // Optimizer: adam | adamw | muon | sgd | adafactor var optimizer: String = "adam" var gradCheckpoint: Bool = false var gradAccumulationSteps: Int = 1 var maskPrompt: Bool = false // Cadences var stepsPerReport: Int = 10 var stepsPerEval: Int = 200 var saveEvery: Int = 100 var valBatches: Int = 25 }