মডেল ডেপ্লয়মেন্টের জন্য REST API তৈরি

Caffe2 তে মডেল Export এবং Deployment - ক্যাফে২ (Caffe2) - Machine Learning

322

Caffe2 মডেল ডেপ্লয়মেন্টের জন্য একটি REST API তৈরি করা একটি সাধারণ এবং কার্যকরী পদ্ধতি। এর মাধ্যমে আপনি আপনার ডিপ লার্নিং মডেলটি ক্লায়েন্ট অ্যাপ্লিকেশন বা অন্যান্য সার্ভিসে সার্ভ করতে পারেন। এই প্রক্রিয়ায়, সাধারণত একটি সার্ভার তৈরি করতে হয় যা মডেল ইনফারেন্স (পূর্ব-প্রশিক্ষিত মডেল দ্বারা পূর্বাভাস তৈরি) প্রদান করবে।

নিচে, Caffe2 মডেল ডেপ্লয়মেন্টের জন্য একটি REST API তৈরি করার প্রক্রিয়া দেওয়া হলো:

1. মডেল লোডিং এবং ইনফারেন্স প্রস্তুতি

প্রথমে আপনার Caffe2 মডেলটি লোড করতে হবে এবং এটি ইনফারেন্স (নতুন ইনপুট ডেটার উপর পূর্বাভাস) করতে প্রস্তুত করতে হবে। এখানে একটি উদাহরণ:

১.১. মডেল লোড করা:

Caffe2 মডেলকে লোড করার জন্য Python ব্যবহার করা যেতে পারে। এখানে workspace এবং core মডিউল ব্যবহার করা হয়েছে:

from caffe2.python import workspace, core
import numpy as np

# মডেল এবং ওয়েট লোড করুন
def load_model(model_path, weights_path):
    # মডেল এবং ওয়েট লোড করার জন্য Caffe2 কোড
    workspace.ResetWorkspace()
    init_model = core.Net("init")
    init_model.Proto().external_input.append("data")
    init_model.Proto().external_output.append("output")

    workspace.RunNetOnce(init_model)
    # মডেল লোড করা
    workspace.FetchBlob(weights_path)

১.২. ইনপুট প্রিপ্রসেসিং:

মডেলকে ইনফারেন্সের জন্য প্রস্তুত করতে ইনপুট ডেটার প্রিপ্রসেসিং করতে হবে (যেমন, নরমালাইজেশন, রিসাইজিং ইত্যাদি):

def preprocess_input(input_data):
    # ইনপুট ডেটার প্রিপ্রসেসিং (যেমন ইমেজ সাইজ পরিবর্তন, স্কেলিং ইত্যাদি)
    return np.array(input_data).astype(np.float32)

2. REST API তৈরি (Flask ব্যবহার করে)

Flask হল একটি জনপ্রিয় Python ওয়েব ফ্রেমওয়ার্ক, যা খুব দ্রুত এবং সহজে RESTful API তৈরি করতে সহায়ক।

২.১. Flask ইনস্টল করা:

প্রথমে Flask ইনস্টল করতে হবে:

pip install flask

২.২. REST API তৈরি:

Flask ব্যবহার করে একটি API তৈরি করা যা ইনপুট ডেটা গ্রহণ করবে এবং Caffe2 মডেল থেকে পূর্বাভাস প্রদান করবে।

from flask import Flask, request, jsonify
import numpy as np
from caffe2.python import workspace, core

app = Flask(__name__)

# মডেল লোড করা
def load_model(model_path, weights_path):
    workspace.ResetWorkspace()
    init_model = core.Net("init")
    init_model.Proto().external_input.append("data")
    init_model.Proto().external_output.append("output")

    workspace.RunNetOnce(init_model)
    workspace.FetchBlob(weights_path)

# ইনফারেন্স ফাংশন
def inference(input_data):
    # ইনপুট প্রিপ্রসেসিং
    input_data = preprocess_input(input_data)
    
    # ইনফারেন্স কোড
    workspace.FeedBlob("data", input_data)
    workspace.RunNetOnce(net)
    output = workspace.FetchBlob("output")
    return output

# API রুট তৈরি
@app.route("/predict", methods=["POST"])
def predict():
    try:
        # ক্লায়েন্ট থেকে ইনপুট ডেটা নেওয়া
        input_data = request.get_json()
        
        # ইনফারেন্স চালানো
        result = inference(input_data)
        
        # ফলাফল JSON আউটপুট হিসাবে ফিরিয়ে দেওয়া
        return jsonify({"prediction": result.tolist()})
    
    except Exception as e:
        return jsonify({"error": str(e)})

if __name__ == "__main__":
    # মডেল লোড করুন
    load_model("model.pb", "weights.pkl")
    
    # API সার্ভার চালানো
    app.run(debug=True, host="0.0.0.0", port=5000)

3. API ব্যাখ্যা:

  • Flask এ @app.route: এটি একটি HTTP রুট তৈরি করে যেখানে POST রিকোয়েস্ট আসবে।
  • POST রিকোয়েস্ট: API এ আসা ইনপুট ডেটা request.get_json() দ্বারা প্রাপ্ত হয়। এখানে ইনপুট ডেটা JSON ফরম্যাটে আসবে।
  • inference(): ইনপুট ডেটা প্রসেস করার পর Caffe2 মডেল থেকে ইনফারেন্স প্রক্রিয়া চালানো হয় এবং আউটপুট ফিরিয়ে দেওয়া হয়।
  • load_model(): এটি মডেল এবং ওয়েটস লোড করার জন্য ব্যবহৃত হয়।

4. API চালানো:

এই স্ক্রিপ্ট রান করার পর Flask API চালু হবে। আপনি এখন আপনার API কে ক্লায়েন্ট অ্যাপ্লিকেশন বা অন্যান্য সার্ভিস থেকে রিকোয়েস্ট পাঠিয়ে ব্যবহার করতে পারবেন।

python app.py

এটি আপনার API সার্ভারকে http://localhost:5000 এ চালু করবে।

5. API টেস্টিং:

API টেস্ট করতে আপনি Postman বা cURL ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি POST রিকোয়েস্ট পাঠাতে পারেন http://localhost:5000/predict URL এ ইনপুট ডেটা সহ।

curl -X POST -H "Content-Type: application/json" -d '{"data": [1,2,3,4]}' http://localhost:5000/predict

সারাংশ:

Caffe2 মডেল ডেপ্লয়মেন্টের জন্য একটি REST API তৈরি করতে Flask ব্যবহার করা যেতে পারে, যা ডিপ লার্নিং মডেলটি ক্লায়েন্ট অ্যাপ্লিকেশনের মাধ্যমে ব্যবহারযোগ্য করে তোলে। ইনপুট ডেটা প্রিপ্রসেসিং, মডেল লোড এবং ইনফারেন্সের প্রক্রিয়া Flask API এর মাধ্যমে পরিচালিত হয়। API ব্যবহারকারীদের JSON ফরম্যাটে ইনফারেন্স ফলাফল প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...