Model Deployment এবং Serialization

চেইনার (Chainer) - Latest Technologies

377

Model Deployment এবং Serialization মডেলকে প্রোডাকশনে ব্যবহারের জন্য প্রস্তুত করার প্রক্রিয়া। মডেলকে এভাবে ডেপ্লয় করলে ব্যবহারকারীরা বা অন্য অ্যাপ্লিকেশনগুলো মডেলকে API বা অন্য ইন্টারফেসের মাধ্যমে ব্যবহার করতে পারে। Serialization-এর মাধ্যমে মডেলকে ফাইল আকারে সংরক্ষণ করা হয়, যা পরে লোড করে ব্যবহার করা যায়।

Model Serialization

Serialization-এর মাধ্যমে মডেল সংরক্ষণ করা হয়, যা প্রোডাকশনে ব্যবহারের আগে খুবই গুরুত্বপূর্ণ। মডেল Serializing করার বিভিন্ন পদ্ধতি আছে, যেমন Keras-এর save এবং pickle মডিউল।

Keras মডেল Serialization

Keras মডেলকে .h5 ফরম্যাটে সংরক্ষণ করা যায়।

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

এই মডেলটি পরবর্তীতে লোড করার জন্য:

from tensorflow.keras.models import load_model

# সংরক্ষিত মডেল লোড করা
loaded_model = load_model("my_model.h5")

Pickle মডিউল ব্যবহার করে Serialization

Pickle মডিউল দিয়ে sklearn বা অন্যান্য মডেলগুলো সংরক্ষণ করা যায়।

import pickle

# মডেল সংরক্ষণ করা
with open("my_model.pkl", "wb") as file:
    pickle.dump(model, file)

# মডেল লোড করা
with open("my_model.pkl", "rb") as file:
    loaded_model = pickle.load(file)

Model Deployment

Model Deployment-এ মডেলকে এমন একটি পরিবেশে স্থাপন করা হয় যেখানে এটি সরাসরি ব্যবহার করা যায়। সাধারণত, API তৈরি করে মডেলকে ডেপ্লয় করা হয়, যা বিভিন্ন ডিভাইস বা অ্যাপ্লিকেশন থেকে ব্যবহার করা যায়। জনপ্রিয় কয়েকটি পদ্ধতি হলো Flask, Django, FastAPI, এবং ক্লাউড সার্ভিস।

১. Flask ব্যবহার করে মডেল Deployment

Flask হলো একটি হালকা ওয়েব ফ্রেমওয়ার্ক, যা API তৈরি করে মডেলকে সার্ভারে ডেপ্লয় করতে সাহায্য করে।

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

app = Flask(__name__)

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

# পূর্বাভাসের জন্য API তৈরি করা
@app.route("/predict", methods=["POST"])
def predict():
    data = request.get_json(force=True)
    prediction = model.predict(np.array(data["input"]).reshape(1, -1))
    output = prediction[0].tolist()
    return jsonify({"prediction": output})

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

এই Flask অ্যাপটি একটি API তৈরি করবে যা POST রিকোয়েস্ট গ্রহণ করবে। মডেল পূর্বাভাস করবে এবং ফলাফল JSON আকারে রিটার্ন করবে।

২. FastAPI ব্যবহার করে Deployment

FastAPI হলো আরেকটি দ্রুত ও আধুনিক ফ্রেমওয়ার্ক, যা REST API তৈরি করতে সহায়ক।

from fastapi import FastAPI
from pydantic import BaseModel
from tensorflow.keras.models import load_model
import numpy as np

app = FastAPI()
model = load_model("my_model.h5")

class InputData(BaseModel):
    input: list

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

FastAPI Flask-এর মতো কাজ করে, তবে এটি আরও দ্রুত এবং কিছু অতিরিক্ত ফিচার দেয় যেমন স্বয়ংক্রিয় ডকুমেন্টেশন।

৩. ক্লাউডে মডেল Deployment

Google Cloud, AWS, এবং Azure-এর মতো ক্লাউড প্ল্যাটফর্ম ব্যবহার করে মডেল ডেপ্লয় করা যায়। ক্লাউড সার্ভিস ব্যবহার করলে মডেল সহজেই স্কেল করা যায় এবং এর ম্যানেজমেন্ট সহজ হয়।

