পাঠ ১১ · ৩৩-এর মধ্যে · মডিউল ২
Home / AI Courses / MLOps / Model registry

Model registry

Model registry — versioned lifecycle
৭ মিনিট পড়া মধ্য · Intermediate Concept + Python

এই পাঠে যা শিখবেন

  • Model registry-এর core concept — registered model, version, alias
  • Lifecycle stages ও promotion workflow
  • MLflow Model Registry API — register, transition, load
  • Governance ও audit trail patterns

১ · কেন registry

একটি team-এ ৫ data scientist, প্রত্যেকে নিজের laptop-এ model save করছেন। Production-এ deploy-এর সময় — "কোন model? কোন version? কে validated?"। Registry এই questions-এর single source of truth.

২ · Core concepts

Registry-এর তিনটি concept

Registered Model: a logical model name (e.g., "bangla-sentiment").
Version: immutable artifact — version 1, 2, 3...।
Stage / Alias: mutable label — version 3 = Production, version 4 = Staging.

৩ · Lifecycle stages

  • None / Dev: just registered, no testing.
  • Staging: integration tested, shadow deployed.
  • Production: serving real traffic.
  • Archived: retired, kept for audit.

MLflow 2.0+ recommends aliases over stages — more flexible:

  • champion = current production.
  • challenger = candidate competing.
  • shadow = silent comparison.
  • Custom aliases for complex deployments.

৪ · MLflow Model Registry API

Python · Register & promote
import mlflow
from mlflow.tracking import MlflowClient

mlflow.set_tracking_uri("http://mlflow:5000")
client = MlflowClient()

# ১. একটি training run থেকে register
with mlflow.start_run() as run:
    mlflow.sklearn.log_model(
        model,
        artifact_path="model",
        registered_model_name="bangla-sentiment",
        signature=signature,    # input/output schema
        input_example=X_test.iloc[:5],
    )

# ২. version metadata add
client.update_model_version(
    name="bangla-sentiment",
    version=4,
    description="RF, n_est=200, AUC=0.94 on 2025-Q1 data",
)
client.set_model_version_tag("bangla-sentiment", 4, "data_version", "v3.2")
client.set_model_version_tag("bangla-sentiment", 4, "approved_by", "lead-ds")

# ৩. alias assign (modern way)
client.set_registered_model_alias(
    name="bangla-sentiment",
    alias="challenger",
    version=4,
)

# ৪. promote — challenger → champion
client.set_registered_model_alias(
    name="bangla-sentiment",
    alias="champion",
    version=4,
)

# ৫. load by alias — production code
model = mlflow.pyfunc.load_model("models:/bangla-sentiment@champion")
prediction = model.predict(input_df)

    
Production code-এ alias use — "champion" version automatically pulls latest blessed. Promotion = alias swap; rollback = previous version-এ alias point.

৫ · Promotion workflow

  1. Training run → automatic register.
  2. Smoke test pass → alias candidate.
  3. Performance test (offline metric) → tag pass.
  4. Shadow deployment 24 hours → metric compare.
  5. Manual review (lead-DS, product manager).
  6. Canary deploy 5% traffic → 24 hours monitor.
  7. Full rollout → alias champion.
  8. Previous champion → alias previous (rollback ready).

৬ · Signature & input example

Registry-তে model log করার সময় signature include — input/output schema. Production-এ schema validation, training-serving skew prevent.

Python · Signature
from mlflow.models.signature import infer_signature

# auto-infer from sample input/output
signature = infer_signature(X_train, model.predict(X_train))

mlflow.sklearn.log_model(
    model,
    artifact_path="model",
    registered_model_name="bangla-sentiment",
    signature=signature,
    input_example=X_train.iloc[:3],
)

# Production-এ load → schema enforced
model = mlflow.pyfunc.load_model("models:/bangla-sentiment@champion")
# wrong schema → ValueError
prediction = model.predict(input_df)

    
Schema mismatch — load time error, not silent wrong prediction. Lifesaver in CI/CD.

৭ · Registry alternatives

  • MLflow Model Registry (OSS): most common, self-hostable.
  • SageMaker Model Registry: AWS native, integrated with SageMaker training/serving.
  • Vertex AI Model Registry: GCP equivalent.
  • Azure ML Model Registry: Azure native.
  • Hugging Face Hub: public-facing, OSS model sharing.
  • Comet, Neptune, W&B: SaaS alternatives.
Model registry — promotion lifecycle Train → Register → Stage → Production → Archive Training run log_model Registered v4 no alias @challenger staging tests @champion production Rollback alias to v3 Archived v3 retired on failure old version Aliases mutable; versions immutable. Rollback = alias swap.
Registry lifecycle — version-গুলো immutable, alias-গুলো mutable. Promotion ও rollback both alias re-assignment.
Bangladesh banking-এর audit log requirement — registry built-in fit. Promotion event-গুলো registry-এ logged; regulator query-able.

ভাবনার প্রশ্ন

প্র ০১ "Promotion-এ কে control করে — DS, MLOps, business?" ভাল governance কেমন?

Promotion governance একটি collaborative process — clearly-defined roles + automated gates.

Recommended role split:

  • DS: training, validation metric, candidate propose.
  • MLOps: CI/CD gate, performance test, deployment.
  • Lead-DS: approve based on metrics.
  • Product manager: approve based on business risk.
  • SRE/On-call: deployment timing.

