একটি মেশিন লার্নিং মডেলকে REST API মাধ্যমে সার্ভ (বা প্রকাশ) করা খুবই গুরুত্বপূর্ণ, বিশেষত যখন আপনি চান মডেলটি অন্য অ্যাপ্লিকেশন বা ব্যবহারকারীদের কাছে অ্যাক্সেসযোগ্য হোক। Flask এবং FastAPI হল Python-এ REST API তৈরি করার জন্য জনপ্রিয় লাইব্রেরি যা দিয়ে আপনি মডেল সার্ভ করতে পারেন।
এখানে, আমি Flask ব্যবহার করে মডেল সার্ভ করার একটি সাধারণ উদাহরণ দেখাবো। এটি ব্যবহার করে আপনি আপনার মডেলটি HTTP অনুরোধের মাধ্যমে পাবেন।
1. প্রয়োজনীয় লাইব্রেরি ইনস্টল করা
প্রথমে, আপনার মডেল তৈরি করা এবং Flask ইনস্টল করা দরকার। নিচে প্রয়োজনীয় লাইব্রেরি ইনস্টল করার জন্য কমান্ড দেওয়া হল:
pip install flask scikit-learn
এছাড়াও, যদি আপনি আপনার মডেলটিকে pickle বা joblib দিয়ে সেভ করতে চান, তাহলে:
pip install joblib
2. মডেল ট্রেনিং এবং সেভ করা
যেহেতু আমরা মডেলটি REST API-এ সার্ভ করবো, প্রথমে আমাদের একটি মডেল তৈরি করতে হবে এবং সেটি সেভ করতে হবে।
# মডেল তৈরি এবং সেভ করা (Logistic Regression উদাহরণ)
import joblib
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
# ডেটাসেট লোড করা
iris = load_iris()
X, y = iris.data, iris.target
# মডেল ট্রেনিং করা
model = LogisticRegression(max_iter=200)
model.fit(X, y)
# মডেল সেভ করা
joblib.dump(model, 'iris_model.pkl')
এখানে, Logistic Regression মডেলটি iris_model.pkl ফাইলে সেভ করা হয়েছে।
3. Flask দিয়ে REST API তৈরি করা
এখন, আমরা Flask ব্যবহার করে একটি সিম্পল REST API তৈরি করবো যা এই মডেলকে সার্ভ করবে।
from flask import Flask, request, jsonify
import joblib
import numpy as np
# Flask অ্যাপ তৈরি
app = Flask(__name__)
# মডেল লোড করা
model = joblib.load('iris_model.pkl')
# API রুট: POST /predict
@app.route('/predict', methods=['POST'])
def predict():
# ইনপুট ডেটা গ্রহণ করা
data = request.get_json()
# ইনপুট ডেটা থেকে ফিচার গুলি বের করা
features = np.array(data['features']).reshape(1, -1)
# মডেল প্রেডিকশন করা
prediction = model.predict(features)
# ফলাফল ফিরিয়ে দেয়া
return jsonify({'prediction': int(prediction[0])})
# Flask অ্যাপ চালানো
if __name__ == '__main__':
app.run(debug=True)
এখানে:
- আমরা
iris_model.pklফাইলটি joblib দিয়ে লোড করেছি। /predictএ POST রিকোয়েস্ট এ features পাঠানো হলে, তা দিয়ে মডেল প্রেডিকশন করবে এবং ফলাফল ফেরত দিবে।
4. API চালানো
এখন Flask অ্যাপটি চালু করতে পারবেন:
python app.py
এটি আপনার লোকাল হোস্টে 5000 পোর্টে চলবে (ডিফল্টভাবে)। উদাহরণস্বরূপ, আপনি এখন http://127.0.0.1:5000/predict এই URL এ POST রিকোয়েস্ট পাঠাতে পারবেন।
5. API-তে রিকোয়েস্ট পাঠানো
যেহেতু আমরা একটি POST রিকোয়েস্ট ব্যবহার করবো, আপনি API-তে ডেটা পাঠানোর জন্য requests লাইব্রেরি ব্যবহার করতে পারেন।
pip install requests
এবার, Python কোডে বা Postman ব্যবহার করে API রিকোয়েস্ট পাঠান।
import requests
# URL
url = 'http://127.0.0.1:5000/predict'
# ইনপুট ডেটা
data = {'features': [5.1, 3.5, 1.4, 0.2]} # উদাহরণ: Iris ফিচার
# POST রিকোয়েস্ট পাঠানো
response = requests.post(url, json=data)
# ফলাফল প্রিন্ট করা
print(response.json())
এখানে:
featuresএর মান হবে 4টি সংখ্যা যা আপনি মডেলকে ইনপুট হিসাবে দেবেন।response.json()আপনার API থেকে প্রাপ্ত ফলাফল (প্রেডিকশন) প্রদর্শন করবে।
উপরের উদাহরণে, আপনি যদি Iris dataset এর একটিকোন ফিচারের ইনপুট দেন, তবে মডেলটি সংশ্লিষ্ট শ্রেণী (class) চিহ্নিত করবে এবং প্রেডিকশন হিসেবে ফেরত দিবে।
6. Postman দিয়ে রিকোয়েস্ট পাঠানো
Postman ব্যবহার করেও আপনি POST রিকোয়েস্ট পাঠাতে পারেন। এখানে features নামের একটি JSON প্যারামিটার পাঠিয়ে মডেলকে প্রেডিকশন করতে পারেন।
- Method:
POST - URL:
http://127.0.0.1:5000/predict Body (JSON):
{ "features": [5.1, 3.5, 1.4, 0.2] }
এর পরে, Send বাটনে ক্লিক করলে আপনি API থেকে প্রাপ্ত ফলাফল দেখতে পাবেন।
সারাংশ:
- Flask ব্যবহার করে একটি REST API তৈরি করে মডেল সার্ভ করা খুবই সহজ।
joblibদিয়ে মডেল সেভ এবং লোড করা হয়।- API এ POST রিকোয়েস্ট এর মাধ্যমে মডেল ইনপুট নেয় এবং JSON আউটপুট আকারে প্রেডিকশন প্রদান করে।
- Postman বা Python requests ব্যবহার করে API-তে রিকোয়েস্ট পাঠানো যায়।
এভাবে, আপনি সহজেই আপনার মেশিন লার্নিং মডেলকে REST API এর মাধ্যমে ওয়েব সার্ভিস হিসেবে উপস্থাপন করতে পারেন, যাতে এটি অন্য অ্যাপ্লিকেশন বা ব্যবহারকারীদের জন্য অ্যাক্সেসযোগ্য হয়।