Google Cloud AI Platform:

  1. মডেলকে .sav বা .h5 ফরম্যাটে Google Cloud Storage-এ আপলোড করতে হবে।
  2. AI Platform-এ মডেল ট্রেনিং এবং ডেপ্লয় করা যাবে।
  3. এরপর একটি API তৈরি করা যায় যা মডেলকে ব্যবহার করে পূর্বাভাস দিতে পারে।

সংক্ষেপে:

  1. Serialization: মডেলকে .h5, .pkl, বা অন্য ফরম্যাটে সংরক্ষণ করা।
  2. Flask বা FastAPI: API তৈরি করে মডেলকে প্রোডাকশনে ডেপ্লয় করা।
  3. ক্লাউড সার্ভিস: Google Cloud, AWS, বা Azure-এ মডেল ডেপ্লয় করে স্কেল করা।

এই পদ্ধতিগুলো ব্যবহার করে সহজেই মডেল ডেপ্লয় করা যায় এবং তা প্রোডাকশনে ব্যবহার করা যায়।

Content added By

Model Deployment হলো মেশিন লার্নিং বা ডিপ লার্নিং মডেল বাস্তব পরিবেশে ব্যবহার বা পরিচালনার জন্য প্রস্তুত করা এবং সেটিকে একটি নির্দিষ্ট প্ল্যাটফর্মে উপলব্ধ করা। Model Deployment এর মূল লক্ষ্য হলো একটি মডেলকে ব্যবহারকারীদের জন্য সহজলভ্য করা, যাতে এটি বাস্তব জীবনের ডেটা থেকে পূর্বানুমান (prediction) করতে পারে এবং নির্দিষ্ট সমস্যা সমাধানে সহায়ক হয়।

Model Deployment এর প্রয়োজনীয়তা

Model Deployment এর প্রয়োজনীয়তা বিভিন্ন দিক থেকে গুরুত্বপূর্ণ। এখানে এর প্রধান কারণগুলো তুলে ধরা হলো:

Practical Application:

  • মডেল তৈরির মূল উদ্দেশ্য হলো নির্দিষ্ট একটি সমস্যা সমাধান বা নির্দিষ্ট সিদ্ধান্ত নিতে সহায়তা করা। Model Deployment এর মাধ্যমে সেই মডেলকে বাস্তব জীবনের সমস্যার জন্য ব্যবহার করা যায়।
  • উদাহরণস্বরূপ, customer sentiment analysis, inventory forecasting, বা anomaly detection এর ক্ষেত্রে মডেলটি বাস্তব ডেটার উপর ব্যবহার করা যায়।

Automation এবং Scalability:

  • Deployment এর মাধ্যমে মডেলকে স্বয়ংক্রিয়ভাবে কাজ করতে পারে এমন একটি পরিবেশে রাখা হয়। এই প্রক্রিয়া business operations গুলোতে দ্রুতগতি আনে এবং অটোমেশন এর সুবিধা দেয়।
  • বড় পরিসরের ডেটা বা বহুসংখ্যক ব্যবহারকারীর জন্য মডেল সহজেই scale করা যায়, যা traditional methods এ কঠিন হতে পারে।

Real-Time Decision Making:

  • অনেক ক্ষেত্রে রিয়েল-টাইম প্রেডিকশন দরকার হয়, যেমন স্বয়ংচালিত গাড়ি, fraud detection, এবং recommendation systems।
  • Deployment এর মাধ্যমে মডেলটি real-time ডেটা থেকে পূর্বানুমান দিতে পারে এবং সিদ্ধান্ত গ্রহণের গতি বাড়ায়।

Continuous Learning এবং Model Updating:

  • Deployment এর মাধ্যমে মডেলের উপর নজরদারি রাখা যায় এবং প্রয়োজনে নতুন ডেটা ব্যবহার করে মডেল আপডেট করা যায়।
  • নিয়মিত নতুন ডেটা মডেলে অন্তর্ভুক্ত করে মডেলকে নতুন তথ্যের সাথে sync করা যায়, যা দীর্ঘ সময় ধরে মডেলটি কার্যকর রাখতে সহায়ক।

Feedback Collection এবং Model Improvement:

  • Deployment এর পরে মডেল ব্যবহার থেকে তথ্য এবং ফলাফলের feedback সংগ্রহ করা যায়, যা মডেল উন্নয়নে সহায়ক।
  • Field থেকে প্রাপ্ত feedback এর মাধ্যমে মডেলের accuracy, precision ইত্যাদি মেট্রিক্স উন্নয়নের সুযোগ পাওয়া যায়।

