LiteRT, CompiledModel API-এর মাধ্যমে AOT এবং অন-ডিভাইস কম্পাইলেশন উভয়ের জন্যই Intel OpenVino-কে সমর্থন করে।
পাইথন এপিআই
উন্নয়ন পরিবেশ সেট আপ করুন
লিনাক্স (x86_64):
- উবুন্টু ২২.০৪ অথবা ২৪.০৪ এলটিএস
- পাইথন ৩.১০+ — python.org অথবা আপনার ডিস্ট্রো থেকে ইনস্টল করুন (
sudo apt install python3 python3-venv) - ইন্টেল এনপিইউ ড্রাইভার ভি১.৩২.১ — লিনাক্স এনপিইউ সেটআপ দেখুন
উইন্ডোজ (x86_64):
- উইন্ডোজ ১০ বা ১১
- পাইথন ৩.১০+ — python.org থেকে ইনস্টল করুন
- ইন্টেল এনপিইউ ড্রাইভার 32.0.100.4724+ — উইন্ডোজ এনপিইউ সেটআপ দেখুন
সোর্স থেকে বিল্ড করার জন্য, ব্যাজেলিস্ক (Bazelisk ) ব্যবহার করে ব্যাজেল ৭.৪.১+ (Bazel 7.4.1+) অথবা হারমেটিক ডকার বিল্ডও (hermetic Docker build) প্রয়োজন।
সমর্থিত SoC-গুলি
| প্ল্যাটফর্ম | এনপিইউ | কোডনাম | ওএস |
|---|---|---|---|
| ইন্টেল কোর আল্ট্রা সিরিজ ২ | এনপিইউ৪০০০ | চন্দ্র হ্রদ (LNL) | লিনাক্স, উইন্ডোজ |
| ইন্টেল কোর আল্ট্রা সিরিজ ৩ | এনপিইউ৫০১০ | প্যান্থার লেক (পিটিএল) | লিনাক্স, উইন্ডোজ |
দ্রুত শুরু
১. এনপিইউ ড্রাইভার ইনস্টল করুন
লিনাক্স এনপিইউ সেটআপ অথবা উইন্ডোজ এনপিইউ সেটআপ দেখুন। আপনার শুধু এওটি (AOT) প্রয়োজন হলে এটি এড়িয়ে যান।
এনপিইউ ড্রাইভারটি শুধুমাত্র সেইসব সিস্টেমে প্রয়োজন হয়, যেগুলো এনপিইউ হার্ডওয়্যারে মডেলটি নির্বাহ করে । বিশুদ্ধ এওটি-বিল্ড সিস্টেমে এটি বাদ দেওয়া যেতে পারে।
দ্রষ্টব্য:
ai-edge-litert-sdk-intel-nightlyPEP 440 সংস্করণ অনুযায়ী সংশ্লিষ্ট OpenVINO নাইটলি হুইলকে পিন করে রাখে (যেমনopenvino==2026.2.0.dev20260506), তাই এটি খুঁজে বের করার জন্য pip-এর--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightlyপ্রয়োজন হয়। লিনাক্সে, যদি ডিস্ট্রোর স্বয়ংক্রিয় শনাক্তকরণ ভুল আর্কাইভটি বেছে নেয়, তাহলেpip installআগেLITERT_OV_OS_ID=ubuntu22অথবাubuntu24সেট করে নিন।
২. একটি পাইথন ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন
সিস্টেম-ব্যাপী যেকোনো OpenVINO ইনস্টল থেকে রাতের openvino হুইলটিকে বিচ্ছিন্ন রাখার পরামর্শ দেওয়া হচ্ছে।
python -m venv litert_env
# Linux / macOS
source litert_env/bin/activate
# Windows (PowerShell)
.\litert_env\Scripts\Activate.ps1
python -m pip install --upgrade pip
৩. পিপ প্যাকেজটি ইনস্টল করুন
pip install --pre \
--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly \
ai-edge-litert-nightly ai-edge-litert-sdk-intel-nightly
--extra-index-url pip-কে PyPI-এর প্যাকেজগুলোর পাশাপাশি OpenVINO-এর ইনডেক্স থেকে পিন করা openvino nightly wheel প্যাকেজটি খুঁজে বের করতে সাহায্য করে।
৪. ইনস্টলেশন যাচাই করুন
python -c "
from ai_edge_litert.aot.vendors.intel_openvino import intel_openvino_backend
import ai_edge_litert_sdk_intel, openvino, os
print('Backend:', intel_openvino_backend.IntelOpenVinoBackend.id())
print('Dispatch:', intel_openvino_backend.get_dispatch_dir())
print('OpenVINO:', openvino.__version__)
print('SDK libs:', sorted(os.listdir(ai_edge_litert_sdk_intel.path_to_sdk_libs())))
print('Available devices:', openvino.Core().available_devices)
"
আউটপুটে কী পরীক্ষা করতে হবে:
-
SDK libsতালিকায়libopenvino_intel_npu_compiler.so(Linux) অথবাopenvino_intel_npu_compiler.dll(Windows) রয়েছে — যা AOT-এর জন্য আবশ্যক। -
Available devicesমধ্যেNPUঅন্তর্ভুক্ত রয়েছে — এটি নিশ্চিত করে যে NPU ড্রাইভার ইনস্টল করা আছে এবং OpenVINO ডিভাইসটির সাথে যোগাযোগ করতে পারে। শুধুমাত্র AOT-ভিত্তিক সিস্টেমে (যেখানে ড্রাইভার ইনস্টল করা নেই) এবং ইন্টেল NPU হার্ডওয়্যারবিহীন সিস্টেমেNPUঅনুপস্থিত থাকবে।
৫. এওটি কম্পাইল (ঐচ্ছিক)
- একটি নির্দিষ্ট ইন্টেল এনপিইউ টার্গেটের (পিটিএল বা এলএনএল) জন্য একটি
.tfliteফাইল আগে থেকেই কম্পাইল করা হয়, ফলে রানটাইম কম্পাইলার প্লাগইন ধাপটি এড়িয়ে যায়। - কোনো ফিজিক্যাল এনপিইউ বা এনপিইউ ড্রাইভারের প্রয়োজন নেই — শুধু
ai-edge-litert-nightlyএবংai-edge-litert-sdk-intel-nightlyপ্রয়োজন। - ক্রস-কম্পাইলেশন সমর্থিত: যেকোনো লিনাক্স বা উইন্ডোজ হোস্টে কম্পাইল করুন, এরপর প্রাপ্ত
.tfliteফাইলটি যেকোনো একটি অপারেটিং সিস্টেমের টার্গেটে পাঠিয়ে দিন এবং সেখানেই চালান।
আউটপুট ফাইলগুলোর নাম <model>_IntelOpenVINO_<SoC>_apply_plugin.tflite ।
from ai_edge_litert.aot import aot_compile
from ai_edge_litert.aot.vendors.intel_openvino import target as intel_target
# Compile for a single Intel NPU target (PTL or LNL).
aot_compile.aot_compile(
"model.tflite",
output_dir="out",
target=intel_target.Target(soc_model=intel_target.SocModel.PTL),
)
# Or omit target= to compile for every registered backend/target.
aot_compile.aot_compile("model.tflite", output_dir="out", keep_going=True)
৬. এনপিইউ ইনফারেন্স চালান
LiteRT ইন্টেল এনপিইউ-তে দুটি ইনফারেন্স পাথ সমর্থন করে:
- JIT — একটি সরাসরি
.tfliteফাইল লোড করে; কম্পাইলার প্লাগইনটিCompiledModel.from_file()ফাংশনের সময় NPU-এর জন্য সমর্থিত অপসগুলোকে বিভক্ত করে এবং কম্পাইল করে। এর ফলে প্রথমবার চালানোর সময় কিছুটা বিলম্ব হয় (যা মডেল অনুযায়ী পরিবর্তিত হয়)। - AOT-কম্পাইলকৃত — ধাপ ৪ দ্বারা উৎপাদিত একটি
<model>_IntelOpenVINO_<SoC>_apply_plugin.tfliteলোড করে। লোড করার সময় পার্টিশন এবং কম্পাইলেশন ধাপটি এড়িয়ে যায়।
এই কোড স্নিপেটটি উভয়ের জন্যই কাজ করে:
from ai_edge_litert.compiled_model import CompiledModel
from ai_edge_litert.hardware_accelerator import HardwareAccelerator
model = CompiledModel.from_file(
"model.tflite", # raw tflite (JIT) or ..._apply_plugin.tflite (AOT)
hardware_accel=HardwareAccelerator.NPU | HardwareAccelerator.CPU,
)
sig_key = list(model.get_signature_list().keys())[0]
sig_idx = model.get_signature_index(sig_key)
input_buffers = model.create_input_buffers(sig_idx)
output_buffers = model.create_output_buffers(sig_idx)
model.run_by_index(sig_idx, input_buffers, output_buffers)
print("Fully accelerated:", model.is_fully_accelerated())
JIT আসলেই চলেছে কিনা তা নিশ্চিত করুন।
JIT সফল হলে, লগে নিম্নলিখিত বিষয়গুলো থাকে (লিনাক্সে ফাইল এক্সটেনশন .so , উইন্ডোজে .dll ):
INFO: [compiler_plugin.cc:236] Loaded plugin at: .../LiteRtCompilerPlugin_IntelOpenvino.{so,dll}
INFO: [compiler_plugin.cc:690] Partitioned subgraph<0>, selected N ops, from a total of N ops
INFO: [compiled_model.cc:1006] JIT compilation changed model, reserializing...
যদি ওই লাইনগুলো অনুপস্থিত থাকে কিন্তু তারপরেও Fully accelerated: True রিপোর্ট করা হয়, তাহলে মডেলটি NPU-তে নয়, বরং XNNPACK CPU ফলব্যাকে চালানো হয়েছিল — JIT ট্রাবলশুটিং সারিটি দেখুন।
৭. বেঞ্চমার্ক
# Dispatch library and the NPU compiler are auto-discovered from the wheel.
litert-benchmark --model=model.tflite --use_npu --num_runs=50
সাধারণ ফ্ল্যাগ:
| পতাকা | ডিফল্ট | বর্ণনা |
|---|---|---|
--model PATH | — | .tflite মডেলের পাথ (আবশ্যক)। |
--signature KEY | প্রথম | চালানোর জন্য সিগনেচার কী চাপুন। |
--use_cpu / --no_cpu | চালু | সিপিইউ অ্যাক্সিলারেটর / সিপিইউ ফলব্যাক টগল করুন। |
--use_gpu | বন্ধ | জিপিইউ অ্যাক্সিলারেটর সক্রিয় করুন। |
--use_npu | বন্ধ | ইন্টেল এনপিইউ অ্যাক্সিলারেটর সক্রিয় করুন। |
--require_full_delegation | বন্ধ | মডেলটি নির্বাচিত অ্যাক্সিলারেটরে সম্পূর্ণরূপে অফলোড না হলে ব্যর্থ হবে। |
--num_runs N | ৫০ | সময়-ভিত্তিক অনুমান পুনরাবৃত্তির সংখ্যা। |
--warmup_runs N | ৫ | পরিমাপের পূর্বে সময়বিহীন প্রস্তুতিমূলক পুনরাবৃত্তি। |
--num_threads N | ১ | সিপিইউ থ্রেড সংখ্যা। |
--result_json PATH | — | একটি JSON সারাংশ লিখুন (লেটেন্সি পরিসংখ্যান, থ্রুপুট, অ্যাক্সিলারেটর তালিকা)। |
--verbose | বন্ধ | অতিরিক্ত রানটাইম লগিং। |
উন্নত / ওভাররাইড ফ্ল্যাগ — শুধুমাত্র কাস্টম বিল্ড নির্দেশ করার জন্য প্রয়োজন: --dispatch_library_path , --compiler_plugin_path , --runtime_path ।
মিশ্র-বিক্রেতা হুইল: ইন্টেল ওভি-তে জেআইটি-কে আবদ্ধ করা
দ্রষ্টব্য: যখন সুস্পষ্ট পাথ ছাড়া
Environment.create()কল করা হয়, তখন এটিai_edge_litert/vendors/অধীনে বর্ণানুক্রমিকভাবে স্বয়ংক্রিয়ভাবে ভেন্ডরদের খুঁজে বের করে এবং প্রথমটিকে রেজিস্টার করে। একটি মিশ্র-ভেন্ডর ইনস্টলেশনে এটি Intel OV নাও হতে পারে — সঠিকটি বেছে নিতে বাধ্য করার জন্য Intel OV ডিরেক্টরিগুলো স্পষ্টভাবে উল্লেখ করুন।
- পিপ হুইলটিতে প্রতিটি নিবন্ধিত ভেন্ডরের (
intel_openvino/,google_tensor/,mediatek/,qualcomm/,samsung/) জন্য কম্পাইলার প্লাগইন অন্তর্ভুক্ত রয়েছে। - ইন্টেল ওভি পাথ নির্দিষ্ট করতে (একাধিক ভেন্ডরের এসডিকে ইনস্টল করা থাকলে এটি সুপারিশ করা হয়), ইন্টেল ওভি ডিরেক্টরিগুলো হাতে লিখে দিন:
from ai_edge_litert.environment import Environment
from ai_edge_litert.compiled_model import CompiledModel
from ai_edge_litert.hardware_accelerator import HardwareAccelerator
from ai_edge_litert.aot.vendors.intel_openvino import intel_openvino_backend as ov
env = Environment.create(
compiler_plugin_path=ov.get_compiler_plugin_dir(), # JIT compiler
dispatch_library_path=ov.get_dispatch_dir(), # runtime
)
model = CompiledModel.from_file(
"model.tflite",
hardware_accel=HardwareAccelerator.NPU | HardwareAccelerator.CPU,
environment=env,
)
রানটাইম প্রদত্ত ডিরেক্টরিতে থাকা প্রতিটি শেয়ার্ড লাইব্রেরি লোড করে, তাই vendors/intel_openvino/compiler/ নির্দেশ দিলে শুধুমাত্র ইন্টেল প্লাগইনটি লোড হয়; পার্শ্ববর্তী ডিরেক্টরিতে থাকা গুগল টেনসর / মিডিয়াটেক / কোয়ালকম / স্যামসাং প্লাগইনগুলো কখনোই লোড হয় না।
CLI-এর ক্ষেত্রে, সমতুল্য ফ্ল্যাগগুলো হলো:
DISPATCH_DIR=$(python3 -c 'from ai_edge_litert.aot.vendors.intel_openvino import intel_openvino_backend as ov; print(ov.get_dispatch_dir())')
COMPILER_DIR=$(python3 -c 'from ai_edge_litert.aot.vendors.intel_openvino import intel_openvino_backend as ov; print(ov.get_compiler_plugin_dir())')
litert-benchmark --model=model.tflite --use_npu \
--compiler_plugin_path=$COMPILER_DIR \
--dispatch_library_path=$DISPATCH_DIR
এনপিইউ এক্সিকিউশন যাচাই করুন
মডেলটি প্রকৃতপক্ষে এনপিইউ-তে চলেছে কিনা তা নিশ্চিত করতে, উভয় সিগন্যাল পরীক্ষা করুন:
- লগটিতে লেখা আছে
Loading shared library: .../LiteRtDispatch_IntelOpenvino.{so,dll}— ইন্টেল ডিসপ্যাচ লাইব্রেরিটি লোড হয়েছে (লিনাক্সে.so, উইন্ডোজে.dll)। -
model.is_fully_accelerated()Trueরিটার্ন করে — এর মানে হলো প্রতিটি অপারেশন নির্বাচিত অ্যাক্সিলারেটরে অফলোড করা হয়েছে।
শুধুমাত্র is_fully_accelerated() যথেষ্ট নয় : যদি ডিসপ্যাচ লাইব্রেরি কখনো লোড না হয়, তাহলে অপসগুলো NPU-তে নয়, বরং XNNPACK/CPU-তে সম্পূর্ণরূপে অফলোড করা হতো।
লিনাক্স এনপিইউ সেটআপ
দ্রষ্টব্য: আপনার যদি শুধু AOT-এর প্রয়োজন হয়, তবে এই অংশটি এড়িয়ে যান — একটি ফিজিক্যাল NPU-এর প্রয়োজন নেই।
তথ্য: NPU ড্রাইভার v1.32.1 (OpenVINO 2026.1-এর সাথে যুক্ত) ব্যবহার করুন। পুরোনো ড্রাইভারগুলো
Level0 pfnCreate2 result: ZE_RESULT_ERROR_UNSUPPORTED_FEATUREকারণে ব্যর্থ হয়।
# 1. NPU driver (Ubuntu 24.04 use -ubuntu2204 tarball for 22.04).
sudo dpkg --purge --force-remove-reinstreq \
intel-driver-compiler-npu intel-fw-npu intel-level-zero-npu intel-level-zero-npu-dbgsym || true
wget https://github.com/intel/linux-npu-driver/releases/download/v1.32.1/linux-npu-driver-v1.32.1.20260422-24767473183-ubuntu2404.tar.gz
tar -xf linux-npu-driver-v1.32.1.*.tar.gz
sudo apt update && sudo apt install -y libtbb12
sudo dpkg -i intel-fw-npu_*.deb intel-level-zero-npu_*.deb intel-driver-compiler-npu_*.deb
# 2. Level Zero loader v1.27.0.
wget https://snapshot.ppa.launchpadcontent.net/kobuk-team/intel-graphics/ubuntu/20260324T100000Z/pool/main/l/level-zero-loader/libze1_1.27.0-1~24.04~ppa2_amd64.deb
sudo dpkg -i libze1_*.deb
# 3. Permissions + verify.
sudo gpasswd -a ${USER} render && newgrp render
ls /dev/accel/accel0 # must exist after reboot
এরপর কুইক স্টার্ট থেকে ইনস্টল ও ভেরিফাই কোডটি চালান।
উইন্ডোজ এনপিইউ সেটআপ
দ্রষ্টব্য: আপনার যদি শুধু AOT-এর প্রয়োজন হয়, তবে এই অংশটি এড়িয়ে যান — একটি ফিজিক্যাল NPU-এর প্রয়োজন নেই।
- ইন্টেল ডাউনলোড সেন্টার থেকে ইন্টেল এনপিইউ ড্রাইভার ( 32.0.100.4724+ ) ইনস্টল করুন।
- ডিভাইস ম্যানেজারে NPU ডিভাইসটি নিউরাল প্রসেসরের অধীনে তালিকাভুক্ত আছে কিনা তা যাচাই করুন (ড্রাইভারের উপর নির্ভর করে এটি
Intel(R) AI BoostবাIntel(R) NPUহিসাবে দেখানো হয়)। - কুইক স্টার্ট থেকে install + verify কোডটি চালান, এবং
pipএর পরিবর্তেpython -m pipব্যবহার করুন।
তথ্য:
import ai_edge_litertos.add_dll_directory()ব্যবহার করে ডিএলএল ডিরেক্টরিগুলো স্বয়ংক্রিয়ভাবে রেজিস্টার হয়ে যায়, তাই পাইথন স্ক্রিপ্টের জন্যPATHসেটআপ করার প্রয়োজন হয় না। যারা পাইথন ব্যবহার করেন না, তারাsetupvars.batরান করুন অথবাPATHশুরুতে<openvino>/libsযোগ করুন।
উৎস থেকে তৈরি করুন
প্রক্সির পেছনে আছেন? বিল্ড স্ক্রিপ্টগুলো চালানোর আগে
http_proxy/https_proxy/no_proxyএক্সপোর্ট করুন — এগুলো ডকার এবং কন্টেইনারে এগুলো ফরোয়ার্ড করে দেয়।
লিনাক্স (ডকার, হারমেটিক):
cd LiteRT/docker_build && ./build_wheel_with_docker.sh
উইন্ডোজ (পাওয়ারশেল, ব্যাজেল PATH-এ থাকলে):
.\ci\build_pip_package_with_bazel_windows.ps1
আউটপুট ভূমি dist/ এ :
-
ai_edge_litert-*.whl— রানটাইম হুইল। -
ai_edge_litert_sdk_{intel,qualcomm,mediatek,samsung}-*.tar.gz— বিক্রেতা sdists। - ইন্টেল sdist-এর আকার প্রায় ৫ কিলোবাইট;
pip installসময় NPU কম্পাইলারের.so/.dllফাইলগুলো ডাউনলোড করা হয়, তাই একই sdist লিনাক্স এবং উইন্ডোজ উভয় প্ল্যাটফর্মেই কাজ করে।
ইউনিট পরীক্ষা
bazel test \
//litert/python/aot/vendors/intel_openvino:intel_openvino_backend_test \
//litert/c/options:litert_intel_openvino_options_test \
//litert/cc/options:litert_intel_openvino_options_test \
//litert/tools/flags/vendors:intel_openvino_flags_test
সমস্যা সমাধান
| সমস্যা | ঠিক করুন |
|---|---|
AOT ব্যর্থ হয়েছে: Device with "NPU" name is not registered | NPU কম্পাইলার পাওয়া যায়নি। ai_edge_litert_sdk_intel.path_to_sdk_libs() ফাইলে libopenvino_intel_npu_compiler.so / .dll আছে কিনা তা পরীক্ষা করুন। যদি ফাইলটি খালি থাকে, তাহলে নেটওয়ার্ক অ্যাক্সেস সহ পুনরায় ইনস্টল করুন, অথবা LITERT_OV_OS_ID=ubuntu22 / ubuntu24 সেট করুন। |
JIT NPU-এর পরিবর্তে CPU-তে চলে (কোনো Partitioned subgraph log নেই, কোনো Loaded plugin log নেই, তবুও Fully accelerated: True প্রিন্ট হয়) | কম্পাইলার প্লাগইন খুঁজে পাওয়া যায়নি। নিশ্চিত করুন যে ov.get_compiler_plugin_dir() ai_edge_litert/vendors/intel_openvino/compiler/ এর অধীনে একটি পাথ রিটার্ন করে। যদি একাধিক ভেন্ডর SDK ইনস্টল করা থাকে, তাহলে Environment.create() ফাংশনে compiler_plugin_path=ov.get_compiler_plugin_dir() স্পষ্টভাবে পাস করুন (অথবা litert-benchmark ফাংশনে --compiler_plugin_path=... ব্যবহার করুন)। |
JIT ব্যর্থ: Cannot load library .../openvino/libs/libopenvino_intel_npu_compiler.so (Linux) / openvino_intel_npu_compiler.dll (Windows) | প্রথমবার import ai_edge_litert_sdk_intel সময় SDK sdist, NPU কম্পাইলারটিকে openvino/libs/ ফোল্ডারে কপি করে। যদি কপি করার প্রক্রিয়াটি বাদ পড়ে যায় (রিড-অনলি ফাইল সিস্টেম বা openvino না থাকার কারণে), তাহলে openvino ইনস্টল করার পর ai-edge-litert-sdk-intel পুনরায় ইনস্টল করুন, এবং তারপর একটি নতুন প্রসেসে import ai_edge_litert । |
Level0 pfnCreate2 result: ZE_RESULT_ERROR_UNSUPPORTED_FEATURE | NPU ড্রাইভার v1.32.1 (Linux)-এ আপগ্রেড করুন। |
/dev/accel/accel0 খুঁজে পাওয়া যায়নি | ড্রাইভার ডিবাগ করতে sudo dmesg | grep -i vpu ; ইনস্টল করার পর রিবুট করুন। |
| এনপিইউ-তে অনুমতি প্রত্যাখ্যান করা হয়েছে | sudo gpasswd -a ${USER} render && newgrp render . |
| উইন্ডোজ: ডিভাইস ম্যানেজারে এনপিইউ নেই | ইন্টেল ডাউনলোড সেন্টার থেকে এনপিইউ ড্রাইভার 32.0.100.4724+ ইনস্টল করুন। |
উইন্ডোজ: Failed to initialize Dispatch API / ডিএলএল অনুপস্থিত | প্রথমে import ai_edge_litert চালানো নিশ্চিত করুন (এটি স্বয়ংক্রিয়ভাবে DLL ডিরেক্টরিগুলো রেজিস্টার করে); যারা পাইথন ব্যবহার করেন না, তাদের জন্য setupvars.bat চালান অথবা PATH শুরুতে <openvino>/libs যোগ করুন। |
উইন্ডোজ বিল্ড: LNK2001 fixed_address_empty_string , C2491 dllimport , Python 3.12+ fails | প্রোটোবাফ এবিআই / পাইথন সংস্করণের সীমাবদ্ধতা — ci/build_pip_package_with_bazel_windows.ps1 দেখুন; উইন্ডোজ বিল্ডের জন্য পাইথন ৩.১১ প্রয়োজন। |
সীমাবদ্ধতা
OpenVINO ডিসপ্যাচ পাথের মাধ্যমে শুধুমাত্র NPU ডিভাইসটি সমর্থিত। CPU ইনফারেন্সের জন্য, কেবল HardwareAccelerator.CPU (XNNPACK) ব্যবহার করুন।
C++ এপিআই
পূর্বশর্ত এবং বিল্ড সেটআপ
নির্মাণের পূর্বশর্ত:
- ভিজ্যুয়াল স্টুডিও ২০২২ বা উচ্চতর সংস্করণ (সি++ ডেভেলপমেন্ট টুলস ইনস্টল করা থাকতে হবে)।
- git: https://git-scm.com/install/ থেকে git ইনস্টল করুন। LiteRT/LiteRT-LM বিল্ড প্রসেসগুলো যাতে bash.exe এবং git.exe-কে খুঁজে পেতে পারে, সেজন্য আপনার সিস্টেমের PATH এনভায়রনমেন্ট ভেরিয়েবলে
C:\Program Files\Git\bin and C:\Program Files\Git\cmdঅন্তর্ভুক্ত আছে কিনা তা নিশ্চিত করুন। - bazelisk: bazelisk ইনস্টল করুন এবং আপনার সিস্টেমের
PATHএনভায়রনমেন্ট ভেরিয়েবলে এর অবস্থানটি অন্তর্ভুক্ত করুন: https://bazel.build/install/bazelisk। - Cmake: https://cmake.org/download/ থেকে Cmake সংস্করণ 4.3.0 বা তার উচ্চতর সংস্করণ ইনস্টল করুন এবং নিশ্চিত করুন যে Cmake আপনার সিস্টেমের PATH-এ অন্তর্ভুক্ত আছে।
- পাইথন: নিশ্চিত করুন যে পাইথন ৩.১১ বা তার উচ্চতর সংস্করণ ইনস্টল করা আছে এবং python.exe আপনার PATH-এ অন্তর্ভুক্ত রয়েছে।
- উইন্ডোজ সেটিংস: উইন্ডোজ সেটিংস-এর মধ্যে ডেভেলপার মোড চালু করুন।
ইন্টেল এনপিইউ-এর জন্য LiteRT টুলস এবং প্লাগইন তৈরি করুন
LiteRT ব্যবহার করে Intel NPU-তে মডেল চালানোর জন্য, সেগুলোকে LiteRT Intel OpenVINO কম্পাইলার প্লাগইন ব্যবহার করে কম্পাইল করতে হবে; অধিকন্তু, Intel NPU-তে চালানোর জন্য উদ্দিষ্ট যেকোনো কম্পাইল করা মডেলকে অবশ্যই LiteRT Intel OpenVINO ডিসপ্যাচ প্লাগইনের কাছে অর্পণ করতে হবে।
যে পদ্ধতিতে LiteRT এই প্লাগইনগুলিকে আহ্বান করে, তা পরবর্তীতে ব্যাখ্যা করা হয়েছে:

