Flask ব্যবহার করে মডেল API তৈরি করার প্রক্রিয়া অত্যন্ত সহজ এবং দ্রুত। Flask একটি হালকা, মাইক্রো-ফ্রেমওয়ার্ক যা Python-এ তৈরি করা API গুলোকে দ্রুত ডেপ্লয় করার জন্য জনপ্রিয়। এখানে Flask ব্যবহার করে কিভাবে একটি মডেল API তৈরি করা যায়, তার ধাপগুলো উদাহরণসহ তুলে ধরা হলো:
ধাপ ১: পরিবেশ সেটআপ
প্রথমে, আপনার সিস্টেমে Flask এবং অন্যান্য প্রয়োজনীয় প্যাকেজ ইনস্টল করুন:
pip install flask scikit-learn numpy pandas
ধাপ ২: মডেল প্রশিক্ষণ (Model Training)
প্রথমে একটি সিম্পল মডেল প্রশিক্ষণ করা যাক (উদাহরণস্বরূপ, একটি Logistic Regression মডেল):
# model.py
import pickle
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# ডেটা লোড করা
data = load_iris()
X = data.data
y = data.target
# ডেটা স্প্লিট করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# মডেল প্রশিক্ষণ করা
model = LogisticRegression()
model.fit(X_train, y_train)
# মডেল সেভ করা
with open('model.pkl', 'wb') as file:
pickle.dump(model, file)
ধাপ ৩: Flask API তৈরি করা
এবার Flask ব্যবহার করে একটি API তৈরি করা যাক যা মডেলটিকে লোড করবে এবং নতুন ডেটার উপর প্রেডিকশন করবে:
# app.py
from flask import Flask, request, jsonify
import pickle
import numpy as np
# Flask অ্যাপ তৈরি করা
app = Flask(__name__)
# মডেল লোড করা
with open('model.pkl', 'rb') as file:
model = pickle.load(file)
# API এন্ডপয়েন্ট তৈরি করা
@app.route('/predict', methods=['POST'])
def predict():
# ইনপুট ডেটা JSON থেকে পাওয়া
data = request.get_json(force=True)
# ডেটা প্রিপ্রোসেস করা (একটি numpy array হিসেবে নেওয়া)
features = np.array(data['features']).reshape(1, -1)
# প্রেডিকশন করা
prediction = model.predict(features)
# ফলাফল JSON আকারে ফেরত দেয়া
return jsonify({'prediction': int(prediction[0])})
if __name__ == '__main__':
app.run(debug=True)
ধাপ ৪: API চালু করা
এবার অ্যাপটি চালু করতে নিচের কমান্ডটি রান করুন:
python app.py
ধাপ ৫: API টেস্ট করা
আপনার API এখন চালু রয়েছে। এটি টেস্ট করতে একটি HTTP ক্লায়েন্ট (যেমন Postman) বা curl ব্যবহার করতে পারেন:
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
উদাহরণ ব্যাখ্যা:
- Flask অ্যাপ:
Flaskক্লাস ব্যবহার করে একটি অ্যাপ তৈরি করা হয়েছে। - API এন্ডপয়েন্ট:
/predictনামে একটি POST এন্ডপয়েন্ট তৈরি করা হয়েছে যা ইনপুট ডেটা গ্রহণ করে এবং প্রেডিকশন ফেরত দেয়। - মডেল লোড: প্রশিক্ষণকৃত মডেলটি
pickleফাইল থেকে লোড করা হয়েছে। - ডেটা প্রোসেসিং: ইনপুট ডেটা JSON ফরম্যাটে পাঠানো হয় এবং সেটি numpy array হিসেবে প্রোসেস করা হয়।
- প্রেডিকশন রেসপন্স: প্রেডিকশনকে JSON রেসপন্স আকারে ফেরত দেয়া হয়।
বিকল্প ফ্রেমওয়ার্ক
Flask ছাড়াও, কিছু অন্যান্য ফ্রেমওয়ার্ক যা API তৈরিতে ব্যবহার করা যায়:
- FastAPI: Flask এর তুলনায় আরো দ্রুত এবং স্বয়ংক্রিয় ডকুমেন্টেশন সাপোর্ট করে।
- Django REST Framework: বড় স্কেল API এবং আরও জটিল প্রজেক্টের জন্য উপযুক্ত।
- Tornado: একাধিক অ্যাসিঙ্ক্রোনাস কনকশন পরিচালনা করার জন্য ভালো।
আপনি চাইলে FastAPI দিয়েও API তৈরি করতে পারেন, যেটি আরও দ্রুত এবং সহজ:
pip install fastapi uvicorn
# fastapi_app.py
from fastapi import FastAPI
import pickle
import numpy as np
app = FastAPI()
# মডেল লোড করা
with open('model.pkl', 'rb') as file:
model = pickle.load(file)
@app.post('/predict')
def predict(features: list):
features = np.array(features).reshape(1, -1)
prediction = model.predict(features)
return {'prediction': int(prediction[0])}
# অ্যাপ চালু করা
# `uvicorn fastapi_app:app --reload` দিয়ে চালাতে হবে
এই প্রক্রিয়ায় আপনি সহজেই Flask বা FastAPI ব্যবহার করে একটি মডেল API তৈরি করতে পারবেন।
Read more