Business Integration এবং User Accessibility:

  • Deployment এর মাধ্যমে মডেলকে সহজেই ব্যবসায়িক কাজের সাথে সংযুক্ত করা যায়।
  • API, ওয়েব অ্যাপ্লিকেশন, অথবা মোবাইল অ্যাপ্লিকেশন এর মাধ্যমে ব্যবহারকারীরা সহজেই মডেলের সাথে ইন্টারঅ্যাক্ট করতে পারে, যা business value বাড়ায়।

Model Maintenance এবং Monitoring:

  • Deployment এর মাধ্যমে মডেলের উপর নজরদারি এবং রক্ষণাবেক্ষণ সহজ হয়।
  • মডেলের performance monitoring করে drift বা degradation এর ক্ষেত্রে দ্রুত ব্যবস্থা নেওয়া যায় এবং মডেলকে optimal রাখা যায়।

Cost-Effectiveness:

  • Model Deployment একটি well-defined process হিসেবে মডেল ব্যবহারের ক্ষেত্রে খরচ কমাতে সাহায্য করে, কারণ একবার deploy করলে অনেক ব্যবহারকারী একসাথে মডেলটি ব্যবহার করতে পারে।
  • Cloud-based deployment এর মাধ্যমে hardware এবং maintenance cost কমানো যায় এবং বিভিন্ন গ্রাহকের জন্য সাশ্রয়ী সেবা প্রদান করা যায়।

Model Deployment এর উদাহরণসমূহ

API Deployment:

  • মডেলকে API আকারে ব্যবহারকারীদের জন্য উন্মুক্ত করা যায়, যেমন Flask, FastAPI বা Django ব্যবহার করে। API এর মাধ্যমে ব্যবহারকারীরা মডেলে ডেটা পাঠিয়ে প্রেডিকশন নিতে পারে।

Web Application Deployment:

  • Model টি একটি ওয়েব অ্যাপ্লিকেশন এর সাথে সংযুক্ত করা হয়, যেখানে ব্যবহারকারীরা সরাসরি মডেলের ফলাফল দেখতে পারে। উদাহরণস্বরূপ, sentiment analysis বা image classification এর জন্য একটি UI সহ ওয়েব অ্যাপ।

Embedded Systems Deployment:

  • IOT ডিভাইস বা embedded systems এ মডেল বাস্তবায়ন করে বিশেষ কাজ সম্পাদন করা যায়, যেমন self-driving car বা predictive maintenance।

Cloud Deployment:

  • Cloud platforms যেমন AWS, Google Cloud, বা Azure তে মডেল deploy করা হয় যা অটোমেটেড স্কেলিং এবং ম্যানেজমেন্ট সুবিধা দেয়।
  • Large-scale real-time application এর ক্ষেত্রে এটি অত্যন্ত কার্যকর এবং সহজে মডেল ব্যবহারের সুযোগ তৈরি করে।

Mobile Deployment:

  • TensorFlow Lite বা PyTorch Mobile এর সাহায্যে মডেল মোবাইল অ্যাপ্লিকেশন এ deploy করা হয়, যা অফলাইন এবং রিয়েল-টাইম ব্যবহারের সুযোগ দেয়।

উপসংহার

Model Deployment মডেলটিকে একটি বাস্তব প্রয়োগযোগ্য সমাধান হিসেবে ব্যবহারকারীদের কাছে পৌঁছে দিতে সহায়ক। এটি ব্যবহারকারীদের জন্য মডেলকে সহজলভ্য করে, যার ফলে business value বৃদ্ধি পায় এবং বাস্তব জীবনের সমস্যাগুলো দ্রুত ও কার্যকরভাবে সমাধান করা সম্ভব হয়। Model Deployment একটি প্রয়োজনীয় ধাপ, যা মডেলের কার্যকারিতা এবং স্থায়ীত্ব নিশ্চিত করে।

Content added By

Chainer একটি ফ্রেমওয়ার্ক যা পায়থনে মডেল তৈরির জন্য ব্যবহৃত হয়, এবং এটি ডায়নামিক নিউরাল নেটওয়ার্ক তৈরিতে সহায়ক। Chainer-এ মডেলকে সেভ এবং লোড করা বেশ সহজ। এখানে .npz ফরম্যাটে মডেল সংরক্ষণ এবং পুনরায় লোড করার উদাহরণ দেওয়া হলো।

