-
Notifications
You must be signed in to change notification settings - Fork 5
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
MLflow has dedicated log_param() and log_params() APIs. Entrenar uses JSON config but lacks dedicated parameter tracking with versioning.
MLflow Equivalent
mlflow.log_param(key, value)- Single parametermlflow.log_params(dict)- Batch parameters- Parameter search and filtering
- Parameter comparison across runs
Current State
Entrenar stores parameters in config: Option<serde_json::Value> on experiments, but:
- No dedicated API for parameter logging per run
- No parameter history/versioning
- No parameter search/filtering
- No type validation
Proposed Implementation
pub struct Parameter {
pub key: String,
pub value: ParameterValue,
pub logged_at: DateTime<Utc>,
}
pub enum ParameterValue {
String(String),
Int(i64),
Float(f64),
Bool(bool),
List(Vec<ParameterValue>),
Dict(HashMap<String, ParameterValue>),
}
impl ExperimentStorage {
fn log_param(&mut self, run_id: &str, key: &str, value: ParameterValue) -> Result<()>;
fn log_params(&mut self, run_id: &str, params: HashMap<String, ParameterValue>) -> Result<()>;
fn get_params(&self, run_id: &str) -> Result<Vec<Parameter>>;
fn search_runs_by_params(&self, filters: &[ParamFilter]) -> Result<Vec<Run>>;
}
pub struct ParamFilter {
pub key: String,
pub op: FilterOp,
pub value: ParameterValue,
}
pub enum FilterOp {
Eq, Ne, Gt, Lt, Gte, Lte, Contains, StartsWith,
}Acceptance Criteria
-
log_param()andlog_params()methods on storage trait - Type-safe
ParameterValueenum - Parameter search with filters
- Parameter diff between runs
- CLI:
entrenar runs search --param "lr > 0.001"
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request