LiteRT টুলস এবং ইন্টেল প্লাগইন তৈরি করার ধাপসমূহ।
LiteRT থেকে কোনো এক্সিকিউটেবল বা লাইব্রেরি বিল্ড করার আগে, একটি লোকাল ডিরেক্টরি তৈরি করুন, যেমন, C:\bzl। বিল্ড আউটপুট বাইনারিটি এই ডিরেক্টরি থেকে সংগ্রহ করা হবে। ইন্টেল ওপেনভিনো ডিসপ্যাচ প্লাগইনটি বিল্ড করুন।
# At the top-level directory of LiteRT repository
bazelisk --output_base=C:\bzl build //litert/vendors/intel_openvino/dispatch:LiteRtDispatch --config=windows
বিকল্পভাবে, আপনি টার্গেটে একটি @litert প্রিফিক্স যোগ করে LiteRT-LM রিপোজিটরি থেকেও ডিসপ্যাচ প্লাগইনটি বিল্ড করতে পারেন। LiteRT রিপোজিটরির পরবর্তী সমস্ত টার্গেটের ক্ষেত্রেও এটি একই রকম।
# At the top-level directory of LiteRT-LM repository
bazelisk --output_base=C:\bzl build @litert//litert/vendors/intel_openvino/dispatch:LiteRtDispatch --config=windows
ইন্টেল ওপেনভিনো কম্পাইলার প্লাগইন তৈরি করুন
bazelisk --output_base=C:\bzl build //litert/vendors/intel_openvino/compiler:LiteRtCompilerPlugin --config=windows
LiteRT অ্যাহেড-অফ-টাইম (AOT) কম্পাইলার ইউটিলিটি বিল্ড করুন। কিছু LiteRT টুলের জন্য Intel NPU-তে মডেল চালানোর আগে সেগুলোর সুস্পষ্ট AOT কম্পাইলেশনের প্রয়োজন হয়। LiteRT AOT কম্পাইলার ইউটিলিটির বিল্ড নির্দেশাবলী:
bazelisk --output_base=C:\bzl build
//litert/tools:apply_plugin_main --config=windows
LiteRT মডেল রানার তৈরি করুন। LiteRT মডেল রানারটি ইন্টেল এনপিইউ-তে একটি মডেল চালানোর জন্য ব্যবহার করা যেতে পারে, তা নন-প্রিকম্পাইলড মডেল হোক বা এওটি-কম্পাইলড মডেল হোক। মডেল রানারটি তৈরি করার নির্দেশাবলী:
bazelisk --output_base=C:\bzl build //litert/tools:run_model --config=windows
LiteRT বেঞ্চমার্ক মডেল ইউটিলিটি তৈরি করুন। LiteRT মডেল বেঞ্চমার্ক টুলটি ইন্টেল এনপিইউ-তে একটি মডেলের ইনফারেন্সের পারফরম্যান্স বেঞ্চমার্ক করতে ব্যবহার করা যেতে পারে। বেঞ্চমার্ক টুলটি তৈরি করার নির্দেশাবলী:
bazelisk --output_base=C:\bzl build //litert/tools:benchmark_model --config=windows --define=protobuf_allow_msvc=true
LiteRT সংখ্যাসূচক চেক ইউটিলিটি তৈরি করুন
bazelisk --output_base=C:\bzl build //litert/tools:npu_numerics_check --config=windows
উন্নত ব্যবহার: কাস্টমাইজড ইন্টেল ওপেনভিনো এসডিকে দিয়ে বিল্ড করুন
LiteRT বিল্ড সিস্টেম কম্পাইলার এবং ডিসপ্যাচ প্লাগইন কম্পাইল করার সময় স্বয়ংক্রিয়ভাবে আগে থেকে তৈরি করা Intel OpenVINO SDK ডাউনলোড করে নেয়।
আপনার প্রোজেক্টের জন্য যদি ইন্টেল ওপেনভিনো এসডিকে-র কোনো নির্দিষ্ট বা কাস্টমাইজড সংস্করণের প্রয়োজন হয়, তাহলে প্লাগইন বিল্ড শুরু করার আগে এই অতিরিক্ত কনফিগারেশন ধাপগুলো সম্পন্ন করুন:
- https://www.intel.com/content/www/us/en/download/753640/intel-distribution-of-openvino-toolkit.html থেকে Windows-এর জন্য সর্বশেষ OpenVINO রিলিজ বাইনারিটি ডাউনলোড করুন এবং এটিকে আপনার লোকাল ডিস্কে এক্সট্র্যাক্ট করুন, যেমন,
C:\Intel\intel_openvino। - নিশ্চিত করুন যে এই পাথের অধীনে একমাত্র চাইল্ড ডিরেক্টরিটির নাম 'openvino' এবং এর মধ্যে 'runtime' ও 'include'-এর মতো সাব-ডিরেক্টরি রয়েছে।
- আপনার কনসোলে (কমান্ড প্রম্পট বা পাওয়ারশেল) ক্লোন করা LiteRT রিপোজিটরির রুট ডিরেক্টরিতে যান এবং OPENVINO_NATIVE_DIR ভেরিয়েবলটি সেট করুন (নিশ্চিত করুন যে শেষে কোনো
\`), for example:`set OPENVINO_NATIVE_DIR=C:\Intel\intel_openvino`
কাস্টম মডেলের AOT সংকলন
এই বিভাগটি LiteRT-এর জন্য কাস্টম TFLite, PyTorch বা JAX মডেলের পরিবেশ প্রস্তুত করে এবং AOT কম্পাইলেশন সম্পাদন করে।
ইন্টেল এনপিইউ-এর জন্য মডেল কম্পাইলেশন প্রক্রিয়ার সময়, LiteRT তার ইন্টেল ওপেনভিনো কম্পাইলার প্লাগইন দ্বারা সমর্থিত অপারেটরগুলোর সাথে মডেল গ্রাফটিকে যাচাই করে। যে অপারেটর বা সাবগ্রাফগুলো কম্পাইলার প্লাগইনের সাথে সামঞ্জস্যপূর্ণ, LiteRT সেগুলোর প্রত্যেকটিকে একটি DISPATCH_OP-এ কম্পাইল করে, যা পরবর্তীতে গ্রাফের মধ্যে মূল সাবগ্রাফটিকে প্রতিস্থাপন করে। ইন্টেল ওপেনভিনো কম্পাইলারের সমর্থিত অপসেটে অন্তর্ভুক্ত নয় এমন অপারেটরগুলো গ্রাফের মধ্যে অপরিবর্তিত থাকে। ফলস্বরূপ, AOT কম্পাইলেশনের ফলে একটি সম্পূর্ণ-ডেলেগেটেড অথবা একটি আংশিক-ডেলেগেটেড মডেল তৈরি হতে পারে। এখানে একটি সম্পূর্ণ-ডেলেগেটেড AOT-কম্পাইল করা মডেলের উদাহরণ দেওয়া হলো:

LiteRT apply_plugin_main ইউটিলিটি (apply_plugin_main.exe) হলো একটি AOT কম্পাইলেশন ইউটিলিটি যা আপনি এই উদ্দেশ্যে ব্যবহার করতে পারেন। ইন্টেল প্ল্যাটফর্মে ইউটিলিটিটির একটি নমুনা ব্যবহার নিচে দেওয়া হলো:
.\apply_plugin_main.exe -cmd apply --model="C:\models\model.tflite" -o C:\models\model_aot.tflite --soc_model=PTL --soc_manufacturer "IntelOpenVINO" --libs C:\litertlibs
অনুগ্রহ করে মনে রাখবেন যে, ইন্টেল কোর আল্ট্রা সিরিজ ২ এবং এর পরবর্তী এসওসি-গুলোর জন্য ডিফল্ট অন্তর্নিহিত এনপিইউ কম্পাইলার ব্যবহার করা হয়, যা ইন্টেল ওপেনভিনো এসডিকে-এর বাইনারি ডিস্ট্রিবিউশনের সাথে অন্তর্ভুক্ত থাকে। যদি কোনো মডেল সমর্থিত তালিকায় নেই এমন কোনো এনপিইউ-এর জন্য কম্পাইল করা হয়, তবে কম্পাইলারের ধরন অবশ্যই স্পষ্টভাবে উল্লেখ করতে হবে (যদিও ইন্টেল কোর আল্ট্রা ২ এবং এর পরবর্তী সংস্করণগুলোর জন্য এটি ঐচ্ছিক থাকে)।
set IE_NPU_COMPILER_TYPE=PLUGIN
আপনার অ্যাপ্লিকেশনে JIT বনাম AOT কম্পাইলেশন
আপনার নিজের LiteRT অ্যাপ্লিকেশনে মডেল কম্পাইল করার জন্য দুটি পদ্ধতি রয়েছে: AOT কম্পাইলেশন, যা আমরা আগেই আলোচনা করেছি, এবং জাস্ট-ইন-টাইম (JIT) কম্পাইলেশন।
AOT কম্পাইলেশনের মাধ্যমে, মডেলটি ডেপ্লয়মেন্টের আগে অফলাইনে কম্পাইল করা হয় এবং পরবর্তী ব্যবহারের জন্য সংরক্ষণ করা যায় — এটি সাধারণত তখন ব্যবহৃত হয় যখন কম্পাইলেশন ডিভাইসে চালানোর জন্য খুব বেশি রিসোর্স-ইনটেনসিভ হয়। যে ডিভাইসে আপনি মডেলটি ডেপ্লয় করছেন, সেই একই ডিভাইসে এটি করার প্রয়োজন নেই। আপনার কোডে AOT কম্পাইলেশনের একটি উদাহরণ:
void AotCompileForOpenVINO() {
auto run = std::make_unique<ApplyPluginRun>();
// Full pipeline: partition → compile → embed bytecode in .tflite
run->cmd = ApplyPluginRun::Cmd::APPLY;
// Path to directory containing LiteRtComplilerPlugin.dll
run->lib_search_paths.push_back("/path/to/plugin/dir/");
// Input model
run->model.emplace("model.tflite");
// Intel OpenVINO target
run->soc_manufacturer.emplace("IntelOpenVINO");
run->soc_models.push_back("PTL"); // or "LNL"
// Output stream for the AOT-compiled model
std::stringstream compiled_output;
run->outs.push_back(compiled_output);
// Run AOT compilation
auto status = ApplyPlugin(std::move(run));
// compiled_output now contains .tflite with embedded OpenVINO bytecode
}
AOT-কম্পাইল করা মডেল দিয়ে ইনফারেন্স করার পদ্ধতি:
void RunAotCompiledModel() {
auto env = litert::Environment::Create({}).value();
// Load AOT-compiled model, still must specify NPU accelerator
auto compiled_model = litert::CompiledModel::Create(
env, "model_aot.tflite", litert::HwAccelerators::kNpu).value();
auto input_buffers = compiled_model.CreateInputBuffers().value();
auto output_buffers = compiled_model.CreateOutputBuffers().value();
input_buffers[0].Write<float>({/* data */});
compiled_model.Run(input_buffers, output_buffers);
}
বিকল্প পদ্ধতিটি হলো ডিভাইসে রানটাইমে মডেলটিকে JIT কম্পাইল করা। এটি আরও নমনীয়: এর জন্য শুধুমাত্র একটি ব্যাকএন্ড-নিরপেক্ষ মডেল ফাইলের প্রয়োজন হয়।
// Create environment
auto env = litert::Environment::Create({}).value();
// JIT compile for NPU
auto compiled_model = litert::CompiledModel::Create(
env, "model.tflite", litert::HwAccelerators::kNpu).value();
// Create I/O buffers
auto input_buffers = compiled_model.CreateInputBuffers().value();
auto output_buffers = compiled_model.CreateOutputBuffers().value();
// Fill inputs
input_buffers[0].Write<float>({/* input data */});
// Run inference
compiled_model.Run(input_buffers, output_buffers);
benchmark_model দিয়ে বেঞ্চমার্ক করুন
LiteRT benchmark_model ইউটিলিটি (benchmark_model.exe) বিশেষভাবে NPU-তে একটি AOT-কম্পাইল করা মডেলের বেঞ্চমার্কিং করার জন্য ডিজাইন করা হয়েছে, এবং LiteRT-এ CPU ব্যাকএন্ড (XNNPack)-এর সাথে পারফরম্যান্স তুলনা করার জন্য এটি ব্যবহার করা যেতে পারে। ইন্টেল NPU-তে একটি AOT-কম্পাইল করা মডেলের বেঞ্চমার্কিং করার জন্য উদাহরণ কমান্ড:
.\benchmark_model.exe --graph=C:\models\model_aot.tflite --use_npu=true --compiler_plugin_library_path=C:\litertlib --dispatch_library_path=C:\litertlib --compiler_cache_path=C:\models
npu_numerics_check দিয়ে নির্ভুলতা যাচাই
npu_numerics_check ইউটিলিটিটি একটি বেসলাইনের (সাধারণত সিপিইউ ব্যাকএন্ড, XNNPack) সাপেক্ষে এনপিইউ-কম্পাইল করা মডেলের সাংখ্যিক নির্ভুলতা যাচাই করতে ব্যবহৃত হয়। এনপিইউ-এর উপর দায়িত্ব অর্পণের ফলে যেন এমন কোনো অগ্রহণযোগ্য সাংখ্যিক বিচ্যুতি তৈরি না হয় যা মডেলের গুণমানকে প্রভাবিত করতে পারে, তা নিশ্চিত করার জন্য এই ধাপটি অত্যন্ত গুরুত্বপূর্ণ।
সংখ্যাগত যাচাই চালান। ইউটিলিটিটির জন্য AOT-কম্পাইল করা মডেলটি প্রয়োজন এবং এটি সিপিইউ-তে চালিত মূল, নন-ডেলেগেটেড মডেলের সাথে এর আউটপুট তুলনা করে।
.\npu_numerics_check.exe --npu_model=C:\models\model_aot.tflite --cpu_model=C:\models\model.tflite --dispatch_library_path=C:\litertlib
পরবর্তী পদক্ষেপ
- একীভূত NPU নির্দেশিকা দিয়ে শুরু করুন: LiteRT-এর সাহায্যে NPU অ্যাক্সিলারেশন
- সেখানে দেওয়া রূপান্তর এবং স্থাপনের ধাপগুলো অনুসরণ করুন এবং যেখানে প্রযোজ্য সেখানে কোয়ালকম (Qualcomm) নির্বাচন করুন।
- LLM-এর জন্য, LiteRT-LM ব্যবহার করে NPU-তে LLM এক্সিকিউট করুন দেখুন।