REST API (Representational State Transfer API) হলো একটি ওয়েব সার্ভিস আর্কিটেকচার যা HTTP প্রোটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ স্থাপন করে। মেশিন লার্নিং মডেল সার্ভ করার জন্য REST API খুবই জনপ্রিয় একটি পদ্ধতি, কারণ এটি ক্লায়েন্ট-সার্ভার আর্কিটেকচারের মাধ্যমে মডেলকে ওয়েবের মাধ্যমে অ্যাক্সেসযোগ্য করে তোলে। আপনি মডেলকে REST API এর মাধ্যমে সার্ভ করে বিভিন্ন ক্লায়েন্ট অ্যাপ্লিকেশন (যেমন ওয়েব বা মোবাইল অ্যাপ) থেকে মডেলকে অনলাইনে ব্যবহৃত করতে পারেন।
মডেল সার্ভ করার সাধারণ ধাপ
- মডেল তৈরি এবং প্রশিক্ষণ: প্রথমে মেশিন লার্নিং মডেল তৈরি করুন এবং প্রশিক্ষণ দিন।
- মডেল সংরক্ষণ: প্রশিক্ষণ শেষে মডেলটি ফাইল হিসেবে সংরক্ষণ করুন।
- API তৈরি: REST API তৈরি করতে একটি ওয়েব ফ্রেমওয়ার্ক ব্যবহার করুন (যেমন Flask বা FastAPI)।
- মডেল লোড করা: সার্ভারে API এর মাধ্যমে মডেলটি লোড করুন এবং ইনপুট ডেটার উপর মডেলটি প্রয়োগ করুন।
- API রেসপন্স পাঠানো: API ক্লায়েন্ট থেকে ডেটা গ্রহণ করে মডেলের আউটপুট রিটার্ন করুন।
Flask ব্যবহার করে REST API এর মাধ্যমে মডেল সার্ভ করা
Flask হল একটি মিনি ওয়েব ফ্রেমওয়ার্ক যা Python এ REST API তৈরি করতে ব্যবহৃত হয়। Flask দিয়ে আপনি সহজে একটি API তৈরি করতে পারেন, যেটি আপনার মেশিন লার্নিং মডেল সার্ভ করতে পারে।
প্রক্রিয়া:
প্রথমে মডেল তৈরি ও প্রশিক্ষণ দিন: প্রথমে একটি মেশিন লার্নিং মডেল তৈরি করে ট্রেন করুন, যেমন একটি সাধারণ স্কেলার বা ক্লাসিফায়ার।
উদাহরণ (Simple Logistic Regression Model):
from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression import joblib # Iris ডেটাসেট লোড করা iris = load_iris() X = iris.data y = iris.target # মডেল তৈরি এবং প্রশিক্ষণ model = LogisticRegression(max_iter=200) model.fit(X, y) # মডেল সংরক্ষণ করা joblib.dump(model, 'iris_model.pkl')Flask API তৈরি করা: এবার Flask ব্যবহার করে একটি API তৈরি করি যা ক্লায়েন্ট থেকে ইনপুট নেবে এবং মডেলটি ব্যবহার করে আউটপুট রিটার্ন করবে।
Flask API কোড:
from flask import Flask, request, jsonify import joblib import numpy as np app = Flask(__name__) # মডেল লোড করা model = joblib.load('iris_model.pkl') # পাথ /predict এ ইনপুট থেকে ভবিষ্যদ্বাণী করা @app.route('/predict', methods=['POST']) def predict(): # ক্লায়েন্ট থেকে ইনপুট ডেটা গ্রহণ data = request.get_json() # JSON ডেটা আসবে # ইনপুট ডেটাকে ন্যুম্পাই অ্যারে তে রূপান্তর করা input_data = np.array(data['input']).reshape(1, -1) # মডেল থেকে ভবিষ্যদ্বাণী করা prediction = model.predict(input_data) # আউটপুট রিটার্ন করা return jsonify({'prediction': prediction.tolist()}) if __name__ == '__main__': app.run(debug=True)ব্যাখ্যা:
@app.route('/predict', methods=['POST']):/predictএ একটি POST রিকোয়েস্ট অ্যাকসেপ্ট করবে।request.get_json(): ক্লায়েন্ট থেকে প্রাপ্ত JSON ডেটা পাবেন।model.predict(input_data): মডেলটি ইনপুট ডেটা নিয়ে আউটপুট প্রদান করবে।jsonify({'prediction': prediction.tolist()}): আউটপুটটি JSON আকারে ফেরত দেওয়া হবে।
- Flask API চালানো: আপনি Flask API চালাতে
python app.pyকমান্ড ব্যবহার করতে পারেন। এটি লোকাল সার্ভারে API চালু করবে (সাধারণতhttp://127.0.0.1:5000/তে)। API কল করা: এখন আপনি আপনার API তে একটি POST রিকোয়েস্ট পাঠাতে পারেন। উদাহরণস্বরূপ, আপনি
requestsলাইব্রেরি ব্যবহার করে এটি করতে পারেন।API কলের উদাহরণ (Python):
import requests import json # API URL url = 'http://127.0.0.1:5000/predict' # ইনপুট ডেটা (উদাহরণস্বরূপ একটি Iris ফুলের পরিমাপ) input_data = { 'input': [5.1, 3.5, 1.4, 0.2] # মডেলের জন্য উপযুক্ত ইনপুট } # POST রিকোয়েস্ট পাঠানো response = requests.post(url, json=input_data) # রেসপন্স দেখা print(response.json()) # {'prediction': [0]}
FastAPI ব্যবহার করে REST API
FastAPI একটি দ্রুত এবং আধুনিক ওয়েব ফ্রেমওয়ার্ক যা Python দিয়ে API তৈরি করতে ব্যবহৃত হয়। এটি REST API তৈরি করতে খুবই উপযোগী, এবং স্বয়ংক্রিয় ডকুমেন্টেশন তৈরি করার জন্য পরিচিত।
FastAPI API তৈরি করা:
FastAPI তে মডেল সার্ভ করার জন্য Flask এর মতোই একটি API তৈরি করা যায়, কিন্তু FastAPI তে কোড আরও ক্লিন এবং কার্যকরী হয়।
FastAPI API কোড:
from fastapi import FastAPI
from pydantic import BaseModel
import joblib
import numpy as np
# FastAPI অ্যাপ তৈরি করা
app = FastAPI()
# মডেল লোড করা
model = joblib.load('iris_model.pkl')
# ইনপুট স্কিমা তৈরি
class Item(BaseModel):
input: list
# ভবিষ্যদ্বাণী রুট
@app.post("/predict/")
def predict(item: Item):
input_data = np.array(item.input).reshape(1, -1)
prediction = model.predict(input_data)
return {"prediction": prediction.tolist()}
# FastAPI চালানোর জন্য
# uvicorn app:app --reload
FastAPI চালানোর জন্য:
uvicorn app:app --reload
এই কোডটি FastAPI দিয়ে তৈরি করা একটি API সার্ভ করবে এবং আপনি এটি অন্য অ্যাপ্লিকেশন থেকে কল করতে পারবেন।
সারাংশ
- REST API এর মাধ্যমে মডেল সার্ভ করা আপনাকে মেশিন লার্নিং মডেলকে ওয়েব সার্ভিস হিসেবে এক্সেসযোগ্য করে তোলে।
- Flask এবং FastAPI হল দুটি জনপ্রিয় ফ্রেমওয়ার্ক, যা Python দিয়ে সহজে মডেল সার্ভ করতে সাহায্য করে।
- Flask এবং FastAPI-তে মডেল সার্ভ করার পদ্ধতি প্রায় একই, তবে FastAPI তে আরও দ্রুত এবং কার্যকরী কোড লেখা যায় এবং এটি স্বয়ংক্রিয় ডকুমেন্টেশন তৈরি করতে সক্ষম।
এভাবে, আপনি REST API এর মাধ্যমে আপনার মেশিন লার্নিং মডেল ওয়েব সার্ভিস হিসেবে সার্ভ করতে পারবেন, যা বিভিন্ন ক্লায়েন্ট অ্যাপ্লিকেশন থেকে অনলাইনে ব্যবহার করা যাবে।
Read more