REST API এর মাধ্যমে মডেল সার্ভ করা

Model Deployment এবং API Integration - পাইথন ডিপ লার্নিং (Python Deep Learning) - Machine Learning

381

REST API (Representational State Transfer Application Programming Interface) হল একটি ওয়েব সার্ভিস প্রটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে HTTP ভিত্তিক যোগাযোগের জন্য ব্যবহৃত হয়। মডেল সার্ভিংয়ের জন্য, আমরা সাধারণত একটি machine learning model বা deep learning model একটি API এর মাধ্যমে সার্ভ করতে চাই, যাতে ক্লায়েন্ট বা ব্যবহারকারী HTTP রিকোয়েস্টের মাধ্যমে মডেলকে ইন্টারঅ্যাক্ট করতে পারে এবং পূর্বাভাস (prediction) পেতে পারে।

এটি সাধারণত model deployment এর অংশ, যেখানে মডেলটি বিভিন্ন প্ল্যাটফর্মে, যেমন ওয়েব সার্ভিস, মোবাইল অ্যাপ, বা অন্য কোনো ডিস্ট্রিবিউটেড সিস্টেমে সার্ভ করা হয়। এখানে, আমরা দেখবো কীভাবে Python ব্যবহার করে একটি machine learning বা deep learning model কে REST API এর মাধ্যমে সার্ভ করা যায়।


REST API দিয়ে মডেল সার্ভ করার জন্য পদ্ধতি:

আমরা এখানে Python-এর জনপ্রিয় ওয়েব ফ্রেমওয়ার্ক Flask ব্যবহার করবো, যা খুবই হালকা ও সহজ। এছাড়াও, আমরা মডেল হিসেবে একটি Scikit-learn বা Keras মডেল ব্যবহার করতে পারি। এখানে Flask এর মাধ্যমে একটি predict API তৈরি করার ধাপগুলো দেখানো হবে।


ধাপ ১: মডেল প্রশিক্ষণ

এটি সাধারণভাবে প্রশিক্ষিত মডেল হতে পারে, যেমন একটি Scikit-learn মডেল বা একটি Keras মডেল। এখানে একটি উদাহরণ দেওয়া হলো যেখানে Scikit-learn ব্যবহার করে একটি সিম্পল মডেল তৈরি করা হয়েছে:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import pickle

# Iris dataset লোড করা
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)

# মডেল তৈরি করা
model = RandomForestClassifier()
model.fit(X_train, y_train)

# মডেল সেভ করা
with open('iris_model.pkl', 'wb') as f:
    pickle.dump(model, f)

এটি একটি Random Forest Classifier মডেল যা Iris dataset এর উপর প্রশিক্ষিত। এরপর মডেলটি pickle এর মাধ্যমে সেভ করা হয়েছে।


ধাপ ২: Flask ব্যবহার করে API তৈরি করা

এখন আমরা Flask ব্যবহার করে একটি REST API তৈরি করবো যা আমাদের মডেলকে সার্ভ করবে। Flask-কে REST API তৈরি করার জন্য ব্যবহার করা খুবই সহজ, এবং এটি মডেল সার্ভ করার জন্য একটি আদর্শ টুল।

  1. প্রথমে Flask ইনস্টল করুন:

    pip install Flask
    
  2. এরপর, Flask অ্যাপ তৈরি করুন, যা predict রুট তৈরি করবে এবং সেই রুটে HTTP POST রিকোয়েস্টের মাধ্যমে ডেটা গ্রহণ করে, মডেলের মাধ্যমে পূর্বাভাস প্রদান করবে।
from flask import Flask, request, jsonify
import pickle
import numpy as np

app = Flask(__name__)

# মডেল লোড করা
with open('iris_model.pkl', 'rb') as f:
    model = pickle.load(f)

# Predict রুট তৈরি করা
@app.route('/predict', methods=['POST'])
def predict():
    # রিকোয়েস্ট থেকে ইনপুট ডেটা গ্রহণ
    data = request.get_json(force=True)

    # ডেটা থেকে ফিচার এক্সট্র্যাক্ট করা
    features = np.array(data['features']).reshape(1, -1)

    # মডেল থেকে পূর্বাভাস পাওয়া
    prediction = model.predict(features)

    # পূর্বাভাস রিটার্ন করা
    return jsonify({'prediction': int(prediction[0])})

