Model Evolution
Model Evolution is a Git-backed research provenance and artifact-lineage tool for machine-learning projects. It keeps research intent human-readable in Markdown, validates references between studies, datasets, runs, modules, and assessments, and publishes immutable artifacts without embedding a particular training framework.
Project-specific dataset generation, training, and artifact inspection are provided by installable adapters. The core package does not depend on PyTorch, TensorFlow, or a model implementation.
Installation
python -m pip install model-evolution
Install Google Cloud Storage support when a project uses a gs:// artifact
store:
python -m pip install "model-evolution[gcs]"
Model Evolution requires Python 3.12 or newer and a Git repository.
Quick start
Initialize a Git repository and commit its initial files before initializing Model Evolution:
git init
git add .
git commit -m "Initial project"
model-evolution init \
--project-id example \
--artifact-store file:///absolute/path/to/artifacts \
--adapter example
model-evolution validate
model-evolution status
The preferred lifecycle uses one experiment ID from planning through conclusion:
model-evolution experiment plan model-evolution/studies/<experiment-id>.md
model-evolution experiment run <experiment-id>
model-evolution experiment show <experiment-id>
model-evolution experiment conclude <experiment-id>
The configured project adapter is used automatically. The existing study,
run, and record-oriented interfaces remain available for compatibility.
By default, lifecycle commands create narrowly scoped Git commits containing
the records they change. Pass the global --no-commit option before the
subcommand when a caller needs to manage commits itself.
The project configuration lives at .model-evolution/project.yaml. Canonical
Markdown records live under model-evolution/; generated working state belongs
under .model-evolution/work/ and should be ignored by Git.
Project adapters
An adapter connects the generic lifecycle to a project's dataset generator, trainer, and artifact formats:
from pathlib import Path
from typing import Any
from model_evolution import ModelEvolution
class ExampleAdapter:
name = "example"
def generate_dataset(
self,
service: ModelEvolution,
*,
slug: str,
config_path: str | Path,
) -> dict[str, Any]:
...
def execute_run(
self,
service: ModelEvolution,
run_id: str,
*,
epochs_this_run: int | None = None,
) -> dict[str, Any]:
...
def inspect_artifact(self, path: str | Path) -> dict[str, Any] | None:
...
Register it from the consuming project's pyproject.toml:
[project.entry-points."model_evolution.adapters"]
example = "example_project.research:ExampleAdapter"
The entry-point name must match the adapter's name attribute. Model Evolution
loads adapters only when an adapter-backed command needs one.
Supported interface
The initial supported Python interface is exported from model_evolution:
ModelEvolutionProjectAdapterProjectConfigconclude_experimentdownload_treeexecute_experimentinitialize_projectload_experimentload_recordload_projectnew_idnowplan_experimentrecord_pathrequire_clean_sourcerequire_committed_fileupload_fileupload_tree
The CLI, schema-v2 record layout, and adapter entry-point group
model_evolution.adapters are also compatibility surfaces. Other module paths
remain provisional during the 0.x series. Projects should import supported
functions from model_evolution, not their implementation modules.
See the user guide and schema-v2 design for the complete lifecycle.
Codex experiment workflow
This repository includes the standalone
manage-model-evolution-experiments
skill for projects that use Model Evolution. It has two separate modes:
- plan one focused experiment and hand its exact execution command to the repository owner; or
- conclude an experiment from evidence the owner has already produced.
The skill never executes experiments, training, evaluation, or dataset generation. It is maintained in this repository but is installed separately from the Python package. See the experiment skill guide for installation, usage, execution handoff, and stop conditions.
Development
make sync
make check
make build
See CONTRIBUTING.md for the contribution and release process.
License
Apache License 2.0. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file model_evolution-0.1.0.tar.gz.
File metadata
- Download URL: model_evolution-0.1.0.tar.gz
- Upload date:
- Size: 60.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4659af922b905a62916159132e80dd25973fc4dc7168e5685f0e857e384a41ac
|
|
| MD5 |
82a3d41486c8fb7959050219ed5d5a0f
|
|
| BLAKE2b-256 |
e201f0787138ec7b1b93d619ad8d172bd730ed713c95a020aea8081a2c4e45cb
|
Provenance
The following attestation bundles were made for model_evolution-0.1.0.tar.gz:
Publisher:
release.yml on ilikedata/model-evolution
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
model_evolution-0.1.0.tar.gz -
Subject digest:
4659af922b905a62916159132e80dd25973fc4dc7168e5685f0e857e384a41ac - Sigstore transparency entry: 2593145359
- Sigstore integration time:
-
Permalink:
ilikedata/model-evolution@deb41ea8ccef7b6e3ccfc6a970c39e7e6c2af142 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/ilikedata
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@deb41ea8ccef7b6e3ccfc6a970c39e7e6c2af142 -
Trigger Event:
push
-
Statement type:
File details
Details for the file model_evolution-0.1.0-py3-none-any.whl.
File metadata
- Download URL: model_evolution-0.1.0-py3-none-any.whl
- Upload date:
- Size: 54.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3aaa350bc90f50b37873e4740349a77bd4e6355744b65fca819fe9f34bf22d83
|
|
| MD5 |
a3fc3530b497df6606afb8d2dcf0d59b
|
|
| BLAKE2b-256 |
14ec41dfc543c56c0bff140fa6080a34a6c7a93c2f57e5e58118ba206cc652e4
|
Provenance
The following attestation bundles were made for model_evolution-0.1.0-py3-none-any.whl:
Publisher:
release.yml on ilikedata/model-evolution
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
model_evolution-0.1.0-py3-none-any.whl -
Subject digest:
3aaa350bc90f50b37873e4740349a77bd4e6355744b65fca819fe9f34bf22d83 - Sigstore transparency entry: 2593145456
- Sigstore integration time:
-
Permalink:
ilikedata/model-evolution@deb41ea8ccef7b6e3ccfc6a970c39e7e6c2af142 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/ilikedata
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@deb41ea8ccef7b6e3ccfc6a970c39e7e6c2af142 -
Trigger Event:
push
-
Statement type: