ONNX (Open Neural Network Exchange) মডেলগুলি বিভিন্ন ডিভাইসে, যেমন CPU, GPU এবং অন্যান্য হার্ডওয়্যার প্ল্যাটফর্মে কার্যকরভাবে রান করা যায়। ONNX Runtime ব্যবহার করে এই ডিভাইসগুলিতে মডেল রান করার প্রক্রিয়া সহজ এবং কার্যকরী। নিচে CPU, GPU এবং অন্যান্য ডিভাইসে ONNX মডেল রান করার উপায় এবং প্রক্রিয়া আলোচনা করা হলো।
১. CPU তে ONNX মডেল রান করা
ONNX Runtime স্বাভাবিকভাবে CPU তে মডেল ইনফারেন্স করতে সক্ষম। CPU তে রান করার জন্য আপনাকে অতিরিক্ত কিছু করার প্রয়োজন নেই, শুধুমাত্র ONNX Runtime ইনস্টল করতে হবে।
উদাহরণ:
import onnxruntime as ort
import numpy as np
# ONNX মডেল লোড করা
session = ort.InferenceSession("model.onnx")
# ইনপুট তৈরি করা
input_name = session.get_inputs()[0].name
input_data = np.random.randn(1, 3, 224, 224).astype(np.float32) # উদাহরণস্বরূপ ইনপুট
# ইনফারেন্স চালানো
predictions = session.run(None, {input_name: input_data})
print(predictions)
২. GPU তে ONNX মডেল রান করা
GPU তে ONNX মডেল রান করার জন্য ONNX Runtime-এ CUDA সাপোর্ট থাকতে হবে। এটি NVIDIA GPU ব্যবহার করে দ্রুত ইনফারেন্স নিশ্চিত করে।
পদক্ষেপ ১: ONNX Runtime CUDA সংস্করণ ইনস্টল করা
pip install onnxruntime-gpu
উদাহরণ:
import onnxruntime as ort
import numpy as np
# GPU ব্যবহার করতে ইনফারেন্স সেশন তৈরি করা
session = ort.InferenceSession("model.onnx", providers=['CUDAExecutionProvider'])
# ইনপুট তৈরি করা
input_name = session.get_inputs()[0].name
input_data = np.random.randn(1, 3, 224, 224).astype(np.float32)
# ইনফারেন্স চালানো
predictions = session.run(None, {input_name: input_data})
print(predictions)
৩. অন্যান্য ডিভাইসে ONNX মডেল রান করা
ONNX Runtime অন্যান্য হার্ডওয়্যার প্ল্যাটফর্মগুলিতেও কাজ করে, যেমন FPGA, TPU, ইত্যাদি। এই ডিভাইসগুলির জন্য, আপনাকে সংশ্লিষ্ট এক্সিকিউশন প্রোভাইডার ব্যবহার করতে হবে।
উদাহরণ: OpenVINO ব্যবহার করে
OpenVINO একটি Intel-এর প্ল্যাটফর্ম যা CPU, GPU, VPU এবং FPGA-তে ইনফারেন্সের জন্য তৈরি করা হয়েছে।
pip install openvino-dev
উদাহরণ:
import onnxruntime as ort
import numpy as np
# OpenVINO ব্যবহার করে ইনফারেন্স সেশন তৈরি করা
session = ort.InferenceSession("model.onnx", providers=['OpenVINOExecutionProvider'])
# ইনপুট তৈরি করা
input_name = session.get_inputs()[0].name
input_data = np.random.randn(1, 3, 224, 224).astype(np.float32)
# ইনফারেন্স চালানো
predictions = session.run(None, {input_name: input_data})
print(predictions)
উপসংহার
ONNX মডেলগুলি CPU, GPU এবং অন্যান্য ডিভাইসে কার্যকরভাবে রান করার জন্য অনুকূলিত। ONNX Runtime ব্যবহার করে, আপনি সহজেই আপনার মডেলগুলিকে বিভিন্ন হার্ডওয়্যার প্ল্যাটফর্মে ইনফারেন্স করার জন্য তৈরি করতে পারেন। এটি মডেলগুলির পারফরম্যান্স এবং স্কেলেবিলিটি উন্নত করতে সহায়ক।
Read more