MLOps কি এবং কেন দরকার
একটি AI model train করা সহজ, কিন্তু সেটাকে production-এ এনে millions of users কে serve করা — সেটাই আসল engineering। এই chapter সেই গল্প দিয়ে শুরু।
যে গল্প দিয়ে শুরু
ধরুন, একটি startup-এর Data Scientist টানা ৩ মাস কাজ করে একটি দারুণ recommendation model তৈরি করলেন। Jupyter Notebook-এ accuracy ৯৪%। পুরো team উচ্ছ্বসিত। কিন্তু launch-এর দিন user-রা যখন product browse করল — কিছুই recommend হলো না। API timeout, server crash, এবং সবচেয়ে খারাপ — কেউ জানে না মডেলটা কোন version-এ আছে।
এটাই হলো একটি ML team-এর সবচেয়ে কমন গল্প। মডেল আছে, কিন্তু system নেই। আর এই “system” তৈরির engineering discipline-কেই বলা হয় MLOps।
MLOps আসলে কি?
MLOps = Machine Learning + DevOps + Data Engineering। সহজভাবে বললে — যে practices, tools এবং culture ML model কে notebook থেকে production-এ নিয়ে যায় এবং সেখানে নির্ভরযোগ্যভাবে চালু রাখে, তাকেই MLOps বলে।
একটি MLOps system সাধারণত নিচের কাজগুলো automate করে:
- Data collection ও versioning
- Model training ও experiment tracking
- Model packaging ও deployment
- Real-time monitoring ও drift detection
- Continuous retraining ও rollback
System Intuition — DevOps-এর সাথে পার্থক্য
DevOps-এ আমরা code deploy করি — code deterministic, একই input এ একই output। কিন্তু ML system-এ আমাদের তিনটি জিনিস একসাথে manage করতে হয়:
এই তিনটি একসাথে version, test এবং deploy করার complexity — এটাই MLOps-কে DevOps থেকে আলাদা করে তোলে।
Real-world Usage
- Netflix — recommendation মডেল প্রতি কয়েক ঘণ্টায় retrain ও redeploy হয়।
- Uber Michelangelo — internal MLOps platform, hundreds of model serve করে।
- Spotify — playlist generation মডেল A/B test করে continuous improve হয়।
AI Lifecycle (একটি model-এর জীবনচক্র)
- Problem Framing — business সমস্যাকে ML সমস্যায় রূপ দেওয়া।
- Data Collection & Versioning — DVC বা LakeFS দিয়ে data track করা।
- Training & Experiment Tracking — MLflow / Weights & Biases।
- Packaging — Pickle / Joblib / ONNX হিসেবে save।
- Serving — FastAPI / TorchServe / Triton দিয়ে API।
- Deployment — Docker + Kubernetes / Serverless।
- Monitoring — latency, drift, accuracy track করা।
- Retraining — performance কমলে নতুন data দিয়ে আবার train।
একটি minimal end-to-end উদাহরণ
নিচে একটি ছোট workflow — train করে save করে FastAPI দিয়ে serve করা।
# train.py
import joblib
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=500).fit(X, y)
joblib.dump(model, "model.joblib")
print("Model saved: model.joblib")ব্যাখ্যা: এখানে আমরা scikit-learn দিয়ে একটি simple classifier train করছি এবং joblib দিয়ে disk-এ save করছি। MLOps-এর প্রথম ধাপ হলো model কে এমনভাবে save করা যেন অন্য কোনো process সেটি load করে ব্যবহার করতে পারে।
# app.py — FastAPI service
from fastapi import FastAPI
from pydantic import BaseModel
import joblib
model = joblib.load("model.joblib")
app = FastAPI(title="Iris Classifier")
class Features(BaseModel):
sepal_length: float
sepal_width: float
petal_length: float
petal_width: float
@app.post("/predict")
def predict(f: Features):
pred = model.predict([[f.sepal_length, f.sepal_width,
f.petal_length, f.petal_width]])
return {"class": int(pred[0])}ব্যাখ্যা: এই API টি একটি POST endpoint open করে যেখানে user 4টি feature পাঠাবে এবং model prediction return করবে। এটাই হলো একটি real production AI service-এর সবচেয়ে ছোট রূপ।
# Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]ব্যাখ্যা: Docker-এ wrap করার পর এই service যেকোনো server, যেকোনো cloud-এ একইভাবে চলবে। এই reproducibility-ই MLOps-এর core philosophy।
যেসব ভুল নতুনরা করে
- Model train করেই “কাজ শেষ” মনে করা — production-এ data বদলালে accuracy পড়ে যায়।
- Notebook-এ মডেল রেখে দেওয়া, কোনো API বা container ছাড়া।
- Data ও model-এর version track না করা — পরে reproduce করা যায় না।
- Monitoring ছাড়া deploy — drift হলেও কেউ জানে না।
- Local এ চলে, production-এ চলে না — environment mismatch।
হাতে-কলমে অনুশীলন
- উপরের
train.pyএবংapp.pyনিজের মেশিনে চালান। uvicorn app:app --reloadদিয়ে server চালু করে Postman/cURL দিয়ে test করুন।- মডেল file
model.joblib-কে অন্য folder-এ রেখে path পরিবর্তন করে দেখুন কী হয়। - Dockerfile build করে container চালান:
docker build -t iris . && docker run -p 8000:8000 iris।
Mini Project — “Hello MLOps”
একটি simple iris classifier তৈরি করুন, FastAPI দিয়ে wrap করুন, Docker image বানান, এবং GitHub-এ একটি repo বানিয়ে README-এ documentation লিখুন। README-এ অবশ্যই থাকবে: কীভাবে run করতে হবে, কী endpoint আছে, এবং sample request।
এই chapter থেকে যা শিখলাম
- MLOps হলো ML model কে production-এ নেওয়ার engineering discipline।
- এটি DevOps-এর চেয়ে জটিল কারণ Code + Data + Model — তিনটিই manage করতে হয়।
- AI lifecycle-এর ৮টি ধাপ আছে — সবগুলোই automation-এর যোগ্য।
- সবচেয়ে ছোট MLOps system = save model → serve API → containerize → deploy।