Chainer মডেল সেভ করা

Chainer-এ মডেল সংরক্ষণ করার জন্য chainer.serializers.save_npz ফাংশন ব্যবহার করা হয়। এটি মডেলটি .npz ফরম্যাটে সংরক্ষণ করে।

import chainer
import chainer.links as L
import chainer.functions as F

# একটি সিম্পল মডেল তৈরি করা
class SimpleMLP(chainer.Chain):
    def __init__(self):
        super(SimpleMLP, self).__init__()
        with self.init_scope():
            self.l1 = L.Linear(None, 100)  # ইনপুট থেকে ১০০ হিডেন ইউনিট
            self.l2 = L.Linear(100, 10)    # ১০০ হিডেন ইউনিট থেকে ১০ আউটপুট ইউনিট

    def __call__(self, x):
        h1 = F.relu(self.l1(x))
        return self.l2(h1)

# মডেল ইনিশিয়ালাইজ করা
model = SimpleMLP()

# মডেল সেভ করা
chainer.serializers.save_npz("simple_mlp_model.npz", model)

এই কোডটি একটি SimpleMLP মডেল তৈরি করে এবং simple_mlp_model.npz নামে সংরক্ষণ করে।

Chainer মডেল লোড করা

Chainer-এ সংরক্ষিত .npz ফাইলটি লোড করার জন্য chainer.serializers.load_npz ফাংশন ব্যবহার করা হয়। এটি মডেল পুনরায় লোড করে এবং Training বা Prediction-এর জন্য প্রস্তুত করে।

# নতুন মডেল ইনিশিয়ালাইজ করা
loaded_model = SimpleMLP()

# মডেল লোড করা
chainer.serializers.load_npz("simple_mlp_model.npz", loaded_model)

এইভাবে, loaded_model আবার পূর্ববর্তী সংরক্ষিত ওজন ও প্যারামিটার নিয়ে লোড হয়ে যাবে, এবং এটি Prediction বা পুনরায় Training-এর জন্য প্রস্তুত।

সংক্ষেপে

  1. মডেল সেভ করা: chainer.serializers.save_npz("filename.npz", model)
  2. মডেল লোড করা: chainer.serializers.load_npz("filename.npz", model)

এই পদ্ধতির মাধ্যমে Chainer মডেল সংরক্ষণ এবং পুনরায় লোড করে সহজে পুনঃব্যবহার করা যায়।

Content added By

Model Serialization এবং Inference হলো মেশিন লার্নিং মডেল ব্যবহারের ক্ষেত্রে গুরুত্বপূর্ণ দুটি ধাপ।

  • Model Serialization হলো মডেলটিকে একটি ফাইল বা কোনো ফরম্যাটে সংরক্ষণ করার প্রক্রিয়া, যাতে এটি পুনরায় লোড এবং ব্যবহার করা যায়।
  • Inference হলো ট্রেনিং শেষে মডেলটি বাস্তব ডেটার ওপর প্রেডিকশন করার প্রক্রিয়া।

Model Serialization

Model Serialization হলো মডেলটি ট্রেনিং শেষে এর স্টেট এবং প্যারামিটারগুলো সংরক্ষণ করার কৌশল। এটি প্রয়োজনীয়, কারণ মডেলটি একবার ট্রেনিং করার পর পুনরায় ট্রেনিং না করেই মডেলটিকে সংরক্ষণ করে যেকোনো সময় এবং যেকোনো পরিবেশে ব্যবহার করা যায়।

Model Serialization এর প্রয়োজনীয়তা

  1. Reusable Model: Serialization এর মাধ্যমে মডেলকে সহজেই পুনরায় ব্যবহার করা যায়, ট্রেনিং ছাড়াই।
  2. Deployment Convenience: Deployment এর জন্য মডেলটিকে serializable ফরম্যাটে সংরক্ষণ করা যায়, যা বিভিন্ন পরিবেশে ব্যবহারযোগ্য।
  3. Version Control: ভিন্ন ভিন্ন মডেল ভার্সন সংরক্ষণ এবং ট্র্যাক করা সহজ হয়, যার ফলে performance improvement করতে সুবিধা হয়।

PyTorch এবং TensorFlow এ Model Serialization

  • PyTorch: PyTorch এ মডেল সংরক্ষণ করতে torch.save() এবং লোড করতে torch.load() ফাংশন ব্যবহার করা হয়।
import torch

