ONNX Runtime Server হল ONNX Runtime-এর একটি কম্পোনেন্ট, যা ONNX মডেলগুলির ইনফারেন্সকে সার্ভার ভিত্তিকভাবে পরিচালনা করে। এটি ব্যবহারকারীদের দ্রুত এবং স্কেলেবেল ইনফারেন্স পরিষেবা প্রদান করে। REST API ইন্টিগ্রেশন মাধ্যমে, আপনি সহজে অনলাইন অ্যাপ্লিকেশন বা অন্যান্য সিস্টেমের সাথে ONNX মডেল সার্ভারকে সংযুক্ত করতে পারেন। নিচে ONNX Runtime Server এবং REST API ইন্টিগ্রেশনের প্রক্রিয়া বিস্তারিত আলোচনা করা হলো।
ONNX Runtime Server সেটআপ
পদক্ষেপ ১: ONNX Runtime Server ইনস্টল করা
ONNX Runtime Server ব্যবহার করার জন্য, আপনাকে Docker ব্যবহার করে সেটআপ করতে হবে।
docker pull onnxruntime/onnxruntime-server
পদক্ষেপ ২: মডেল সার্ভার শুরু করা
ONNX Runtime Server শুরু করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন। এখানে model.onnx হল আপনার ONNX মডেল ফাইলের নাম।
docker run -p 8080:8080 -v /path/to/your/model:/models --rm onnxruntime/onnxruntime-server --model-path /models/model.onnx
-p 8080:8080: আপনার লোকাল মেশিনের পোর্ট 8080-এ সার্ভারকে ম্যাপ করে।-v /path/to/your/model:/models: মডেল ফাইলের পাথ ম্যাপ করে।
REST API ইন্টিগ্রেশন
ONNX Runtime Server চলাকালীন, এটি REST API-এর মাধ্যমে ইনফারেন্সের জন্য কল গ্রহণ করবে। নিচে REST API ব্যবহার করে ইনফারেন্স করার পদ্ধতি আলোচনা করা হলো।
পদক্ষেপ ৩: ইনফারেন্সের জন্য HTTP POST অনুরোধ পাঠানো
আপনার মডেলের ইনফারেন্স করার জন্য HTTP POST অনুরোধ ব্যবহার করুন। উদাহরণস্বরূপ, আপনি requests লাইব্রেরি ব্যবহার করতে পারেন।
import requests
import json
import numpy as np
# ইনপুট ডেটা তৈরি করা
input_data = np.random.rand(1, 3, 224, 224).astype(np.float32).tolist()
# ইনফারেন্সের জন্য POST অনুরোধ
url = "http://localhost:8080/v1/models/model:predict"
headers = {"Content-Type": "application/json"}
payload = {
"inputs": [
{
"name": "input",
"shape": [1, 3, 224, 224],
"datatype": "FP32",
"data": input_data
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
# ফলাফল প্রাপ্তি
predictions = response.json()
print(predictions)
API Request Payload Structure
ONNX Runtime Server-এ REST API ব্যবহার করার সময়, ইনপুট পে-লোডের একটি নির্দিষ্ট গঠন থাকতে হবে। সাধারণত এটি নিম্নরূপ:
- inputs: ইনপুট ডেটার একটি তালিকা, যেখানে প্রতিটি ইনপুটের জন্য নীচের তথ্য থাকতে হবে:
- name: ইনপুটের নাম।
- shape: ইনপুটের আকার।
- datatype: ইনপুট ডেটার ধরন (যেমন FP32, INT64)।
- data: ইনপুট ডেটা (লিস্ট আকারে)।
উপসংহার
ONNX Runtime Server ব্যবহার করে ONNX মডেলগুলির জন্য REST API ইন্টিগ্রেশন একটি কার্যকরী এবং স্কেলেবল উপায়। এটি দ্রুত ইনফারেন্সের সুবিধা দেয় এবং বিভিন্ন অ্যাপ্লিকেশন বা সিস্টেমের সাথে সংযোগ স্থাপন করতে সহায়ক। এই প্রক্রিয়ার মাধ্যমে, ব্যবহারকারীরা তাদের AI মডেলগুলিকে সহজে এবং কার্যকরভাবে বাস্তবায়িত করতে পারেন।
Read more