Lunit Model Registry
2022A centralized model registry for managing the complete lifecycle of machine learning models. Versioning, metadata tracking, and artifact storage as the single source of truth for model assets.
Through this work, I strive to show modern best practices for software architecture and maintenance.
In the initial phase, we worked on Design Documentation and SRS (Software Requirements Specification) to define the requirements and scope of the project. Then we built our first prototype with MLflow and Pydantic.
After stable prototyping, next step was to improve the code quality and maintainability. Hence the refactor phase with improve software design and architecture.
I use a set of formatting and linting rules with ruff. Pyright for type checking. Pydantic for data validation. For package management we employ Astral UV. I built extensive design, development, and user documentation with MkDocs. For testing we use Pytest and Codecov. For CI/CD we use GitHub Actions.
- Features
-
- Unified Interface - Simple facade API for all model operations
- Extensible Architecture - Easy to add new backends and auth methods
- Stage Management - Organize models by stages (DEV, STAGING, PROD)
- Version Control - Track and manage model versions with aliases
- Role-Based Access - Admin-only operations with audit logging
- Artifacts & Metrics - Store evaluation results, configs, and metrics
- Stack
- MLflow, Pydantic, MkDocs, Pytest, Ruff, Astral UV, GitHub Actions
- Organization
- LUNIT Inc.
graph TB
%% Central Model Registry
subgraph Registry ["📦 Model Registry"]
Models["🤖 Models
(Versions & Aliases)"]
Artifacts["📁 Artifacts
(Weights, Configs)"]
Metadata["📊 Metadata
(Metrics, Tags)"]
end
%% Projects Using the Registry
FMP["🔬 Foundational Model
Project"]
CR["🔄 Continuous Release
Project"]
PIS["🌐 Product Information
Service API"]
IW["📈 Insight
Warehouse"]
%% Connections
Registry --> FMP
Registry --> CR
Registry --> PIS
Registry --> IW
%% Styling
style Models fill:#2d3748,stroke:#14b8a6,color:#e2e8f0
style Artifacts fill:#2d3748,stroke:#9f7aea,color:#e2e8f0
style Metadata fill:#2d3748,stroke:#f59e0b,color:#e2e8f0
style Registry fill:#1a202c,stroke:#14b8a6,color:#14b8a6,stroke-width:3px
style FMP fill:#2d3748,stroke:#14b8a6,color:#e2e8f0
style CR fill:#2d3748,stroke:#14b8a6,color:#e2e8f0
style PIS fill:#2d3748,stroke:#14b8a6,color:#e2e8f0
style IW fill:#2d3748,stroke:#14b8a6,color:#e2e8f0