Automated gates (no human bottleneck):

  • Validation metric > baseline (configurable threshold).
  • Schema match.
  • Performance regression test pass.
  • Fairness gate (subgroup performance parity).
  • Latency < SLA.

Human gates:

  • Major version (e.g., new architecture) → lead approval.
  • Critical model (fraud, credit) → review board.
  • Risk classification — minor patches auto-approved, major manual.

Anti-patterns:

  • "Anyone can deploy" — accidents waiting.
  • "Only one person can deploy" — bottleneck, single point of failure.
  • "Human approval for every minor patch" — slow, frustration.

BD context:

  • Bangladesh Bank ICT guideline + SOC 2 — formal approval log.
  • Quarterly review board for high-risk models.

মূল উপলব্ধি: Governance = automated gates + judicious human checkpoints. Trust automation for routine; human for novel/risky. Audit log every promotion.

প্র ০২ "Rollback workflow — কীভাবে fast ও safe?"

Rollback should be the easiest operation — emergency button.

Alias-based rollback:

  • Champion v5 → bug found → v4-এ alias point.
  • Production code "champion" load → instant updated version.
  • Time: seconds.

Considerations:

  • Schema mismatch — v4 expects different feature, v5 added new. Need previous schema known.
  • Dependency on data version — v4 trained on v3 data; if data also changed → match.
  • Cache — production cache evict old prediction.

Practical rollback drill:

  • Quarterly — rollback simulate. Real rollback in non-prod hour.
  • Postmortem after each real rollback — learn.
  • Documentation — "rollback runbook".

K8s integration:

  • Argo Rollouts — auto-rollback on metric breach.
  • Health check failing → previous Deployment image revert.
  • Combined: registry alias + K8s automation.

মূল উপলব্ধি: Rollback ease-of-use directly correlates with deployment confidence. Easy rollback → bold deployment. Painful rollback → conservative, slow iteration.

প্র ০৩ "Registry signature validation কেন important — concrete bug example."

Signature = production safety net. Concrete example:

Bug story:

  • Model v5 — added new feature "user_age_group" (categorical).
  • Production caller — old code, sending only old features.
  • Without signature: model might silently accept None, predict wrong.
  • With signature: load-time error — "missing column".
  • CI/CD catches before production traffic.

Other catches:

  • Type mismatch — caller sending string, model expects int.
  • Range — model expects normalized [0,1], caller sending raw.
  • Output schema — caller expects single value, model returns multi-class.

Signature limit:

  • Doesn't catch semantic mismatch — same column name, different meaning.
  • "User_age" — int vs years vs group bucket — signature treats as int (same).
  • Documentation + naming convention required.

Best practice:

  • Auto-infer signature from training data (mlflow infer_signature).
  • Log input_example — alongside signature, "what does this look like".
  • Production caller code — pydantic schema match registry signature.

মূল উপলব্ধি: Signature — fail-fast principle. Wrong input → immediate error, not subtle wrong output. Bug detection time: hours → seconds.

প্র ০৪ "Multi-region deployment — registry single source কীভাবে maintain?"

Multi-region — Bangladesh-Singapore-US — single registry replication strategy.

Pattern ১ — Single central registry:

  • One MLflow instance, all regions read/write.
  • Pros: simple, no consistency issues.
  • Cons: latency for distant regions, single point of failure.

Pattern ২ — Replicated registry:

  • Primary registry + read replicas in each region.
  • Promotion writes to primary; reads from local.
  • Pros: low read latency, better availability.
  • Cons: write region consistency.

Pattern ৩ — Per-region registry + sync:

  • Each region independent registry, automated sync.
  • Pros: regional independence.
  • Cons: drift risk, complex sync logic.

Practical Bangladesh setup:

  • Primary registry: Mumbai region (lowest latency from BD).
  • Production model artifacts cached in each region's K8s.
  • "Pull at deploy time" — model fetched once, reused.

Artifact caching:

  • Each region S3 / GCS bucket.
  • Cross-region replication on artifact upload.
  • K8s pod-cache layer.

Consistency consideration:

  • "Champion alias" — globally consistent want. Eventual consistency OK seconds-delay.
  • For high-stakes (banking): strict consistency, slow promotion acceptable.

Bangladesh tier 1 city + tier 2:

  • Tier 1 (Dhaka, Chittagong): low-latency to Mumbai.
  • Tier 2 (Sylhet, Khulna): higher latency; local cache effective.
  • Service mesh with regional failover.

মূল উপলব্ধি: Multi-region — registry centralized okay, artifacts replicate. Strict global consistency rare-need; eventual consistent registry + cached artifact = practical, fast.

অনুশীলন

  1. Register: MLflow tracking server-এ একটি model register. Alias challenger assign.

    উপরের code-এ registered_model_name set, তারপর set_registered_model_alias. UI-তে "Models" tab-এ দেখুন।

  2. Promotion: challenger → champion swap. Production code-এ "@champion" load করুন।

    client.set_registered_model_alias("name", "champion", version) → load "models:/name@champion". Always returns latest blessed.

  3. চিন্তা: Daraz-এর recommendation model. Promotion gate-এর ৫টি criteria লিখুন।
    • NDCG@10 > baseline + 1%.
    • Inference latency p99 < 50ms.
    • Subgroup parity (geo + demographic) within 5%.
    • Shadow deployment 24h, no anomaly.
    • Lead DS + product manager approval.

আরও পড়ুন

পূর্ববর্তী পাঠ
পাঠ ১০ · DVC