Back to Works

Lunit Model Registry

2022

A 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