۸ فروردین ۱۴۰۵۱۲ دقیقه مطالعه
استقرار مدلهای یادگیری ماشین در مقیاس بزرگ
برای استقرار مدل یادگیری ماشین در مقیاس بالا فقط یک API کافی نیست. با MLOps، Model Registry، Autoscaling، Canary Deployment، Monitoring و Drift آشنا شوید.

مدلی ساختهاید که روی داده تست عملکرد خوبی دارد.
Accuracy مناسب است.
Notebook بدون خطا اجرا میشود.
فایل مدل هم آماده است.
اما هنوز مهمترین بخش کار باقی مانده:
آیا این مدل میتواند هر روز، برای کاربران واقعی، با حجم واقعی درخواست و بدون غافلگیری کار کند؟
اینجاست که فاصله میان «ساخت مدل» و «ساخت یک سیستم یادگیری ماشین» مشخص میشود.
Google در راهنمای MLOps خود به نکته مهمی اشاره میکند: کد مربوط به مدل فقط بخش کوچکی از یک سیستم واقعی Machine Learning است. در اطراف آن، اجزایی مثل جمعآوری و اعتبارسنجی داده، تست، مدیریت منابع، Serving Infrastructure، Metadata، Automation و Monitoring وجود دارند.
پس استقرار مدل در مقیاس بالا صرفاً این نیست که فایل مدل را پشت یک API قرار دهیم.
مدل باید نسخهپذیر، قابل تکرار، قابل مانیتور، قابل Rollback و قابل Scale باشد.
اول مشخص کنید Prediction شما چه نوعی است
همه مدلها نباید به یک شکل Deploy شوند.
قبل از انتخاب زیرساخت باید بدانیم Prediction چه زمانی و با چه سرعتی لازم است.
Real-time Inference
کاربر یا سیستم درخواست میفرستد و انتظار دارد در همان لحظه پاسخ بگیرد.
مثلاً:
- تشخیص تقلب هنگام پرداخت
- پیشنهاد محصول
- Scoring یک درخواست
- تشخیص تصویر
- یا مدل Recommendation در یک اپلیکیشن
در این حالت Latency مهم است و معمولاً مدل پشت یک Online Endpoint قرار میگیرد.
Batch Inference
گاهی لازم نیست هر Prediction در همان لحظه ساخته شود.
مثلاً هر شب قرار است برای یک میلیون مشتری احتمال Churn محاسبه شود.
در اینجا اجرای Batch میتواند بسیار منطقیتر و ارزانتر از نگهداشتن یک Endpoint دائماً روشن باشد.
Asynchronous Inference
بعضی درخواستها زمان بیشتری میخواهند.
مثلاً Payload بزرگ است یا Prediction چند دقیقه طول میکشد.
در این حالت لازم نیست Client اتصال HTTP را تا پایان پردازش باز نگه دارد. درخواست وارد Queue میشود و نتیجه بعداً برگردانده میشود.
AWS نیز برای SageMaker این سه الگوی اصلی را از هم جدا میکند: Real-time برای Latency پایین، Serverless برای بارهای متناوب و Asynchronous برای درخواستهای طولانی یا Payloadهای بزرگ.
پس اولین تصمیم Scaling این نیست که:
«چند GPU بخریم؟»
بلکه:
«این Prediction واقعاً چطور مصرف میشود؟»
SLA مدل را قبل از انتخاب زیرساخت مشخص کنید
«مدل باید سریع باشد» Requirement خوبی نیست.
باید مشخص کنیم سریع یعنی چه.
مثلاً:
- P95 Latency کمتر از ۲۰۰ میلیثانیه
- حداقل ۵۰۰ Request در ثانیه
- Availability برابر با 99.9%
- حداکثر Error Rate برابر با 0.1%
- یا: هر Batch باید تا ساعت ۶ صبح تمام شود
وقتی SLO یا SLA روشن باشد، تصمیم درباره Compute، Replica، Autoscaling و حتی انتخاب Architecture بسیار منطقیتر میشود.
یک مدل ممکن است از نظر Accuracy عالی باشد اما برای Production نامناسب باشد چون هر Prediction دو ثانیه طول میکشد و به GPU گرانقیمت نیاز دارد.
بهترین مدل آزمایشگاهی الزاماً بهترین مدل Production نیست.
محیط اجرای مدل را قابل تکرار کنید
یکی از کلاسیکترین جملههای دنیای ML این است:
روی سیستم من کار میکند.
در Production این جمله چندان کمککننده نیست.
مدل معمولاً به مجموعهای از Dependencyها وابسته است:
- نسخه Python
- Libraryها
- Runtime
- CUDA
- Driver
- Preprocessing Code
- Feature Transformation
- و گاهی فایلهای جانبی
اگر محیط Training و Serving با هم تفاوت داشته باشند، نتیجه میتواند از Error ساده تا Prediction متفاوت تغییر کند.
یکی از راههای متداول، Package کردن مدل و Dependencyهای آن در Container است.
MLflow نیز در مستندات Deployment خود از Container بهعنوان راهی برای Package کردن مدل همراه Dependencyها و استانداردکردن محیط اجرا استفاده میکند.
اصل مهم این است:
Artifact مدل باید بهتنهایی قابلشناسایی نباشد؛ محیط و کدی که آن را اجرا میکند هم باید قابل بازتولید باشند.
Model Version را مثل یک فایل معمولی مدیریت نکنید
نامهایی مثل:
model_final.pkl
model_final2.pkl
model_really_final.pkl
در Production خیلی زود دردسر درست میکنند.
باید بتوانید بگویید:
- کدام مدل الان Production است؟
- با چه Datasetی Train شده؟
- کدام Commit کد آن را ساخته؟
- چه Hyperparameterهایی داشته؟
- چه Metricهایی هنگام Validation ثبت شده؟
- چه کسی آن را Approve کرده؟
- و مدل قبلی چه بوده؟
اینجا Model Registry وارد کار میشود.
MLflow Model Registry برای هر مدل Version، Lineage، Metadata، Tag و Alias نگه میدارد و امکان میدهد نسخهای مثل champion را از نسخههای Candidate یا آزمایشی جدا کنیم.
Microsoft Azure Machine Learning نیز Model Registration را بخشی از MLOps میداند و Metadata مربوط به Training، Version و Deployment را برای Governance و Traceability نگه میدارد.
وقتی Model Registry داریم، سؤال:
«کدام فایل را Deploy کنیم؟»
تبدیل میشود به:
«کدام Version تأییدشده باید ترافیک Production را بگیرد؟»
این تفاوت کوچک نیست.
مدل را از Endpoint جدا کنید
یکی از معماریهای مفید این است که Client به یک Endpoint ثابت متصل باشد، نه مستقیماً به Version خاص مدل.
Endpoint میتواند پشت خودش چند Deployment داشته باشد.
مثلاً:
Blue → Model v12
و:
Green → Model v13
Client هنوز همان Endpoint را صدا میزند.
اما Routing مشخص میکند هر نسخه چه مقدار Traffic بگیرد.
Azure Machine Learning دقیقاً چنین مدلی را برای Online Endpointها پشتیبانی میکند؛ یک Endpoint میتواند چند Deployment داشته باشد و Traffic بین آنها تقسیم شود.
این جداسازی باعث میشود ارتقای مدل بدون تغییر Client انجام شود.
نسخه جدید را مستقیم روی ۱۰۰٪ کاربران Release نکنید
مدل جدید روی offline Test بهتر بوده است.
آیا باید فوراً مدل قبلی را حذف کنیم؟
معمولاً نه.
Offline Metric همه چیز را نشان نمیدهد.
داده Production ممکن است متفاوت باشد.
Latency مدل جدید ممکن است بالاتر باشد.
مصرف RAM یا GPU ممکن است افزایش یافته باشد.
حتی ممکن است Predictionها در یک Segment خاص رفتار غیرمنتظرهای داشته باشند.
چند الگوی Rollout برای کاهش این ریسک وجود دارد.
Shadow Testing
در Shadow Deployment نسخه جدید یک کپی از Traffic واقعی را دریافت میکند، اما Response آن به کاربر برگردانده نمیشود.
Production همچنان پاسخ مدل فعلی را میدهد.
در پشت صحنه میتوان بررسی کرد:
- Latency مدل جدید چقدر است؟
- Error دارد؟
- Prediction Distribution چگونه است؟
- Resource Usage چقدر است؟
- و اگر Ground Truth داریم، کیفیت آن نسبت به مدل فعلی چگونه است؟
AWS SageMaker Shadow Testing و Azure Traffic Mirroring هر دو همین الگو را برای ارزیابی نسخه جدید با Traffic واقعی قبل از تغییر پاسخ کاربران ارائه میکنند.
Canary Deployment
اگر Shadow نتیجه خوبی داشت، میتوان درصد کمی از Traffic واقعی را به مدل جدید داد.
مثلاً:
95% → مدل فعلی
5% → مدل جدید
بعد:
90 / 10
50 / 50
و در نهایت:
0 / 100
Azure در راهنمای Safe Rollout خود دقیقاً همین مسیر Blue/Green و افزایش مرحلهای Traffic را توضیح میدهد.
مزیت این روش روشن است:
اگر Model v13 مشکل داشته باشد، لازم نیست همه کاربران مشکل را تجربه کنند.
Rollback باید یک عملیات عادی باشد، نه بحران
اگر Model جدید خراب شد، چقدر طول میکشد نسخه قبل برگردد؟
اگر جواب:
«اول باید ببینیم فایل قبلی کجاست»
باشد، MLOps هنوز کامل نیست.
Model Registry، Versioning و Traffic Routing باید اجازه دهند نسخه سالم قبلی سریعاً دوباره فعال شود.
Rollback شکست نیست.
بخشی عادی از Release Engineering است.
Deployment خوب فقط مسیر رفت ندارد؛ مسیر برگشت هم دارد.
Autoscaling فقط با CPU تعریف نمیشود
وقتی Traffic زیاد شود، Serving Layer باید ظرفیت بیشتری ایجاد کند.
در معماری Container-based، Kubernetes Horizontal Pod Autoscaler میتواند تعداد Replicaها را بر اساس CPU، Memory یا Custom Metricها تغییر دهد. مستندات فعلی Kubernetes HPA نیز Scaling بر اساس Resource و Custom Metric را پشتیبانی میکنند.
اما برای ML همیشه CPU بهترین Metric نیست.
بسته به Model ممکن است Metrics مناسبتر شامل اینها باشند:
- Request per Second
- Queue Length
- Concurrent Requests
- GPU Utilization
- GPU Memory
- Inference Latency
- Tokens per Second
- Batch Size
- یا Pending Requests
فرض کنید CPU فقط ۳۰ درصد است، اما GPU Memory کاملاً پر شده.
CPU-based Autoscaler ممکن است تصور کند همهچیز آرام است.
پس Scaling Metric باید با Bottleneck واقعی مدل هماهنگ باشد.
Scale Up و Scale Out را با هم اشتباه نگیرید
دو راه کلی برای افزایش ظرفیت وجود دارد.
Vertical Scaling
Resource قویتری به یک Instance بدهیم.
- RAM بیشتر
- CPU بیشتر
- GPU قویتر
Horizontal Scaling
تعداد Replicaهای Serving را بیشتر کنیم.
Kubernetes HPA نیز Horizontal Scaling را دقیقاً به معنی افزایش تعداد Podها در پاسخ به Demand تعریف میکند.
در بسیاری از سیستمهای Real-time، Horizontal Scaling مزایایی مثل Availability بهتر و توزیع Load دارد.
اما برخی مدلهای بسیار بزرگ ممکن است روی یک GPU یا حتی یک Node جا نشوند و نیاز به Model Parallelism یا Distributed Serving داشته باشند.
پس عبارت:
«فقط Replica را زیاد میکنیم»
برای همه مدلها جواب نیست.
Cold Start را در معماری حساب کنید
Autoscaling عالی است تا زمانی که Replica جدید برای بالا آمدن ۴۰ ثانیه زمان بخواهد.
- Load مدل از Storage
- Initialize کردن Runtime
- Allocate شدن GPU
- Warm-up
- و Cacheها
همگی میتوانند Startup Time ایجاد کنند.
اگر Traffic در چند ثانیه ناگهان بالا برود، Autoscaler ممکن است درست تصمیم بگیرد اما Capacity دیر برسد.
راهحل بسته به Use Case میتواند شامل این موارد باشد:
- Minimum Replica
- Pre-warming
- Predictive Scaling
- Container Image کوچکتر
- Model Loading Optimization
- یا Serverless در Workloadهایی که Cold Start قابل تحمل است
AWS نیز Serverless Inference را مناسب بارهایی میداند که دوره Idle دارند و میتوانند Cold Start را تحمل کنند.
Throughput و Latency همیشه دوست هم نیستند
Batching میتواند تعداد Prediction در هر ثانیه را بالا ببرد.
اما برای ساختن Batch باید چند Request کمی منتظر بمانند.
پس Throughput بیشتر ممکن است Latency را هم افزایش دهد.
برای سیستم Recommendation شاید چند میلیثانیه اضافه قابل قبول باشد.
برای Fraud Detection در مسیر Payment شاید نباشد.
به همین دلیل Optimization مدل فقط Benchmark کردن بیشترین QPS نیست.
باید در محدوده SLA واقعی اندازهگیری شود.
Monitoring مدل دو بخش دارد: سیستم و خود مدل
یکی از اشتباههای رایج این است که Dashboard سبز باشد و تصور کنیم مدل سالم است.
CPU خوب.
Memory خوب.
Endpoint هم Up است.
اما Predictionها دیگر درست نیستند.
برای ML حداقل دو نوع Monitoring لازم است.
Operational Monitoring
سلامت سرویس:
- Latency
- Throughput
- Error Rate
- Timeout
- CPU
- RAM
- GPU
- Queue Length
- Availability
Model Monitoring
سلامت رفتار ML:
- Prediction Distribution
- Feature Distribution
- Data Quality
- Accuracy یا Metric واقعی مدل
- Drift
- Bias
- Feature Attribution
Azure Machine Learning نیز MLOps را شامل Monitoring مشکلات Operational و ML-related، Model Inputها و Alertها میداند.
مدلی که HTTP 200 برمیگرداند لزوماً مدل سالمی نیست.
Data Drift چیست؟
فرض کنیم مدل Fraud Detection با داده سال گذشته Train شده است.
الگوی خرید کاربران تغییر میکند.
محصول جدید وارد بازار میشود.
کانال فروش جدید اضافه میشود.
رفتار Fraudsterها عوض میشود.
حالا Distribution داده Production با Training Data فرق دارد.
به این تغییر معمولاً Data Drift میگوییم.
AWS در مستندات Model Monitoring توضیح میدهد اگر طبیعت آماری داده Production از Baseline داده Training فاصله بگیرد، کیفیت Prediction ممکن است کاهش پیدا کند.
اما Drift بهتنهایی الزاماً به معنی خرابشدن مدل نیست.
باید مشخص کنیم:
- چه Featureای تغییر کرده؟
- چقدر؟
- آیا روی Performance واقعی اثر گذاشته؟
- آیا این تغییر طبیعی است؟
Model Quality بدون Ground Truth همیشه سریع قابل اندازهگیری نیست
در بعضی سیستمها Truth فوراً مشخص میشود.
مثلاً Spam Detection ممکن است Feedback سریع داشته باشد.
اما در Prediction Churn شاید چند ماه طول بکشد بفهمیم مشتری واقعاً Churn کرده یا نه.
در Credit Risk ممکن است Outcome بسیار دیرتر مشخص شود.
پس Model Monitoring همیشه نمیتواند همان لحظه Accuracy واقعی را محاسبه کند.
در چنین سناریوهایی میتوان ابتدا Proxyها را مانیتور کرد:
- Input Drift
- Prediction Distribution
- Confidence
- Missing Values
- Business KPIها
و وقتی Ground Truth رسید، Quality Metric واقعی را محاسبه کرد.
AWS نیز در Model Quality Monitoring برای مقایسه Prediction با Ground Truth، Label واقعی را بعداً با Predictionهای ثبتشده ترکیب میکند.
Drift را مستقیم به Retraining اتوماتیک وصل نکنید
تصور جذابی است:
Drift دیده شد → مدل خودکار Retrain شود → خودکار Deploy شود.
اما این Pipeline اگر Guardrail نداشته باشد میتواند مدل بدتری را با سرعت بیشتری وارد Production کند.
Google در MLOps Level 1 و 2 روی Automated Data Validation و Model Validation قبل از Delivery مدل تأکید میکند.
Retraining Pipeline بهتر است Gate داشته باشد.
مثلاً مدل جدید فقط زمانی Candidate شود که:
- Data Validation پاس شود.
- Metric از Threshold پایینتر نباشد.
- Regression Test موفق باشد.
- Bias یا Safety Check مشکلی نداشته باشد.
- Latency قابل قبول باشد.
- و در Use Case حساس، Approval انسانی هم دریافت شود.
Automation باید سرعت بدهد.
نه اینکه Judgment را حذف کند.
Training-Serving Skew را جدی بگیرید
فرض کنید هنگام Training:
سن مشتری از تاریخ تولد محاسبه میشود.
اما در Production این Feature با Logic کمی متفاوت ساخته میشود.
مدل همان است.
Data هم ظاهراً مشابه است.
اما Feature Engineering دو محیط یکسان نیست.
این نوع اختلاف میتواند Prediction را خراب کند.
به همین دلیل Pipeline Production باید تا جای ممکن همان Transformationهایی را استفاده کند که هنگام Training استفاده شدهاند.
Google در MLOps روی Experimental-Operational Symmetry و استفاده از Pipelineها و Componentهای قابل تکرار میان محیطها تأکید میکند.
یک Feature بهتر است یک تعریف داشته باشد.
نه یک نسخه در Notebook و یک نسخه دیگر در Backend.
CI/CD برای ML فقط Deploy کردن کد نیست
در نرمافزار سنتی معمولاً Artifact اصلی Code است.
در ML چیزهای بیشتری Version میشوند:
- Code
- Model
- Data
- Feature Definition
- Training Config
- Environment
- Pipeline
- Evaluation Result
- Infrastructure
پس CI/CD باید بیشتر از:
docker build && deploy
باشد.
Microsoft در مستندات MLOps خود Pipelineهای قابل تکرار، Model Registration، Metadata، Monitoring و Automation کل Lifecycle را جزو MLOps میداند. نسخه راهنمای GitHub/Azure MLOps آن نیز در مارس ۲۰۲۶ بهروزرسانی شده و Training، Infrastructure Deployment و Model Monitoring را در Workflow خودکار قرار میدهد.
Google نیز در MLOps Level 2 اجزایی مثل Source Control، Build/Test، Deployment، Model Registry، Metadata و Monitoring را بخشی از CI/CD کامل ML میداند.
مدل Production باید Lineage داشته باشد
اگر فردا Prediction مهمی زیر سؤال رفت باید بتوانیم پاسخ دهیم:
- این Prediction توسط کدام Model Version تولید شد؟
- آن مدل با کدام Dataset Train شده بود؟
- کد Training کدام Commit بود؟
- چه کسی آن را Approve کرد؟
- چه زمانی Deploy شد؟
- چه Metricهایی داشت؟
این همان Lineage است.
MLflow Model Registry ارتباط Version مدل با Experiment و Run را نگه میدارد و Azure ML نیز Audit Trail و Metadata مربوط به Training و Deployment را جزو Governance مدل میداند.
در محیط کوچک شاید این جزئیات اضافه به نظر برسند.
وقتی دهها مدل و صدها Version دارید، دیگر اضافه نیستند.
تنها راه فهمیدن این هستند که چه اتفاقی افتاده است.
امنیت Endpoint مدل را فراموش نکنید
Model Endpoint هم یک API است.
پس همان سؤالهای امنیتی API اینجا هم وجود دارند:
- چه کسی اجازه Prediction دارد؟
- Authentication چگونه انجام میشود؟
- Service Account چه Permissionهایی دارد؟
- آیا Endpoint باید Public باشد؟
- داده حساس در Request وجود دارد؟
- Logها چه اطلاعاتی ذخیره میکنند؟
- Model Artifact کجا نگهداری میشود؟
- و آیا Tenantها از هم جدا هستند؟
Google Vertex AI برای Online Inference امکان Private Endpoint روی شبکه خصوصی را هم ارائه میکند تا سرویس Prediction مستقیماً روی Endpoint عمومی قرار نگیرد.
در مدلهایی که داده حساس میگیرند، Infrastructure Security بخشی از MLOps است؛ نه مسئلهای جدا از آن.
هزینه را به ازای Prediction بسنجید
وقتی مدل Scale میشود، هزینه خیلی سریع اهمیت پیدا میکند.
عدد مفید فقط:
«ماه گذشته GPU ما ۵۰۰۰ دلار شد»
نیست.
Metric بهتر ممکن است این باشد:
Cost per 1,000 Predictions
یا:
- Cost per Image
- Cost per Recommendation
- Cost per Document
- Cost per Customer
بعد میتوان نسخههای مدل را بهتر مقایسه کرد.
مدل B شاید ۱٪ Accuracy بیشتری داشته باشد ولی ۴ برابر گرانتر باشد.
آیا این ۱٪ ارزش ۴ برابر Cost دارد؟
جواب فنی نیست.
Business Decision است.
ظرفیت را قبل از Launch با Load Test پیدا کنید
Autoscaling جای Capacity Planning را نمیگیرد.
قبل از Production باید بدانیم:
- یک Replica چند Request در ثانیه تحمل میکند؟
- P50 / P95 / P99 Latency چقدر است؟
- با چه Batch Size؟
- CPU/GPU Utilization چقدر است؟
- Memory Leak داریم؟
- چه زمانی Error شروع میشود؟
- Startup Time Replica جدید چقدر است؟
Load Test باید تا نقطه Failure هم تصویر بدهد.
نه فقط تا جایی که همهچیز سبز است.
بعد Minimum و Maximum Replica و Scaling Thresholdها بر اساس عدد واقعی تنظیم میشوند.
یک معماری ساده Production ML چه اجزایی دارد؟
برای همه پروژهها یک Architecture ثابت وجود ندارد، اما یک سیستم بالغ معمولاً چیزی شبیه این زنجیره دارد:
Data → Validation → Training → Evaluation → Registry → Approval → Deployment → Endpoint → Monitoring → Feedback → Retraining
در کنار آن:
- Source Control
- CI/CD
- Artifact Store
- Secrets
- Logging
- Observability
- Infrastructure as Code
- و Governance
قرار میگیرند.
این همان دلیل اصلی است که Google میگوید Model Code فقط بخش کوچکی از ML System واقعی است.
چه زمانی Kubernetes لازم است؟
Kubernetes ابزار قدرتمندی برای Serving مدل است.
اما جواب پیشفرض همه پروژهها نیست.
اگر:
- چند مدل دارید،
- نیاز به کنترل عمیق Infrastructure دارید،
- Workload پیچیده است،
- GPU Scheduling مهم است،
- یا Platform Engineering Team دارید،
Kubernetes میتواند منطقی باشد.
Autoscaling، Rolling Deployment و مدیریت Replica از قابلیتهای اصلی آن هستند.
اما برای یک مدل کوچک با Traffic محدود، Managed Endpoint ممکن است عملیاتی بسیار سادهتر داشته باشد.
Infrastructure پیچیدهتر فقط زمانی ارزش دارد که مسئلهای را حل کند.
MLOps خوب با تعداد ابزارها اندازهگیری نمیشود.
یک چکلیست عملی قبل از Production
| حوزه | سؤال |
|---|---|
| Use Case | Real-time، Batch یا Async لازم داریم؟ |
| SLA | Latency، Throughput و Availability موردنیاز چقدر است؟ |
| Packaging | Model و Dependencyها قابل بازتولید هستند؟ |
| Registry | Version، Metadata و Lineage مدل ثبت شدهاند؟ |
| Validation | مدل قبل از Release چه Gateهایی را باید پاس کند؟ |
| Serving | Endpoint از Model Version جدا شده است؟ |
| Rollout | Shadow، Canary یا Blue/Green داریم؟ |
| Rollback | نسخه سالم قبلی چقدر سریع برمیگردد؟ |
| Scaling | Bottleneck و Scaling Metric واقعی چیست؟ |
| Capacity | Load Test انجام شده است؟ |
| Monitoring | هم Infrastructure و هم کیفیت ML مانیتور میشوند؟ |
| Drift | Baseline و Threshold مناسب داریم؟ |
| Ground Truth | کیفیت واقعی مدل چه زمانی قابل اندازهگیری است؟ |
| Retraining | Trigger و Approval برای Retraining مشخص است؟ |
| Security | Endpoint، Data و Artifact دسترسی کنترلشده دارند؟ |
| Cost | هزینه به ازای Prediction مشخص است؟ |
| Ownership | چه تیمی بعد از Go-live مالک مدل است؟ |
Production پایان کار مدل نیست
در نرمافزار سنتی گاهی Release یک نقطه پایان بزرگ است.
در Machine Learning، Release بیشتر شبیه شروع مرحله جدید است.
چون محیط تغییر میکند.
داده تغییر میکند.
رفتار کاربران تغییر میکند.
Business Rule تغییر میکند.
و Model Performance هم ممکن است همراه آن تغییر کند.
مدلی که امروز بهترین Version است، تضمینی ندارد شش ماه دیگر هم بهترین باشد.
بنابراین استقرار مدل در مقیاس بالا بیش از آنکه مسئله «چطور مدل را Deploy کنیم؟» باشد، مسئله این است:
چطور سیستمی بسازیم که بتواند مدل را بارها و با اطمینان Deploy، اندازهگیری، مقایسه، Rollback و جایگزین کند؟
مدل مهم است.
اما Production فقط مدل نیست.
مدلی که نمیتوانیم نسخهاش را پیدا کنیم، عملکردش را ببینیم، ظرفیتش را افزایش دهیم یا سریع برگردانیم، هنوز واقعاً Production-ready نیست.
ادامه مسیر
مقالات مرتبط
منابع و مطالعه بیشتر
- Google Cloud Architecture Center — MLOps: Continuous delivery and automation pipelines in machine learning
- Microsoft Azure Machine Learning — Model management, deployment, and MLOps
- Microsoft Azure Machine Learning — Safe rollout for online endpoints
- Amazon SageMaker AI — Model deployment and inference options
- MLflow — Model Registry and deployment
- Kubernetes — Horizontal Pod Autoscaling