| Crates.io | ml-cellar |
| lib.rs | ml-cellar |
| version | 0.2.0 |
| created_at | 2025-12-02 00:37:03.528622+00 |
| updated_at | 2026-01-24 12:17:29.737546+00 |
| description | CLI of ML model registry for minimum MLOps |
| homepage | |
| repository | https://github.com/scepter914/ml-cellar-rs/ |
| max_upload_size | |
| id | 1960921 |
| size | 2,041,006 |
ml-cellar provides a CLI to support model registry, storing ML models like a wine cellar and enabling minimal MLOps.
By using Git LFS, ml-cellar offers essential MLOps functions including Artifact Store, Model Registry, and Serving.
If MLOps at BigTech companies can be compared to a large-scale winery, ml-cellar functions like a wine cellar in a small brewery.
While AI projects should ideally adopt software like MLflow for MLOps, many projects and organizations cannot afford the development resources that BigTech companies have.
As a result, existing MLOps software has primarily targeted companies that can allocate significant development costs to MLOps (like BigTech).
ml-cellar makes "compromises" on MLOps by focusing only on the essential functions, enabling easy adoption of minimal MLOps.
ml-cellar.[!WARNING] This repository uses Git LFS (Large File Storage) to manage large files. Please note that GitHub Git LFS has storage and bandwidth limits. If the free quota included in your GitHub plan is exceeded, you may incur additional charges, or LFS uploads and downloads may be restricted depending on your billing settings.
Any costs incurred by exceeding Git LFS quotas are the user’s responsibility. Before cloning or pushing large files, check your GitHub plan and the repository’s current Git LFS usage.
If you want to contribute this project, please see the documents.
If you want to see example of the usage of ml-cellar as minimum MLOps, please see ml-cellar-example as reference.
Files produced by training/evaluation and stored in the registry (e.g., checkpoints, configs, logs, evaluation results).
A Git extension for tracking large files (e.g., model checkpoints) efficiently by storing pointers in Git and file contents in LFS storage.
ml-cellar)The Git repository (often on GitHub) used as the “cellar” to manage model versions and their artifacts. A repository that stores and serves ML model artifacts, analogous to a wine cellar.
ml-cellar)A logical shelf for a single model family/algorithm (e.g., vit-l, llm-model).
Each rack has metadata files (e.g., README.md, config.toml, template.md) and multiple "ML-bins" for version subdirectories.
It corresponds to a “rack” in a wine cellar.
ml-cellar)A specific release of a model stored under a rack (e.g., vit-l/1.1/).
ML-bin has artifacts like checkpoints, configs, logs.
It corresponds to a “vintage” in the wine analogy.
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get update
sudo apt-get install git-lfs
git lfs install
curl https://sh.rustup.rs -sSf | sh
ml-cellar.cargo install ml-cellar
If you build on local device, run below command.
git clone https://github.com/scepter914/ml-cellar-rs
cd ml-cellar-rs
cargo install --path .
Let's open the cellar for AI models.
ml-cellar.mkdir {your_ml_registry}
cd {your_ml_registry}
ml-cellar init
git remote add origin {remote_repository}
.gitattributes if you want to add for GitLFS# --- Log ---
*.log filter=lfs diff=lfs merge=lfs -text
# --- Your data ---
*.db filter=lfs diff=lfs merge=lfs -text
git add -A
git commit -m "Initial commit"
git push -u origin main
[!WARNING] The feature of
ml-cellarwith Custom Transfer Agent is not implemented for now. I’d appreciate it if you could wait for the implementation.
If you need to handle many large files in your model registry, consider using a Custom Transfer Agent to replace the storage backend with AWS S3 or a similar service.
A rack in ml-cellar is like creating racks in a wine cellar.
If ML models are like wine, then racks are the shelves where you store the wine.
Just as wine is labeled with its vintage year, we attach versions to AI models, called "ML-bin" in ml-cellar.
The rack consists of the following directory structure:
- model_registry_repository/
- vit-l/
- 0.1/
- config.yaml
- checkpoint.pth
- result.json
- log.log
- 0.2/
- ...
- 1.0/
- ...
- 1.1/
- ...
- vit-m/
- ...
In this directory, we call the ML model like vit-l 1.1 for "Large size of Vision Transformer, version 1.1".
It is like vintage wine called by "Dom Pérignon Vintage 2010".
ml-cellar rack {path}
ml-cellar rack {my_rack}, then you can see as below.
ml-cellar rack {my_rack} command, you can make rack by making directory and config.toml manually.- {your_ml_registry}/
- {my_rack}/
- README.md
- config.toml
- template.md
"*" for optional files.[artifact]
required_files = ["config.yaml", "logs/"]
optional_files = ["*"]
When using GitHub Git LFS, you can use GitHub's functions as they are.
Some of the more useful features include pull request, code owner, GitHub Actions with ml-cellar check, and GitHub issue.
If you want to know more about this, please see tips with GitHub repository.
If you use fixed dataset and focus on algorithm development like Kaggle competition or research usage, the simple ML cellar is fine to share various experimental results using single rack. However, if you are an engineer and you have many projects you want to fine-tune for, I recommend to use "project-based model registry". Please see the document for project-based model registry.
Manually writing evaluation results in practice is costly. And even if you try to organize them in a spreadsheet, it’s hard to keep the spreadsheet entries correctly linked to the exact ML-bin (model version) they came from.
To address this, the training-side code can store the information you want to include in the README as JSON.
Then ml-cellar supports a semi-automated workflow: it generates evaluation results from a template file and fills in the values automatically.
If you create a template and run a command ml-cellar docs {my_rack}/{version} such as: ml-cellar docs test_registry/test_docs/base/0.1/, then the documentation is generated automatically.
If you want to setup template.md and result.json for MLOps, then please see the document for template.md.
Let's actually stock AI models on the racks.
git sw -c feat/my_rack/0.1
{your_ml_registry}/{my_rack}/0.1/*.- {your_ml_registry}/
- {my_rack}/
- README.md
- config.toml
- template.md
- 0.1/
- config.yaml
- result.json
- log.log
- best_score.pth
ml-cellar check {path}
cd {your_ml_registry}
ml-cellar check {my_rack}/0.1/
git add {path}
git commit -m "{commit message}"
ml-cellar push origin HEAD
ml-cellar pull
ml-cellar as model serveA wine cellar is a storage facility, but it's also a facility for serving.
ml-cellar clone {your_ml_registry}
ml-cellar download-all
ml-cellar download {path to a directory or a file}