# Model Training শেষ করে মডেল সংরক্ষণ করা
torch.save(model.state_dict(), 'model.pth')

# মডেল লোড করা
model = MyModel()  # মডেলের structure তৈরি করা
model.load_state_dict(torch.load('model.pth'))
model.eval()  # মডেলকে inference মোডে সেট করা
  • TensorFlow/Keras: TensorFlow এবং Keras এ model.save() এবং tf.keras.models.load_model() ব্যবহার করে মডেল সংরক্ষণ এবং লোড করা যায়।
import tensorflow as tf

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

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

Inference

Inference হলো মডেলকে নতুন ডেটা প্রদান করে প্রেডিকশন তৈরি করার প্রক্রিয়া। এটি মডেলের প্রকৃত পরীক্ষা, যেখানে মডেল training ডেটার বাইরে বাস্তব ডেটার উপর কাজ করে এবং প্রেডিকশন প্রদান করে।

Inference এর ধাপসমূহ

  1. Data Preparation: ইনপুট ডেটাকে মডেলের জন্য প্রি-প্রসেসিং করা হয়, যেমন normalization, resizing ইত্যাদি।
  2. Model Loading: Serialized মডেল ফাইলটি লোড করা হয়।
  3. Prediction Generation: মডেলটির উপর ইনপুট ডেটা পাঠিয়ে আউটপুট প্রেডিকশন পাওয়া হয়।
  4. Post-Processing: মডেলের output কে human-readable ফরম্যাটে রূপান্তর করা হয়।

Inference এর উদাহরণ

ধরা যাক, আমাদের একটি Image Classification মডেল আছে, যা একটি ইমেজ ইনপুট দিলে তার প্রেডিকশন বা লেবেল প্রদান করবে।

from PIL import Image
import numpy as np

# মডেল লোড করা (PyTorch এ)
model = MyModel()  # মডেলের structure তৈরি করা
model.load_state_dict(torch.load('model.pth'))
model.eval()

# নতুন ইমেজ প্রি-প্রসেসিং
image = Image.open('test_image.jpg')
image = image.resize((224, 224))
image = np.array(image).transpose((2, 0, 1)) / 255.0
image = torch.tensor(image, dtype=torch.float32).unsqueeze(0)

# Inference
with torch.no_grad():
    output = model(image)
    predicted_class = output.argmax().item()

print(f'Predicted Class: {predicted_class}')

Inference এর প্রয়োজনীয়তা

  1. Practical Application: মডেলটি বাস্তব জীবনে ব্যবহার করতে inference প্রয়োজন, যাতে এটি নতুন ডেটা নিয়ে কাজ করতে পারে।
  2. Performance Evaluation: Inference এর মাধ্যমে মডেলের বাস্তব performance পরিমাপ করা যায় এবং কোন ক্ষেত্রে মডেলটি ভালো বা খারাপ করছে তা দেখা যায়।
  3. Real-Time Decision Making: অনেক অ্যাপ্লিকেশন যেমন fraud detection বা recommendation systems এর জন্য রিয়েল-টাইম ইনফারেন্স প্রয়োজন হয়।

Model Serialization বনাম Inference এর পার্থক্য

বৈশিষ্ট্যModel SerializationInference
মূল উদ্দেশ্যমডেল সংরক্ষণ করামডেল থেকে প্রেডিকশন তৈরি করা
প্রয়োজনীয়তামডেল পুনরায় ব্যবহার এবং deployment এর জন্যবাস্তব জীবনে নতুন ডেটা থেকে প্রেডিকশন নেওয়ার জন্য
ধাপমডেল ট্রেনিং শেষে ফাইল আকারে সংরক্ষণমডেল লোড করে নতুন ডেটা ইনপুট প্রদান করে প্রেডিকশন
প্রধান ফাংশনtorch.save(), torch.load(), model.save()model.predict() বা মডেলের forward pass

সংক্ষেপে

Model Serialization এবং Inference মডেল ব্যবহার এবং deployment প্রক্রিয়ার দুটি অপরিহার্য ধাপ। Serialization মডেল সংরক্ষণ এবং পুনরায় লোড করার সুবিধা প্রদান করে, যেখানে Inference মডেলের মূল উদ্দেশ্য, অর্থাৎ নতুন ডেটা থেকে প্রেডিকশন তৈরি করা, পূরণ করে।

Content added By

