मॉडल रजिस्ट्री: स्टेजिंग, प्रोडक्शन और संग्रहण
शिक्षार्थी MLflow Model Registry में मॉडल संस्करण पंजीकृत करेंगे, उसे Staging से Production तक ले जाएँगे और Python API से प्रोन्नयन कार्यप्रवाह की स्क्रिप्ट बनाएँगे।
मॉडल रजिस्ट्री: स्टेजिंग, प्रोडक्शन और संग्रहण, CoddyKit पर Machine Learning Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Machine Learning Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
मॉडल रजिस्ट्री क्या होती है
मॉडल रजिस्ट्री एक केंद्रीकृत सूची होती है, जिसमें मेटाडेटा सहित संस्करणयुक्त प्रशिक्षित मॉडल संग्रहीत किए जाते हैं। अलग-अलग फ़ाइल सिस्टम में बिखरी मॉडल फ़ाइलों को प्रबंधित करने के बजाय रजिस्ट्री नामित संस्करणों, जीवनचक्र चरणों (Staging, Production, Archived) और खोजे जा सकने वाले एनोटेशन के साथ एकमात्र विश्वसनीय स्रोत उपलब्ध कराती है। MLflow Model Registry सबसे अधिक उपयोग किए जाने वाले ओपन-सोर्स समाधानों में से एक है और MLflow ट्रैकिंग सर्वर के साथ सीधे एकीकृत होती है।
किसी रन से मॉडल का पंजीकरण करना
प्रशिक्षण के बाद मॉडल को किसी मौजूदा MLflow रन आर्टिफैक्ट से जोड़कर उसका पंजीकरण करें। आप registered_model_name तर्क का उपयोग करके लॉग करते समय सीधे पंजीकरण कर सकते हैं या बाद में MLflow क्लाइंट का उपयोग कर सकते हैं। रजिस्ट्री एक नामित मॉडल प्रविष्टि (जैसे, 'SentimentClassifier') बनाती है और उसे Version 1 प्रदान करती है। उसी मॉडल नाम के बाद के पंजीकरण संस्करण संख्या को अपने-आप बढ़ा देते हैं।
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
# Option 1: Register during logging
with mlflow.start_run():
clf = RandomForestClassifier(n_estimators=100, random_state=42)
# clf.fit(X_train, y_train)
mlflow.sklearn.log_model(
sk_model=clf,
artifact_path='model',
registered_model_name='SentimentClassifier' # auto-registers
)
print('Model registered as SentimentClassifier v1')रजिस्ट्री संचालन के लिए MLflow Client का उपयोग करना
MlflowClient Python API रजिस्ट्री पर प्रोग्राम के माध्यम से नियंत्रण देता है। इसका उपयोग मौजूदा रन आर्टिफैक्ट से मॉडल पंजीकृत करने, चरण बदलने और विवरण जोड़ने के लिए करें — यह सब UI के बजाय स्क्रिप्ट से किया जा सकता है। स्वचालित CI/CD पाइपलाइन के लिए यह आवश्यक है, जहाँ किसी नए मॉडल को मूल्यांकन परीक्षण सफल होने के बाद ही आगे बढ़ाया जाना चाहिए और डेटा वैज्ञानिक को UI में मैन्युअल रूप से कुछ करने की आवश्यकता नहीं होनी चाहिए।
from mlflow.tracking import MlflowClient
client = MlflowClient(tracking_uri='http://localhost:5000')
# Option 2: Register from an existing run artifact
run_id = 'abc123def456' # get this from mlflow.last_active_run().info.run_id
model_uri = f'runs:/{run_id}/model'
model_version = mlflow.register_model(
model_uri=model_uri,
name='SentimentClassifier'
)
print('Version:', model_version.version)
print('Status:', model_version.status) # PENDING_REGISTRATION -> READYजीवनचक्र चरण: None, Staging, Production, Archived
रजिस्ट्री में प्रत्येक मॉडल संस्करण का एक जीवनचक्र चरण होता है। नए संस्करण None से शुरू होते हैं। स्वचालित मूल्यांकन सफल होने के बाद उन्हें एकीकरण परीक्षण के लिए Staging में भेजें। Staging सफल होने के बाद उन्हें Production में भेजें — यही वह संस्करण होता है जो वास्तविक ट्रैफ़िक उपलब्ध कराता है। जब कोई नया संस्करण उसका स्थान ले ले, तो इतिहास सुरक्षित रखने के लिए उसे हटाने के बजाय Archived में भेज दें। प्रत्येक मॉडल नाम के लिए एक समय में केवल एक संस्करण Production में होना चाहिए।
from mlflow.tracking import MlflowClient
client = MlflowClient()
# Transition version 1 to Staging
client.transition_model_version_stage(
name='SentimentClassifier',
version='1',
stage='Staging',
archive_existing_versions=False
)
print('Version 1 -> Staging')
# After testing, promote to Production (archives previous Production)
client.transition_model_version_stage(
name='SentimentClassifier',
version='1',
stage='Production',
archive_existing_versions=True # auto-archives old Production
)
print('Version 1 -> Production')संस्करणों में विवरण और टैग जोड़ना
मॉडल संस्करणों में मनुष्यों के लिए पढ़ने योग्य मेटाडेटा होना चाहिए। इस संस्करण में क्या बदला है, यह समझाने के लिए विवरण जोड़ें: प्रशिक्षण डेटा, प्रीप्रोसेसिंग या एल्गोरिदम। त्वरित फ़िल्टरिंग के लिए टैग जोड़ें, जैसे परिनियोजन वातावरण या डेटासेट संस्करण। अच्छा मेटाडेटा तैनाती के महीनों बाद भी Git इतिहास खंगाले बिना ऑडिट संबंधी प्रश्नों ('फ़रवरी में कौन-सा मॉडल सेवा दे रहा था?') का उत्तर देना संभव बनाता है।
from mlflow.tracking import MlflowClient
client = MlflowClient()
# Add description to version
client.update_model_version(
name='SentimentClassifier',
version='1',
description=('RandomForest trained on IMDB v2 (50k reviews). '
'Test accuracy 0.924, F1 0.921. '
'Replaces rule-based baseline.')
)
# Add tags for filtering and search
client.set_model_version_tag(
name='SentimentClassifier',
version='1',
key='dataset',
value='imdb_v2'
)
client.set_model_version_tag('SentimentClassifier', '1', 'algorithm', 'random_forest')
print('Description and tags added.')अनुमान के लिए प्रोडक्शन मॉडल लोड करना
अपने अनुमान सेवा में, किसी हार्डकोड किए गए संस्करण नंबर के बजाय हमेशा चरण उपनाम ('Production') के आधार पर मॉडल लोड करें। इस तरह, जब आप किसी नए संस्करण को Production में भेजते हैं, तो अगली बार लोड होने पर अनुमान सेवा बिना कोड में बदलाव के अपने-आप नए मॉडल का उपयोग करती है। models:/ URI योजना, चरण-आधारित लोडिंग के लिए एक शक्तिशाली MLflow परंपरा है।
import mlflow.sklearn
# Load the current Production model by stage
model_name = 'SentimentClassifier'
stage = 'Production'
model_uri = f'models:/{model_name}/{stage}'
production_model = mlflow.sklearn.load_model(model_uri)
print('Loaded model from:', model_uri)
# Or load a specific version
version_uri = f'models:/{model_name}/1'
v1_model = mlflow.sklearn.load_model(version_uri)
print('Loaded specific version 1')
# Make predictions
# predictions = production_model.predict(X_new)संस्करणों को खोजना और उनकी तुलना करना
जैसे-जैसे अधिक संस्करण जमा होते जाते हैं, चरण, टैग या मेट्रिक्स के आधार पर फ़िल्टर करने के लिए client की search विधियों का उपयोग करें। संस्करणों के प्रदर्शन की प्रोग्राम द्वारा तुलना करें: प्रत्येक संस्करण से संबद्ध रन ID प्राप्त करें, रन के मेट्रिक्स पूछें और प्रचारित करने के लिए सबसे अच्छा प्रदर्शन करने वाला संस्करण खोजें। यह स्वचालन मैन्युअल त्रुटियों को रोकता है और सुनिश्चित करता है कि प्रचार के निर्णय अनुमान के बजाय वस्तुनिष्ठ मेट्रिक्स की तुलना पर आधारित हों।
from mlflow.tracking import MlflowClient
client = MlflowClient()
# List all versions of a model
versions = client.search_model_versions("name='SentimentClassifier'")
for v in versions:
print(f'Version {v.version}: stage={v.current_stage}, run_id={v.run_id[:8]}')
# Get the metric from the associated training run
for v in versions:
run = client.get_run(v.run_id)
acc = run.data.metrics.get('test_accuracy', 'N/A')
print(f' Version {v.version} accuracy: {acc}')स्वचालित प्रचार स्क्रिप्ट
पुनः-प्रशिक्षण pipeline को किसी नए मॉडल को Staging में तभी स्वचालित रूप से भेजना चाहिए, जब वह अलग रखे गए मूल्यांकन डेटा-समुच्चय पर वर्तमान Production मॉडल से बेहतर प्रदर्शन करे। यह चैंपियन/चैलेंजर पैटर्न प्रतिगमन को रोकता है: Production मॉडल चैंपियन होता है और नया मॉडल चैलेंजर। चैलेंजर को तभी भेजा जाता है जब वह सहमत मेट्रिक (जैसे, सत्यापन समुच्चय पर F1) में चैंपियन से बेहतर हो।
from mlflow.tracking import MlflowClient
import mlflow.sklearn
client = MlflowClient()
def get_metric(run_id, metric_name):
return client.get_run(run_id).data.metrics.get(metric_name, 0)
def promote_if_better(model_name, challenger_version, metric='test_f1'):
# Get current production version
prod_versions = client.get_latest_versions(model_name, stages=['Production'])
if not prod_versions:
print('No production model found -- promoting challenger directly.')
client.transition_model_version_stage(model_name, challenger_version, 'Production')
return
prod_v = prod_versions[0]
prod_score = get_metric(prod_v.run_id, metric)
chall_run_id = client.get_model_version(model_name, challenger_version).run_id
chall_score = get_metric(chall_run_id, metric)
print(f'Champion {metric}: {prod_score:.4f} Challenger: {chall_score:.4f}')
if chall_score > prod_score:
client.transition_model_version_stage(model_name, challenger_version,
'Production', archive_existing_versions=True)
print('Challenger promoted to Production!')
else:
print('Champion retained.')अप्रचलित मॉडलों को संग्रहित करना
जब कोई नया संस्करण Production में प्रवेश करे, तो पुराने Production संस्करणों को हटाने के बजाय Archived में भेजना चाहिए। संग्रहित मॉडल get_latest_versions प्रश्नों से बाहर रखे जाते हैं, लेकिन ऑडिट, रोलबैक या भविष्य की तुलना के लिए डाउनलोड किए जा सकते हैं। विनियमित उद्योग में मॉडल संस्करणों को कभी न हटाएँ: वित्तीय सेवाओं और स्वास्थ्य सेवा के लिए अनुपालन ऑडिट हेतु संस्करणों का पूरा इतिहास आवश्यक होता है।
from mlflow.tracking import MlflowClient
client = MlflowClient()
# Manually archive a specific version
client.transition_model_version_stage(
name='SentimentClassifier',
version='1',
stage='Archived'
)
print('Version 1 archived.')
# List only archived versions
archived = client.search_model_versions(
"name='SentimentClassifier' and stage='Archived'"
)
for v in archived:
print(f'Archived: v{v.version} created {v.creation_timestamp}')mlflow models serve के साथ मॉडल सेवा
MLflow किसी भी पंजीकृत मॉडल को एक ही कमांड से स्थानीय REST API के रूप में उपलब्ध करा सकता है। एंडपॉइंट JSON पेलोड स्वीकार करता है और पूर्वानुमान लौटाता है। क्लाउड प्लेटफ़ॉर्म पर तैनाती से पहले तीव्र प्रोटोटाइप बनाने और एकीकरण परीक्षण के लिए यह उपयोगी है। Production के लिए बेहतर स्केलेबिलिटी और निगरानी हेतु कंटेनर-आधारित सेवा (Docker + FastAPI या MLflow का Docker निर्यात) का उपयोग करें।
# Serve the Production model as a local REST endpoint
# mlflow models serve -m 'models:/SentimentClassifier/Production' --port 8080
# Then call it with curl:
# curl -X POST http://localhost:8080/invocations \
# -H 'Content-Type: application/json' \
# -d '{"dataframe_records": [{"feature1": 0.5, "feature2": 1.2}]}'
# Or with Python requests:
import requests
data = {'dataframe_records': [{'feature1': 0.5, 'feature2': 1.2}]}
response = requests.post('http://localhost:8080/invocations', json=data)
print('Prediction:', response.json())रजिस्ट्री वेबहुक और सूचनाएँ
MLflow Registry (Databricks और कुछ एंटरप्राइज़ व्यवस्थाओं में) ऐसे वेबहुक का समर्थन करता है, जो मॉडल के चरण-परिवर्तन होने पर HTTP कॉलबैक चलाते हैं। ओपन-सोर्स MLflow में, क्रॉन कार्य में रजिस्ट्री को बार-बार जाँचकर वेबहुक का अनुकरण करें। सामान्य स्वचालन पैटर्न में ये शामिल हैं: मॉडल के Staging में प्रवेश करने पर Slack सूचना भेजना, मॉडल के Staging तक पहुँचने पर एकीकरण परीक्षण शुरू करना और Production अपडेट होने पर टीम को सचेत करना।
# Polling script (run on a schedule, e.g., cron every 5 minutes)
from mlflow.tracking import MlflowClient
import json
import os
client = MlflowClient()
state_file = '/tmp/model_registry_state.json'
def load_state():
if os.path.exists(state_file):
return json.load(open(state_file))
return {}
def save_state(state):
json.dump(state, open(state_file, 'w'))
state = load_state()
prod = client.get_latest_versions('SentimentClassifier', stages=['Production'])
if prod:
current_prod = prod[0].version
if state.get('production_version') != current_prod:
print(f'ALERT: Production changed to version {current_prod}')
# send_slack_notification(current_prod)
state['production_version'] = current_prod
save_state(state)त्वरित जाँच
इस पाठ में दिए गए Python के साथ मशीन लर्निंग संबंधी सिद्धांतों की अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: MLflow Model Registry, None, Staging, Production और Archived जैसे जीवनचक्र चरणों के साथ संस्करणयुक्त मॉडल संग्रहण प्रदान करती है, निर्बाध अपडेट सक्षम करने के लिए संस्करण नंबर के बजाय चरण उपनाम ('Production') से मॉडल लोड करें, और स्वचालित प्रचार स्क्रिप्ट Production में प्रतिगमन रोकने के लिए चैंपियन/चैलेंजर पैटर्न लागू करती हैं। आगे हम GitHub Actions का ऐसा कार्यप्रवाह बनाएँगे, जो नया डेटा आने पर मॉडल को अपने-आप फिर से प्रशिक्षित और प्रचारित करेगा।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “मॉडल रजिस्ट्री: स्टेजिंग, प्रोडक्शन और संग्रहण” पाठ निःशुल्क है?
हाँ—“मॉडल रजिस्ट्री: स्टेजिंग, प्रोडक्शन और संग्रहण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Machine Learning Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“मॉडल रजिस्ट्री: स्टेजिंग, प्रोडक्शन और संग्रहण” में मैं क्या सीखूँगा?
शिक्षार्थी MLflow Model Registry में मॉडल संस्करण पंजीकृत करेंगे, उसे Staging से Production तक ले जाएँगे और Python API से प्रोन्नयन कार्यप्रवाह की स्क्रिप्ट बनाएँगे। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Machine Learning Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Machine Learning Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Machine Learning Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“मॉडल रजिस्ट्री: स्टेजिंग, प्रोडक्शन और संग्रहण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Machine Learning Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Machine Learning Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- MLflow के साथ प्रयोग ट्रैकिंग: पैरामीटर, मेट्रिक और आर्टिफैक्ट लॉग करना
- मशीन लर्निंग के लिए Docker से पुनरुत्पाद्य वातावरण
- मॉडल रजिस्ट्री: स्टेजिंग, प्रोडक्शन और संग्रहण
- GitHub Actions के साथ स्वचालित पुनर्प्रशिक्षण पाइपलाइन