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

Model Deployment এবং API Integration - থিয়ানো (Theano) - Machine Learning

306

REST API (Representational State Transfer Application Programming Interface) হলো একটি সাধারণ পদ্ধতি যা আপনাকে সিস্টেমের মধ্যে ডেটা আদান-প্রদান করতে সক্ষম করে। ডিপ লার্নিং মডেল বা যেকোনো পাইটন স্ক্রিপ্টকে REST API এর মাধ্যমে সার্ভ করা সাধারণত Flask বা FastAPI মতো Python ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে করা হয়।

এখানে, একটি ডিপ লার্নিং মডেলকে Flask ব্যবহার করে REST API এর মাধ্যমে সার্ভ করার একটি সাধারণ উদাহরণ দেয়া হলো।

Flask ব্যবহার করে REST API দিয়ে মডেল সার্ভ করা:

ধাপ ১: Flask ইনস্টল করা

প্রথমে Flask ইনস্টল করতে হবে। আপনি পিপ ব্যবহার করে এটি ইনস্টল করতে পারেন:

pip install Flask

এছাড়াও যদি আপনার মডেলটি TensorFlow, Keras, PyTorch বা অন্য কোন লাইব্রেরিতে তৈরি করা থাকে, সেগুলি ইনস্টল করাও প্রয়োজনীয়।

pip install tensorflow  # অথবা pytorch ইনস্টল করতে পারেন

ধাপ ২: মডেল ট্রেনিং এবং সংরক্ষণ (Save the Model)

ধরা যাক, আপনার কাছে একটি ট্রেন্ড মডেল রয়েছে (এটি TensorFlow বা Keras হতে পারে)। আপনি মডেলটি সংরক্ষণ করবেন যাতে REST API-তে ব্যবহার করা যায়।

# মডেল তৈরি এবং ট্রেনিং
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np

# একটি সাধারণ মডেল তৈরি করা
model = Sequential()
model.add(Dense(10, input_dim=8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# মডেল কম্পাইল করা
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# কিছু ডেমো ডেটা দিয়ে ট্রেনিং
X_train = np.random.rand(100, 8)
y_train = np.random.randint(2, size=100)
model.fit(X_train, y_train, epochs=10, batch_size=10)

# মডেল সংরক্ষণ করা
model.save('model.h5')

এখন আপনার মডেলটি model.h5 ফাইল হিসেবে সংরক্ষিত।


ধাপ ৩: Flask দিয়ে REST API তৈরি করা

এখন Flask ব্যবহার করে মডেলটি API এর মাধ্যমে সার্ভ করা হবে।

from flask import Flask, request, jsonify
import tensorflow as tf
from tensorflow.keras.models import load_model
import numpy as np

# Flask অ্যাপ্লিকেশন তৈরি
app = Flask(__name__)

# মডেল লোড করা
model = load_model('model.h5')

# API এন্ডপয়েন্ট তৈরি করা
@app.route('/predict', methods=['POST'])
def predict():
    try:
        # JSON ফরম্যাটে ডেটা আনা
        data = request.get_json(force=True)
        
        # ডেটা থেকে ইনপুট তৈরি করা (এখানে মনে করা হচ্ছে ইনপুট একটি লিস্ট)
        input_data = np.array(data['input']).reshape(1, -1)
        
        # মডেল থেকে প্রেডিকশন করা
        prediction = model.predict(input_data)
        
        # প্রেডিকশন রিটার্ন করা
        output = prediction[0][0]
        
        return jsonify({'prediction': output})
    
    except Exception as e:
        return jsonify({'error': str(e)})

# অ্যাপ্লিকেশন চালানো
if __name__ == '__main__':
    app.run(debug=True)

ব্যাখ্যা:

  1. Flask অ্যাপ্লিকেশন তৈরি: Flask() ফাংশন দিয়ে একটি Flask অ্যাপ্লিকেশন তৈরি করা হয়েছে।
  2. মডেল লোড করা: load_model('model.h5') ব্যবহার করে আমাদের model.h5 ফাইলটি লোড করা হয়েছে।
  3. /predict এন্ডপয়েন্ট তৈরি করা: /predict রুট তৈরি করা হয়েছে যা POST রিকোয়েস্ট গ্রহণ করে। এর মধ্যে JSON ডেটা গ্রহণ করা হয় (যেমন ইনপুট ফিচারগুলি), এবং মডেল থেকে প্রেডিকশন করে তা রিটার্ন করা হয়।
  4. জসন ফরম্যাটে প্রেডিকশন: API রেসপন্স হিসেবে প্রেডিকশন JSON ফরম্যাটে রিটার্ন করা হয়।

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

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

python app.py

এটি চালানোর পর আপনার API http://127.0.0.1:5000/predict এ চলবে।

এখন আপনি POST রিকোয়েস্ট পাঠিয়ে মডেল থেকে প্রেডিকশন পেতে পারেন। উদাহরণস্বরূপ, আপনি Postman বা cURL ব্যবহার করতে পারেন।

cURL উদাহরণ:

curl -X POST -H "Content-Type: application/json" -d '{"input": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}' http://127.0.0.1:5000/predict

Postman উদাহরণ:

  1. Method: POST
  2. URL: http://127.0.0.1:5000/predict
  3. Body: JSON ফরম্যাটে:

    {
        "input": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]
    }
    

API সফলভাবে কাজ করলে আপনি প্রেডিকশন রিটার্ন পাবেন।


FastAPI দিয়ে মডেল সার্ভ করা:

FastAPI একটি দ্রুত এবং কার্যকর Python ওয়েব ফ্রেমওয়ার্ক যা REST API তৈরি করতে ব্যবহৃত হয় এবং এটি Flask এর চেয়ে দ্রুত। FastAPI ব্যবহার করলে দ্রুত API তৈরি করা সম্ভব, বিশেষত ডিপ লার্নিং মডেল সার্ভিংয়ের জন্য।

FastAPI উদাহরণ:

from fastapi import FastAPI
from pydantic import BaseModel
import tensorflow as tf
import numpy as np

# FastAPI অ্যাপ্লিকেশন তৈরি
app = FastAPI()

# মডেল লোড করা
model = tf.keras.models.load_model('model.h5')

# ইনপুট ডেটা স্ট্রাকচার
class InputData(BaseModel):
    input: list

@app.post("/predict")
async def predict(data: InputData):
    input_data = np.array(data.input).reshape(1, -1)
    prediction = model.predict(input_data)
    return {"prediction": prediction[0][0]}

FastAPI অ্যাপ চালু করতে:

uvicorn app:app --reload

এখন আপনি FastAPI মাধ্যমে মডেল সার্ভ করতে পারবেন।


সারাংশ:

  • REST API এর মাধ্যমে মডেল সার্ভ করা খুবই সহজ এবং জনপ্রিয় পদ্ধতি, যা আপনাকে Flask বা FastAPI ব্যবহার করে মডেলকে অন্য অ্যাপ্লিকেশন বা ক্লায়েন্টের কাছে অ্যাক্সেসযোগ্য করে তোলে।
  • API তে প্রেডিকশন করার জন্য POST রিকোয়েস্ট পাঠানো হয় এবং JSON ফরম্যাটে ডেটা পাঠানো হয়।
  • Flask এবং FastAPI উভয়ই শক্তিশালী ফ্রেমওয়ার্ক যা সহজে এবং দ্রুত Machine Learning মডেল সার্ভ করার জন্য ব্যবহার করা যায়।
Content added By
Promotion

Are you sure to start over?

Loading...