Flask বা FastAPI-এর মতো ফ্রেমওয়ার্ক ব্যবহার করে একটি মডেল API তৈরি করলে, মডেলটিকে ওয়েব-অ্যাক্সেসযোগ্য করা যায়, যাতে ব্যবহারকারীরা বা অন্যান্য সিস্টেম মডেলটিকে ইন্টারফেসের মাধ্যমে ব্যবহার করতে পারে। নিচে Flask এবং FastAPI ব্যবহার করে মডেল API তৈরি করার ধাপগুলো আলোচনা করা হলো।

১. Flask ব্যবহার করে মডেল API তৈরি করা

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

ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

pip install flask numpy tensorflow

ধাপ ২: মডেল লোড করা এবং Flask অ্যাপ তৈরি করা

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

# Flask অ্যাপ ইনিশিয়ালাইজ করা
app = Flask(__name__)

# মডেল লোড করা (এখানে 'my_model.h5' নামে সংরক্ষিত মডেল)
model = load_model("my_model.h5")

# পূর্বাভাস ফাংশন তৈরি করা
@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json(force=True)
    input_data = np.array(data["input"]).reshape(1, -1)  # ইনপুট ডেটা প্রসেসিং
    prediction = model.predict(input_data)  # মডেল পূর্বাভাস
    output = prediction[0].tolist()  # ফলাফল JSON-এ রূপান্তর
    return jsonify({"prediction": output})

# Flask অ্যাপ চালু করা
if __name__ == "__main__":
    app.run(debug=True)

এখানে /predict এন্ডপয়েন্ট তৈরি করা হয়েছে, যা POST রিকোয়েস্ট গ্রহণ করে এবং মডেল থেকে পূর্বাভাস রিটার্ন করে।

ধাপ ৩: API পরীক্ষা করা

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

এটি JSON ইনপুট ব্যবহার করে API কল করবে এবং মডেলের পূর্বাভাস JSON আকারে প্রদান করবে।


২. FastAPI ব্যবহার করে মডেল API তৈরি করা

FastAPI একটি দ্রুত ও আধুনিক ফ্রেমওয়ার্ক, যা API তৈরি করার জন্য ব্যবহার করা হয়। এটি Flask-এর তুলনায় আরও দ্রুত এবং কিছু উন্নত ফিচার সরবরাহ করে।

ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

pip install fastapi uvicorn numpy tensorflow

ধাপ ২: মডেল লোড করা এবং FastAPI অ্যাপ তৈরি করা

from fastapi import FastAPI
from pydantic import BaseModel
import numpy as np
from tensorflow.keras.models import load_model

# FastAPI অ্যাপ ইনিশিয়ালাইজ করা
app = FastAPI()

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

# ইনপুট ডেটার জন্য BaseModel ক্লাস তৈরি করা
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)  # মডেল পূর্বাভাস
    output = prediction[0].tolist()  # ফলাফল JSON-এ রূপান্তর
    return {"prediction": output}

ধাপ ৩: FastAPI চালানো

uvicorn filename:app --reload

এখানে filename দিয়ে আপনার ফাইলের নাম দিন, যেমন main.py হলে uvicorn main:app --reload লিখতে হবে।

API পরীক্ষা করা

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

এই রিকোয়েস্টটি ইনপুট হিসাবে [1, 2, 3, 4] পাঠাবে এবং মডেলের পূর্বাভাস JSON আকারে রিটার্ন করবে।


সংক্ষেপে

Flask এবং FastAPI-তে মডেল API তৈরি করার ধাপ:

  1. মডেল লোড করা: load_model ব্যবহার করে মডেল লোড করা।
  2. এন্ডপয়েন্ট তৈরি করা: Flask-এ @app.route বা FastAPI-তে @app.post দিয়ে পূর্বাভাস এন্ডপয়েন্ট তৈরি।
  3. ইনপুট ও আউটপুট: ইনপুট JSON থেকে ডেটা নিয়ে প্রসেস করা এবং আউটপুট JSON-এ রিটার্ন করা।
  4. API চালানো ও পরীক্ষা করা: Flask বা FastAPI রান করে এবং API পরীক্ষা করা।

এইভাবে Flask বা FastAPI ব্যবহার করে মডেল API তৈরি এবং ডেপ্লয় করা সম্ভব, যা আপনার মডেলকে প্রোডাকশনে ব্যবহারের জন্য প্রস্তুত করবে।

Content added By
Promotion

Are you sure to start over?

Loading...