Model Deployment হল মেশিন লার্নিং মডেলকে বাস্তব জীবনে ব্যবহার উপযোগী করার প্রক্রিয়া, যাতে এটি নতুন ইনপুট ডেটা প্রাপ্ত হলে পূর্বানুমান করতে পারে। মডেল ডিপ্লয়মেন্ট সাধারণত দুটি ধাপে বিভক্ত:
- মডেল ট্রেনিং এবং প্রস্তুতি
- মডেলকে বাস্তব জীবনের পরিবেশে বা সার্ভারে ডিপ্লয় করা
Model Deployment Overview
- Model Training: প্রথমে আপনি মডেলটি আপনার ডেটাসেটের উপর প্রশিক্ষিত করেন।
- Model Export: প্রশিক্ষিত মডেলটিকে Pickle বা Joblib ফরম্যাটে সংরক্ষণ করা হয় যাতে ভবিষ্যতে পুনরায় ব্যবহার করা যায়।
- API Creation: Flask বা FastAPI এর মাধ্যমে একটি API তৈরি করা হয় যা ক্লায়েন্ট থেকে ইনপুট নেয় এবং মডেল থেকে পূর্বানুমান করে ফলাফল ফেরত পাঠায়।
- API Deployment: API ডিপ্লয় করা হয় একটি ওয়েব সার্ভারে (যেমন Heroku, AWS, Google Cloud বা Azure) যাতে এটি ইন্টারনেটের মাধ্যমে অ্যাক্সেসযোগ্য হয়।
এখানে আমরা Flask দিয়ে একটি সাধারণ API তৈরি এবং মডেল ডিপ্লয়মেন্ট দেখাব।
১. মডেল তৈরি এবং সংরক্ষণ (Training and Saving the Model)
এখানে একটি সাধারণ Random Forest Classifier মডেল তৈরি করা হবে এবং Pickle ব্যবহার করে সংরক্ষণ করা হবে।
import pickle
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# ডেটাসেট লোড করা
iris = load_iris()
X = iris.data
y = iris.target
# ডেটাকে ট্রেনিং এবং টেস্টিং সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Random Forest মডেল তৈরি করা
model = RandomForestClassifier(n_estimators=100)
# মডেল প্রশিক্ষণ
model.fit(X_train, y_train)
# মডেল সংরক্ষণ (Pickle)
with open('random_forest_model.pkl', 'wb') as file:
pickle.dump(model, file)
এই কোডে, একটি Random Forest Classifier মডেল তৈরি এবং প্রশিক্ষিত হয়েছে এবং পরে এটি Pickle ফাইলে সংরক্ষণ করা হয়েছে।
২. Flask API তৈরি এবং মডেল লোড করা (Creating Flask API and Loading the Model)
এখন, একটি Flask API তৈরি করব যা Random Forest মডেলকে লোড করবে এবং ইউজার ইনপুট অনুযায়ী পূর্বানুমান প্রদান করবে।
from flask import Flask, request, jsonify
import pickle
import numpy as np
# Flask অ্যাপ তৈরি করা
app = Flask(__name__)
# মডেল লোড করা
with open('random_forest_model.pkl', 'rb') as file:
model = pickle.load(file)
# API রুট তৈরি করা
@app.route('/predict', methods=['POST'])
def predict():
try:
# ইনপুট ডেটা গ্রহণ
data = request.get_json()
# ইনপুট ডেটাকে নুম্পি অ্যারেতে রূপান্তর
input_features = np.array(data['features']).reshape(1, -1)
# পূর্বানুমান করা
prediction = model.predict(input_features)
# ফলাফল ফেরত পাঠানো
return jsonify({'prediction': int(prediction[0])})
except Exception as e:
return jsonify({'error': str(e)})
# অ্যাপ চালু করা
if __name__ == '__main__':
app.run(debug=True)
কোড ব্যাখ্যা:
- Flask অ্যাপ তৈরি করা হয়েছে, যা
/predictরুটে HTTP POST রিকোয়েস্ট গ্রহণ করবে। - ইনপুট হিসেবে একটি JSON অবজেক্ট নেয়, যেখানে features নামে একটি অ্যারে থাকবে (যেমন আইরিস ডেটাসেটের ফিচারগুলি: পেটাল লেন্থ, পেটাল উইথ, সেপাল লেন্থ, সেপাল উইথ)।
- Pickle ফাইল থেকে মডেলটি লোড করা হয় এবং ইনপুটের উপর পূর্বানুমান করা হয়।
- ফলাফলটি একটি JSON ফরম্যাটে ফেরত পাঠানো হয়।
৩. API টেস্ট করা
এখন, আপনি Postman অথবা curl ব্যবহার করে API টেস্ট করতে পারেন।
Postman দিয়ে টেস্ট:
- URL:
http://127.0.0.1:5000/predict - Method: POST
Body: JSON (যেমন):
{ "features": [5.1, 3.5, 1.4, 0.2] }এখানে features অ্যারেতে আইরিস ডেটাসেটের একটি উদাহরণ ইনপুট দেওয়া হয়েছে।
curl দিয়ে টেস্ট:
curl -X POST -H "Content-Type: application/json" -d '{"features": [5.1, 3.5, 1.4, 0.2]}' http://127.0.0.1:5000/predict
এটি POST রিকোয়েস্ট পাঠাবে এবং পূর্বানুমান পাওয়া যাবে (যেমন, Iris-setosa, Iris-versicolor ইত্যাদি)।
৪. API Deployment
এখন আপনার Flask API তৈরির পর এটি ডিপ্লয় করা যেতে পারে একটি পাবলিক সার্ভারে, যেমন:
- Heroku: Flask অ্যাপকে সহজে Heroku তে ডিপ্লয় করা যায়।
- AWS: AWS EC2 অথবা Lambda ফাংশন ব্যবহার করে API ডিপ্লয় করা যায়।
- Google Cloud: Google Cloud Run অথবা App Engine ব্যবহার করে API ডিপ্লয় করা যায়।
- Docker: Flask অ্যাপকে Docker কনটেইনারে প্যাকেজ করে যে কোনো সার্ভারে ডিপ্লয় করা যায়।
সারাংশ
- Model Deployment হল একটি প্রক্রিয়া যেখানে প্রশিক্ষিত মডেলকে বাস্তব জীবনের অ্যাপ্লিকেশনে বা সিস্টেমে প্রয়োগ করা হয়।
- Flask API তৈরি করে একটি ওয়েব সার্ভিস তৈরি করা হয়, যা ক্লায়েন্ট থেকে ইনপুট গ্রহণ করে এবং মডেল থেকে পূর্বানুমান প্রদান করে।
- মডেল ডিপ্লয়মেন্টের পরে, আপনি আপনার মডেলটি ইন্টারনেটের মাধ্যমে ব্যবহারকারীদের কাছে সরবরাহ করতে পারেন এবং নতুন ডেটার উপর প্রেডিকশন করতে পারেন।
Read more