Production-ready ML project scaffolder
Project description
mlinit ๐
The production-ready scaffolder for Machine Learning projects.
mlinit is a CLI tool designed to bootstrap Machine Learning projects with industry-standard best practices. It goes beyond simple directory creation by setting up a complete development environment with Poetry, Hydra, Git, and CI/CD out of the box.
๐ก Why mlinit?
There are many scaffolders out there. Here is why mlinit is different:
| Feature | Cookiecutter | Kedro | mlinit |
|---|---|---|---|
| Philosophy | Generic templating engine | Full-fledged framework | Lightweight scaffolder + Modern Stack |
| Config | Static JSON | Custom ConfigLoader | Hydra (Composable & Dynamic) |
| Deps | requirements.txt usually |
pip-tools |
Poetry (Native Integration) |
| Learning Curve | Low | High | Low (It's just a folder structure) |
mlinit gives you the structure of a framework without forcing you to learn a new API. It sets up the tools you already love (Hydra, Poetry, PyTorch) so you can just write code.
โจ Features
- ๐ Production-Grade Structure: Generates a robust directory layout optimized for reproducibility (separating data, source, configs, and artifacts).
- ๐ Modern Dependency Management: Automatically initializes Poetry projects, solving dependency hell before it starts.
- โ๏ธ Hydra Configuration: Pre-configured Hydra setup for flexible, composable experiment configuration.
- ๐พ Smart Presets: Built-in configurations for Computer Vision, NLP, and General ML. Save your own custom setups for future use.
- โ CI/CD Ready: Auto-generates GitHub Actions workflows to run your tests on every push.
- ๐ง Git Integration: Initializes a Git repository with a smart
.gitignoretailored for ML (ignoring large data/artifacts). - ๐ Auto-Documentation: Generates
README.mdfiles in every subdirectory explaining exactly what should go where.
๐ฆ Installation
You can install mlinit directly from PyPI:
pip install mlinit
Tip: If the
mlinitcommand is not found after installation, run it via python:python -m mlinit.cli init --name my_project
๐ Quick Start
Initialize a new project in seconds:
mlinit init --name my_awesome_project
Example Output
The tool generates a ready-to-run train.py integrated with Hydra:
# src/train.py
import hydra
from omegaconf import DictConfig, OmegaConf
@hydra.main(version_base=None, config_path="../conf", config_name="config")
def train(cfg: DictConfig):
print(OmegaConf.to_yaml(cfg))
# Your training logic here...
๐ฃ๏ธ Roadmap
- MLflow Integration: Auto-configure MLflow for experiment tracking.
- DVC Setup: Automated data version control hooks.
- Cloud Deployment: Terraform templates for AWS/GCP.
- Streamlit/Gradio: One-click demo app generation.
๐ The "mlinit" Standard Structure
Your generated project will look like this:
my_project/
โโโ conf/ # Hydra configuration files
โ โโโ base/ # Base configs (train.yaml, model.yaml)
โ โโโ config.yaml # Main entry point
โโโ data/ # Data directory (gitignored content)
โ โโโ raw/ # Immutable raw data
โ โโโ processed/ # Canonical data sets for modeling
โ โโโ external/ # Data from third party sources
โโโ src/ # Source code
โ โโโ data/ # Scripts to generate data
โ โโโ models/ # Model architectures
โ โโโ utils/ # Helper functions
โ โโโ train.py # Main training script (Hydra-enabled)
โโโ notebooks/ # Jupyter notebooks for exploration
โโโ tests/ # Unit tests
โโโ artifacts/ # Model checkpoints, logs, outputs (gitignored)
โโโ .github/workflows/ # CI/CD pipelines (GitHub Actions)
โโโ pyproject.toml # Project dependencies (Poetry)
โโโ README.md # Project documentation
โโโ .gitignore # Git ignore rules
๐ Acknowledgements
This project was heavily inspired by Cookiecutter and the Cookiecutter Data Science project. We aim to bring that same spirit of community-driven standardization to the modern ML stack (Hydra, Poetry, etc.).
We believe in the power of the open-source community to build better tools together. If you have ideas or feedback, please open an issue!
๐ค Contributing
We welcome contributions! Please see CONTRIBUTING.md for setup instructions.
- Fork the repository.
- Create a feature branch.
- Submit a Pull Request.
Built with โค๏ธ for the ML Community.
Project details
Release history Release notifications | RSS feed
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 mlinit_cli-0.1.1.tar.gz.
File metadata
- Download URL: mlinit_cli-0.1.1.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b543417d98be891bdb66422a10d40091859211c90a8c49ac1aef25762768b473
|
|
| MD5 |
ca162fef7acbdf4ef35db87cd95fc065
|
|
| BLAKE2b-256 |
1a53e2a6c07ffc7eabd715b409c69e78241059bc63a4fb0d9788b5f28621351d
|
Provenance
The following attestation bundles were made for mlinit_cli-0.1.1.tar.gz:
Publisher:
workflow.yml on mohits-code/mlinit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mlinit_cli-0.1.1.tar.gz -
Subject digest:
b543417d98be891bdb66422a10d40091859211c90a8c49ac1aef25762768b473 - Sigstore transparency entry: 718398173
- Sigstore integration time:
-
Permalink:
mohits-code/mlinit@c9b5e9aadd1f5068e7076beddadc0e0c69dce6be -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/mohits-code
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@c9b5e9aadd1f5068e7076beddadc0e0c69dce6be -
Trigger Event:
release
-
Statement type:
File details
Details for the file mlinit_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: mlinit_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d771f62ae8451070068b3ca0fb58404224c74a93729b7ec470ca143360363a8e
|
|
| MD5 |
7698d9be811a6d6fd36b1ef6dc096b98
|
|
| BLAKE2b-256 |
c814e207a15c2863a729a749c417bbd9f7ea8ea59586ca8584aa6ef383cc8d1f
|
Provenance
The following attestation bundles were made for mlinit_cli-0.1.1-py3-none-any.whl:
Publisher:
workflow.yml on mohits-code/mlinit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mlinit_cli-0.1.1-py3-none-any.whl -
Subject digest:
d771f62ae8451070068b3ca0fb58404224c74a93729b7ec470ca143360363a8e - Sigstore transparency entry: 718398178
- Sigstore integration time:
-
Permalink:
mohits-code/mlinit@c9b5e9aadd1f5068e7076beddadc0e0c69dce6be -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/mohits-code
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@c9b5e9aadd1f5068e7076beddadc0e0c69dce6be -
Trigger Event:
release
-
Statement type: