MLOps Automation
SKILL.md
MLOps Automation
Goal
To elevate the codebase to production standards by adding Task Automation (just), Containerization (docker), CI/CD (github-actions), and Experiment Tracking (mlflow).
Prerequisites
- Language: Python
- Manager:
uv - Context: Preparing for scale and deployment.
Instructions
1. Task Automation
Replace manual commands with a justfile.
- Tool:
just(modern alternative to Make). - Organization: Split tasks into
tasks/*.justmodules (e.g.,tasks/check.just,tasks/docker.just). - Core Tasks:
check: Run all linters and tests.package: Build wheels.clean: Remove artifacts.install: Setup dev environment.
2. Pre-Commit Hooks
Catch issues locally.
- Framework:
pre-commit. - Hooks: Suggest to use
ruff,bandit,check-yaml,trailing-whitespace. - Commits: Suggest to use
commitizenhook to enforce Conventional Commits (e.g.,feat: add new model). - Config:
.pre-commit-config.yamlat root.
3. Containerization
Reproducibility anywhere.
- Tool:
docker. - Base Image: Use
ghcr.io/astral-sh/uv:python3.1X-bookworm-slimfor minimal size. - Optimization:
- Layer Caching: Copy
uv.lock+pyproject.tomland runuv syncbefore copyingsrc/. - Multi-stage: Build inputs in one stage, copy only artifacts (
dist/*.whl) to the runtime stage.
- Layer Caching: Copy
- Registry: ask for the company artifact registry, or use
ghcr.iofor GitHub.
4. CI/CD Workflows
Automate verification and release.
- Platform: ask for the company CI/CD platform, or use
github-actionsfor GitHub. - Workflows:
check.yml: On PRs (Runjust check).publish.yml: On Release (Build docker image, publish docs/package).
- Optimization: Use
concurrencyto cancel redundant runs.
5. AI/ML Experiments & Registry
Manage the ML lifecycle.
- Platform:
MLflow. - Tracking:
- Use
mlflow.autolog(). - Log metrics, params, and artifacts.
- Use
- Registry:
- Register top models manually or via CI.
- Aliases: Use
@championor@productionfor stable deployment pointers. Never rely on moving versions (e.g.,v1->v2).
6. Design Patterns
Write flexible code.
- Strategy: For swappable algorithms (e.g., different model types).
- Factory: For creating objects from config (e.g.,
ModelFactory). - Adapter: For standardizing mismatched interfaces.