package modelkit

  1. Overview
  2. Docs

Module Modelkit.Artifact

Portable, versioned persistence for fitted built-in pipelines.

Artifacts contain validated data only: no closures, marshalled OCaml values, commands, or training observations are serialized. The container and each component codec are independently versioned. Readers verify a declared MD5 checksum and enforce configurable bounds before allocating component payloads. The checksum detects accidental corruption; it does not authenticate or encrypt an artifact. The current 0.x format is experimental; released readers remain covered by golden compatibility tests.

Pipelines intended for persistence must use the artifact-aware stage and estimator constructors below. Encoding a fitted pipeline containing a component packaged only through Pipeline.transformer or Pipeline.estimator returns a typed artifact error.

type limits
type metadata
type 'model loaded
val default_limits : limits
val limits : ?max_bytes:int -> ?max_components:int -> ?max_features:int -> ?max_string_bytes:int -> ?max_metadata_entries:int -> unit -> (limits, Error.t) result
val empty_metadata : metadata
val metadata : ?training_rows:int -> ?root_seed:Seed.t -> ?sample_weighted:bool -> ?labels:(string * string) array -> unit -> (metadata, Error.t) result
val model : 'model loaded -> 'model
val metadata_of_loaded : _ loaded -> metadata
val producer_version : _ loaded -> string
val producer_ocaml_version : _ loaded -> string option
val training_rows : metadata -> int option
val root_seed : metadata -> Seed.t option
val sample_weighted : metadata -> bool option
val labels : metadata -> (string * string) array
val simple_imputer_stage : name:string -> Simple_imputer.t -> (Pipeline.transformer, Error.t) result
val standard_scaler_stage : name:string -> Standard_scaler.t -> (Pipeline.transformer, Error.t) result
val variance_threshold_stage : name:string -> Variance_threshold.t -> (Pipeline.transformer, Error.t) result
val encode_regression : ?metadata:metadata -> ?limits:limits -> regression_model -> (bytes, Error.t) result
val encode_binary_classification : ?metadata:metadata -> ?limits:limits -> binary_classification_model -> (bytes, Error.t) result
val decode_regression : ?limits:limits -> bytes -> (regression_model loaded, Error.t) result
val decode_binary_classification : ?limits:limits -> bytes -> (binary_classification_model loaded, Error.t) result
val save_regression : ?metadata:metadata -> ?limits:limits -> path:string -> regression_model -> (unit, Error.t) result

Encodes completely before opening path, then writes the destination directly. Atomic replacement, signing, and encryption are transport-level responsibilities.

val save_binary_classification : ?metadata:metadata -> ?limits:limits -> path:string -> binary_classification_model -> (unit, Error.t) result

The binary-classification counterpart to save_regression.

val load_regression : ?limits:limits -> path:string -> unit -> (regression_model loaded, Error.t) result
val load_binary_classification : ?limits:limits -> path:string -> unit -> (binary_classification_model loaded, Error.t) result