if __name__ == '__main__':
    app.run(debug=True)

Flask API এর বিস্তারিত:

  1. মডেল লোড: আমরা pickle ব্যবহার করে আমাদের প্রশিক্ষিত মডেলটি লোড করছি যাতে Flask অ্যাপটির মধ্যে এটি ব্যবহার করা যায়।
  2. POST রিকোয়েস্ট: predict রুটটি HTTP POST রিকোয়েস্ট গ্রহণ করে। এই রিকোয়েস্টের মধ্যে JSON ডেটা পাঠানো হয়, যাতে ফিচারগুলো থাকে।
  3. মডেল থেকে পূর্বাভাস: মডেলটি JSON ডেটা থেকে ফিচার নিয়ে পূর্বাভাস করে এবং সেই ফলাফল রিটার্ন করে।
  4. Response: মডেলটি যে শ্রেণী (class) বা পূর্বাভাস দিয়েছে তা JSON আউটপুট হিসেবে রিটার্ন করা হয়।

ধাপ ৩: API টেস্ট করা

এখন আপনি Flask অ্যাপটি চালু করতে পারেন:

python app.py

এটি স্থানীয়ভাবে http://127.0.0.1:5000/ তে চলবে।

এখন, API এ রিকোয়েস্ট পাঠানোর জন্য আপনি Postman বা Curl ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আমরা Postman এ একটি POST রিকোয়েস্ট পাঠাতে পারি।

POST Request Example:

  • URL: http://127.0.0.1:5000/predict
  • Body (JSON):

    {
        "features": [5.1, 3.5, 1.4, 0.2]
    }
    

এখানে, features হল Iris dataset এর স্যাম্পল ইনপুট, এবং মডেলটি এটি নিয়ে পূর্বাভাস দেবে যে স্যাম্পলটি কোন শ্রেণীভুক্ত (species)।

Response Example:

{
    "prediction": 0
}

এই আউটপুটে prediction: 0 মানে হলো মডেলটি Iris Setosa শ্রেণীভুক্ত করেছে (যেহেতু Iris dataset এ 0 হল Setosa এর class label)।


ধাপ ৪: API প্রোডাকশনে ডিপ্লয়মেন্ট

এটি এখন পর্যন্ত local development পরিবেশে কাজ করছে। কিন্তু প্রোডাকশনে API সার্ভ করার জন্য আপনি এটি Heroku, AWS, Google Cloud, বা Azure এর মত ক্লাউড প্ল্যাটফর্মে ডিপ্লয় করতে পারেন। Flask অ্যাপ্লিকেশনটি Docker কনটেইনারের মাধ্যমে ডিপ্লয় করাও একটি জনপ্রিয় পদ্ধতি।


সারাংশ:

  • REST API ব্যবহার করে মডেল সার্ভিং আপনাকে মডেলটি ব্যবহারকারী বা অন্যান্য সিস্টেমের জন্য একটি HTTP সার্ভিস হিসেবে উপস্থাপন করতে সাহায্য করে।
  • Flask হল একটি হালকা ওজনের ওয়েব ফ্রেমওয়ার্ক যা খুব সহজেই Machine Learning models এবং Deep Learning models সার্ভ করতে সক্ষম।
  • মডেলটি সার্ভ করার জন্য, আমরা POST রিকোয়েস্ট গ্রহণ করি এবং মডেল থেকে পূর্বাভাস প্রদান করি, যা ব্যবহারকারী বা ক্লায়েন্ট সিস্টেমের মাধ্যমে JSON আউটপুট হিসেবে রিটার্ন করা হয়।

এভাবে আপনি আপনার মডেলকে একটি RESTful API সার্ভার হিসেবে ব্যবহার করতে পারেন এবং এটি অন্য অ্যাপ্লিকেশন বা সিস্টেমের সাথে ইন্টিগ্রেট করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...