Model Export একটি গুরুত্বপূর্ণ পদক্ষেপ যা আপনাকে তৈরি করা মডেলটি বিভিন্ন প্ল্যাটফর্ম বা লাইব্রেরিতে ব্যবহারযোগ্য করার সুযোগ দেয়। ONNX এবং CNTK format দুটি প্রধান ফরম্যাট যা ডিপ লার্নিং মডেল এক স্থান থেকে অন্য স্থানে ট্রান্সফার বা চালানো যায়। এখানে আমরা ONNX এবং CNTK format এ মডেল এক্সপোর্ট করার পদ্ধতি আলোচনা করব।
1. ONNX (Open Neural Network Exchange)
ONNX হল একটি ওপেন সোর্স ফরম্যাট যা মডেল এক প্ল্যাটফর্ম বা ফ্রেমওয়ার্ক থেকে অন্য প্ল্যাটফর্মে স্থানান্তর করার জন্য ব্যবহৃত হয়। ONNX মডেলটি PyTorch, TensorFlow, CNTK, Scikit-learn, এবং অন্যান্য ডিপ লার্নিং ফ্রেমওয়ার্কগুলির মধ্যে মডেল এক্সপোর্ট এবং ইমপোর্টের সুবিধা দেয়।
ONNX এ মডেল এক্সপোর্ট করার পদ্ধতি
PyTorch থেকে ONNX এ মডেল এক্সপোর্ট:
import torch.onnx
import torchvision.models as models
# মডেল লোড করা (উদাহরণ হিসেবে ResNet)
model = models.resnet18(pretrained=True)
model.eval() # মডেলকে eval মোডে রাখতে হবে
# Dummy input tensor (ONNX এ এক্সপোর্ট করার জন্য প্রয়োজন)
dummy_input = torch.randn(1, 3, 224, 224)
# মডেলকে ONNX ফরম্যাটে এক্সপোর্ট করা
onnx_path = "resnet18.onnx"
torch.onnx.export(model, dummy_input, onnx_path, verbose=True, input_names=['input'], output_names=['output'])
torch.onnx.export(): এটি PyTorch মডেলকে ONNX ফরম্যাটে রূপান্তর করে।dummy_input: এটি এমন একটি ইনপুট টেন্সর যা আপনার মডেলকে খাওয়ানো হবে যাতে ONNX ফাইলটি ইনপুট আকার অনুযায়ী সঠিকভাবে তৈরি করা হয়।onnx_path: যেখানে মডেলটি সংরক্ষণ করা হবে।
ONNX মডেল লোড এবং ব্যবহার (ONNX Runtime)
import onnx
import onnxruntime as ort
# ONNX মডেল লোড করা
onnx_model = onnx.load("resnet18.onnx")
# ONNX runtime এর মাধ্যমে মডেল ইনফারেন্স করা
session = ort.InferenceSession("resnet18.onnx")
inputs = session.get_inputs()[0].name
outputs = session.get_outputs()[0].name
# Example inference
import numpy as np
input_data = np.random.randn(1, 3, 224, 224).astype(np.float32)
result = session.run([outputs], {inputs: input_data})
print(result)
2. CNTK format (Microsoft Cognitive Toolkit)
CNTK format হল Microsoft Cognitive Toolkit এর নিজস্ব মডেল ফরম্যাট। CNTK এ মডেল এক্সপোর্ট করার জন্য এটি cntk.save_model() ফাংশন ব্যবহার করে।
CNTK ফরম্যাটে মডেল এক্সপোর্ট করার পদ্ধতি
CNTK এ মডেল এক্সপোর্ট:
import cntk as C
# মডেল লোড বা তৈরি করা
input_var = C.input_variable(3)
output_var = C.layers.Dense(3)(input_var)
model = C.Function(input_var, output_var)
# CNTK ফরম্যাটে মডেল সংরক্ষণ করা
model_path = "model.dnn"
C.save_model(model, model_path)
C.save_model(): এটি CNTK মডেলটি.dnnফরম্যাটে সংরক্ষণ করে।
CNTK মডেল লোড এবং ব্যবহার
# CNTK মডেল লোড করা
loaded_model = C.load_model("model.dnn")
# ইনফারেন্স (পূর্বাভাস) নেওয়া
input_data = [1.0, 2.0, 3.0]
output_data = loaded_model.eval([input_data])
print(output_data)
ONNX এবং CNTK ফরম্যাটের মধ্যে পার্থক্য
| Feature | ONNX | CNTK |
|---|---|---|
| Compatibility | Cross-framework (TensorFlow, PyTorch, CNTK, etc.) | Primarily CNTK |
| Usage | Model portability across platforms | Specific to Microsoft Cognitive Toolkit |
| File Extension | .onnx | .dnn |
| Supported Frameworks | TensorFlow, PyTorch, Scikit-learn, CNTK, etc. | Primarily used with CNTK |
সারাংশ
- ONNX হল একটি ওপেন ফরম্যাট যা ডিপ লার্নিং মডেলগুলিকে এক প্ল্যাটফর্ম থেকে অন্য প্ল্যাটফর্মে স্থানান্তর করতে সহায়ক। এটি PyTorch, TensorFlow, CNTK সহ বিভিন্ন ফ্রেমওয়ার্ক সমর্থন করে।
- CNTK মডেল এক্সপোর্টের জন্য, CNTK এর নিজস্ব .dnn ফরম্যাট ব্যবহৃত হয়, যা শুধুমাত্র CNTK এর মধ্যে ব্যবহৃত হয়।
- ONNX একটি শক্তিশালী ফরম্যাট বিশেষত যখন আপনি একাধিক ফ্রেমওয়ার্কে কাজ করছেন এবং pretrained models বা বিভিন্ন ডিপ লার্নিং লাইব্রেরির মধ্যে মডেল শেয়ার করতে চান।
এটি মডেল এক্সপোর্ট এবং ট্রান্সফার করার জন্য একটি সাধারণ প্রক্রিয়া, এবং এটি ডিপ লার্নিং পদ্ধতিগুলির মধ্যে মডেল অপ্টিমাইজেশন এবং ইনফারেন্সকে আরও সুবিধাজনক এবং দ্রুত করতে সহায়ক।
Read more