Skip to content

feat: Dedicated parameter logging API (log_param, log_params) #73

@noahgift

Description

@noahgift

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 parameter
  • mlflow.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() and log_params() methods on storage trait
  • Type-safe ParameterValue enum
  • Parameter search with filters
  • Parameter diff between runs
  • CLI: entrenar runs search --param "lr > 0.001"

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions