উদাহরণসহ মডেল সার্ভিং এবং Deployment

Model Deployment এবং Serialization - পাইটর্চ লাইটনিং (PyTorch Lightning) - Latest Technologies

194

মডেল সার্ভিং এবং ডিপ্লয়মেন্ট মেশিন লার্নিং প্রকল্পের গুরুত্বপূর্ণ অংশ, যা প্রশিক্ষিত মডেলকে উৎপাদনে নিয়ে যেতে এবং ব্যবহারকারীদের জন্য উপলব্ধ করতে সাহায্য করে। এখানে একটি সাধারণ উদাহরণে দেখানো হলো কিভাবে PyTorch মডেল সার্ভিং এবং ডিপ্লয়মেন্ট করা যায়, যেখানে আমরা Flask ব্যবহার করব একটি API তৈরি করার জন্য।

১. মডেল ট্রেনিং

প্রথমে একটি সরল নিউরাল নেটওয়ার্ক তৈরি করে প্রশিক্ষণ দেওয়া হবে। আমরা একটি কৃত্রিম ডেটাসেট ব্যবহার করব।

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset

# ডেটা তৈরি
x_train = torch.randn(1000, 10)  # 1000 টির মধ্যে 10টি বৈশিষ্ট্য
y_train = torch.randn(1000, 1)    # লক্ষ্য পরিবর্তনশীল
train_dataset = TensorDataset(x_train, y_train)
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)

# মডেল তৈরি
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, 1)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        return self.fc2(x)

# মডেল প্রশিক্ষণ
model = SimpleNN()
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

num_epochs = 10
for epoch in range(num_epochs):
    for inputs, targets in train_loader:
        optimizer.zero_grad()
        outputs = model(inputs)
        loss = criterion(outputs, targets)
        loss.backward()
        optimizer.step()

২. মডেল সংরক্ষণ

মডেল ট্রেনিং সম্পন্ন হলে, মডেলটি সংরক্ষণ করুন।

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

৩. Flask API তৈরি করা

এখন একটি Flask অ্যাপ তৈরি করুন যা মডেল সার্ভিং করবে।

from flask import Flask, request, jsonify
import torch

app = Flask(__name__)

# মডেল লোড করা
model = SimpleNN()
model.load_state_dict(torch.load('simple_nn_model.pth'))
model.eval()

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json
    input_tensor = torch.tensor(data['input'], dtype=torch.float32)
    with torch.no_grad():
        prediction = model(input_tensor).numpy()
    return jsonify(prediction=prediction.tolist())

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

৪. Flask অ্যাপ চালানো

এই কোডটি একটি Flask অ্যাপ তৈরি করবে যা /predict এ POST অনুরোধ গ্রহণ করে। অ্যাপটি চালানোর জন্য, নিচের কমান্ডটি ব্যবহার করুন:

python app.py

৫. API-তে ইনফারেন্স করা

API চালু হলে, আপনি curl বা Postman ব্যবহার করে ইনফারেন্স করতে পারেন। নিচে curl কমান্ডের একটি উদাহরণ দেওয়া হলো:

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

৬. ইনফারেন্সের ফলাফল

API থেকে ফলাফল পাওয়ার পর এটি JSON ফরম্যাটে দেখাবে, যেখানে মডেলের পূর্বাভাস অন্তর্ভুক্ত থাকবে।

উপসংহার

এই উদাহরণটি দেখায় কিভাবে একটি PyTorch মডেল ট্রেনিং, সংরক্ষণ এবং Flask ব্যবহার করে সার্ভিং এবং ডিপ্লয়মেন্ট করা যায়। এটি আপনাকে একটি কার্যকরী API তৈরি করতে সহায়তা করে, যা নতুন ডেটার উপর ইনফারেন্স করতে সক্ষম। 

Promotion

Are you sure to start over?

Loading...