PyTorch মডেল থেকে ONNX এ কনভার্ট এবং ইনফারেন্স প্রজেক্ট

প্র্যাকটিস প্রোজেক্টস - ওএনএনএক্স (ONNX) - Latest Technologies

246

PyTorch মডেলকে ONNX (Open Neural Network Exchange) ফরম্যাটে কনভার্ট করা এবং তারপরে ONNX Runtime ব্যবহার করে ইনফারেন্স (ভবিষ্যদ্বাণী) করার জন্য একটি ধাপে ধাপে প্রজেক্ট তৈরি করা যায়। নিচে পুরো প্রক্রিয়া বর্ণনা করা হলো।

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

প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে নিম্নলিখিত লাইব্রেরিগুলি ইনস্টল করা আছে:

pip install torch torchvision onnx onnxruntime

ধাপ ২: PyTorch মডেল তৈরি করা

এখন একটি সহজ PyTorch মডেল তৈরি করুন। উদাহরণস্বরূপ, আমরা একটি সিম্পল নিউরাল নেটওয়ার্ক তৈরি করব যা MNIST ডেটাসেটের জন্য ক্লাসিফিকেশন কাজ করবে।

import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms

# নিউরাল নেটওয়ার্ক তৈরি করুন
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(28 * 28, 128)
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = x.view(x.size(0), -1)  # Flatten the image
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# মডেল ইনস্ট্যান্স তৈরি
model = SimpleNN()

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

মডেলটিকে কিছু ডেটা ব্যবহার করে প্রশিক্ষণ দিন (এটি একটি সিম্পল উদাহরণ, তাই আমরা প্রশিক্ষণের সম্পূর্ণ প্রক্রিয়া বাদ দেব):

# MNIST ডেটাসেট লোড এবং প্রশিক্ষণ
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True)

# প্রশিক্ষণের জন্য অপটিমাইজার এবং লস ফাংশন সেট করুন
optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()

# প্রশিক্ষণ প্রক্রিয়া
model.train()
for epoch in range(1):  # একটি epoch এ প্রশিক্ষণ
    for images, labels in train_loader:
        optimizer.zero_grad()
        outputs = model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

ধাপ ৪: ONNX এ কনভার্ট করা

মডেলটি ONNX ফরম্যাটে রূপান্তর করুন।

# Dummy input তৈরি করুন
dummy_input = torch.randn(1, 1, 28, 28)  # Batch size 1 এবং MNIST image shape

# মডেলকে ONNX ফরম্যাটে এক্সপোর্ট করুন
torch.onnx.export(model, dummy_input, "simple_nn.onnx", 
                  export_params=True, 
                  opset_version=11, 
                  do_constant_folding=True, 
                  input_names=['input'], 
                  output_names=['output'])

ধাপ ৫: ONNX Runtime ব্যবহার করে ইনফারেন্স করা

এখন ONNX Runtime ব্যবহার করে মডেলটির ইনফারেন্স করা যাক।

import onnx
import onnxruntime as ort
import numpy as np

# ONNX মডেল লোড করুন
onnx_model = onnx.load("simple_nn.onnx")
onnx.checker.check_model(onnx_model)  # মডেল চেক করুন

# ইনফারেন্সের জন্য ONNX Runtime সেটআপ করুন
session = ort.InferenceSession("simple_nn.onnx")

# Dummy input তৈরি করুন (একটি নমুনা ইমেজ)
test_image = np.random.rand(1, 1, 28, 28).astype(np.float32)  # Batch size 1, channel 1, 28x28 image

# ইনফারেন্স করুন
inputs = {session.get_inputs()[0].name: test_image}
outputs = session.run(None, inputs)

# ফলাফল দেখান
print("Output:", outputs[0])

উপসংহার

এভাবে, আপনি একটি PyTorch মডেল তৈরি করতে পারেন, সেটি ONNX ফরম্যাটে রূপান্তর করতে পারেন, এবং ONNX Runtime ব্যবহার করে ইনফারেন্স করতে পারেন। এই প্রক্রিয়াটি মডেলগুলি অন্যান্য ফ্রেমওয়ার্কে এবং প্ল্যাটফর্মে নির্বিঘ্নে ব্যবহার করার জন্য সহায়ক। ONNX ফরম্যাটের মাধ্যমে মডেলগুলি বিভিন্ন ডিভাইসে চালানোর জন্য নমনীয়তা এবং পারফরম্যান্স নিশ্চিত করা হয়।

Promotion

Are you sure to start over?

Loading...