LiteRT รองรับ Intel OpenVino ผ่าน API CompiledModel สำหรับการคอมไพล์ AOT และการคอมไพล์ในอุปกรณ์
ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์
Linux (x86_64)
- Ubuntu 22.04 หรือ 24.04 LTS
- Python 3.10 ขึ้นไป - ติดตั้งจาก python.org
หรือ distro (
sudo apt install python3 python3-venv) - ไดรเวอร์ Intel NPU v1.32.1 - ดูการตั้งค่า NPU ใน Linux
Windows (x86_64)
- Windows 10 หรือ 11
- Python 3.10 ขึ้นไป - ติดตั้งจาก python.org
- ไดรเวอร์ Intel NPU 32.0.100.4724+ - ดู การตั้งค่า NPU ใน Windows
หากต้องการสร้างจากซอร์ส คุณต้องใช้ Bazel 7.4.1 ขึ้นไปโดยใช้ Bazelisk หรือการสร้าง Docker แบบ Hermetic
SoC ที่รองรับ
| แพลตฟอร์ม | NPU | ชื่อเวอร์ชัน | ระบบปฏิบัติการ |
|---|---|---|---|
| Intel Core Ultra Series 2 | NPU4000 | Lunar Lake (LNL) | Linux, Windows |
| Intel Core Ultra Series 3 | NPU5010 | Panther Lake (PTL) | Linux, Windows |
คู่มือเริ่มต้นฉบับย่อ
1. ติดตั้งไดรเวอร์ NPU
ดูการตั้งค่า NPU ใน Linux หรือ การตั้งค่า NPU ใน Windows ข้ามขั้นตอนนี้หากคุณต้องการใช้ AOT เท่านั้น
คุณต้องใช้ไดรเวอร์ NPU ในระบบที่เรียกใช้ โมเดลในฮาร์ดแวร์ NPU เท่านั้น ระบบที่สร้าง AOT อย่างเดียวสามารถข้ามขั้นตอนนี้ได้
หมายเหตุ:
ai-edge-litert-sdk-intel-nightlyจะปักหมุดวงล้อ OpenVINO Nightly ที่ตรงกันตามเวอร์ชัน PEP 440 (เช่นopenvino==2026.2.0.dev20260506) ดังนั้น pip จึงต้องใช้--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightlyเพื่อค้นหาวงล้อดังกล่าว ใน Linux หากการตรวจหาอัตโนมัติของ distro เลือกไฟล์เก็บถาวรที่ไม่ถูกต้อง ให้ตั้งค่าLITERT_OV_OS_ID=ubuntu22หรือubuntu24ก่อนpip install
2. สร้างสภาพแวดล้อมเสมือนของ Python
ขอแนะนำให้แยกวงล้อ openvino Nightly ออกจากการติดตั้ง 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
3. ติดตั้งแพ็กเกจ 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 แก้ไขวงล้อ openvino Nightly ที่ปักหมุดจากดัชนีของ OpenVINO พร้อมกับแพ็กเกจใน PyPI
4. ยืนยันการติดตั้ง
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) ซึ่งจำเป็นสำหรับ AOTAvailable devicesมีNPUซึ่งยืนยันว่าได้ติดตั้งไดรเวอร์ NPU แล้วและ OpenVINO สามารถสื่อสารกับอุปกรณ์ได้NPUจะไม่ปรากฏในระบบที่ใช้ AOT อย่างเดียว (ซึ่งไม่ได้ติดตั้งไดรเวอร์) และในระบบที่ไม่มีฮาร์ดแวร์ Intel NPU
5. คอมไพล์ AOT (ไม่บังคับ)
- คอมไพล์ล่วงหน้า
.tfliteสำหรับเป้าหมาย Intel NPU ที่เฉพาะเจาะจง (PTL หรือ LNL) เพื่อให้รันไทม์ข้ามขั้นตอนปลั๊กอินคอมไพเลอร์ - ไม่ จำเป็นต้องใช้ NPU จริงหรือไดรเวอร์ NPU แต่ต้องใช้
ai-edge-litert-nightlyและai-edge-litert-sdk-intel-nightly - ระบบรองรับการคอมไพล์แบบข้ามระบบ: คอมไพล์แบบข้ามระบบในโฮสต์ Linux หรือ Windows แล้วส่ง
.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)
6. เรียกใช้การอนุมาน NPU
LiteRT รองรับเส้นทางการอนุมาน 2 เส้นทางใน Intel NPU ดังนี้
- JIT \- โหลด
.tfliteดิบ โดยปลั๊กอินคอมไพเลอร์จะแบ่งพาร์ติชันและคอมไพล์ Op ที่รองรับสำหรับ NPU ในเวลาCompiledModel.from_file()เพิ่มเวลาในการตอบสนองในการเรียกใช้ครั้งแรก (แตกต่างกันไปตามโมเดล) - คอมไพล์ AOT \- โหลด
<model>_IntelOpenVINO_<SoC>_apply_plugin.tfliteที่สร้างขึ้นในขั้นตอนที่ 4 ข้ามขั้นตอนการแบ่งพาร์ติชันและการคอมไพล์ในเวลาที่ใช้ในการโหลด
ข้อมูลโค้ดนี้ใช้ได้กับทั้ง 2 อย่าง
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 ใน Linux และ .dll ใน Windows)
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 แสดงว่าโมเดลทำงานใน XNNPACK CPU Fallback ไม่ใช่ใน NPU โปรดดูแถวการแก้ปัญหา JIT
7. เปรียบเทียบ
# 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 |
first | คีย์ Signature ที่จะเรียกใช้ |
--use_cpu / --no_cpu
|
เปิด | สลับตัวเร่ง CPU / CPU Fallback |
--use_gpu |
ปิด | เปิดใช้ตัวเร่ง GPU |
--use_npu |
ปิด | เปิดใช้ตัวเร่ง Intel NPU |
--require_full_delegation
|
ปิด | ล้มเหลวหากไม่ได้โหลดโมเดลไปยังตัวเร่งที่เลือกอย่างเต็มที่ |
--num_runs N
|
50 | จำนวนการทำซ้ำการอนุมานที่กำหนดเวลา |
--warmup_runs N
|
5 | การทำซ้ำการวอร์มอัปที่ไม่ได้กำหนดเวลาไว้ก่อนการวัด |
--num_threads N |
1 | จำนวนเธรด CPU |
--result_json PATH
|
— | เขียนข้อมูลสรุป JSON (สถิติเวลาในการตอบสนอง, อัตราการส่งข้อมูล, รายการตัวเร่ง) |
--verbose |
ปิด | การบันทึกรันไทม์เพิ่มเติม |
แฟล็กขั้นสูง / การลบล้าง - จำเป็นเฉพาะเมื่อชี้ไปที่บิลด์ที่กำหนดเองเท่านั้น: --dispatch_library_path, --compiler_plugin_path, --runtime_path
วงล้อของผู้ให้บริการหลายราย: ปักหมุด JIT ไปที่ Intel OV
หมายเหตุ: เมื่อเรียกใช้
Environment.create()โดยไม่มีเส้นทางที่ชัดเจน ระบบจะค้นหาผู้ให้บริการโดยอัตโนมัติภายใต้ai_edge_litert/vendors/ตามลำดับตัวอักษรและลงทะเบียนผู้ให้บริการรายแรกที่พบ ในการติดตั้งของผู้ให้บริการหลายราย ผู้ให้บริการรายแรกที่พบอาจไม่ใช่ Intel OV ดังนั้นให้ส่งไดเรกทอรี Intel OV อย่างชัดเจนเพื่อบังคับให้เลือกผู้ให้บริการที่ถูกต้อง
- วงล้อ pip จะจัดส่งปลั๊กอินคอมไพเลอร์สำหรับผู้ให้บริการที่ลงทะเบียนทุกราย (
intel_openvino/,google_tensor/,mediatek/,qualcomm/,samsung/) - หากต้องการบังคับใช้เส้นทาง Intel OV (แนะนำเมื่อติดตั้ง SDK ของผู้ให้บริการหลายราย) ให้ส่งไดเรกทอรี Intel OV ด้วยตนเองดังนี้
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/ จะโหลดเฉพาะปลั๊กอิน Intel เท่านั้น ระบบจะไม่แตะต้องปลั๊กอิน Google Tensor / MediaTek / Qualcomm / Samsung ในไดเรกทอรีระดับเดียวกัน
สำหรับ 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
ยืนยันการเรียกใช้ NPU
หากต้องการยืนยันว่าโมเดลทำงานใน NPU จริง ให้ตรวจสอบสัญญาณทั้ง 2 รายการต่อไปนี้
- บันทึกมี
Loading shared library: .../LiteRtDispatch_IntelOpenvino.{so,dll}ซึ่งหมายความว่าได้โหลดไลบรารีการส่ง Intel แล้ว (.soใน Linux,.dllใน Windows) model.is_fully_accelerated()แสดงTrueซึ่งหมายความว่าได้โหลด Op ทั้งหมดไปยังตัวเร่งที่เลือกแล้ว
is_fully_accelerated() เพียงอย่างเดียวไม่ เพียงพอ หากไม่ได้โหลดไลบรารีการส่ง Op จะโหลดไปยัง XNNPACK/CPU อย่างเต็มที่ ไม่ใช่ NPU
การตั้งค่า NPU ใน Linux
หมายเหตุ: ข้ามส่วนนี้หากคุณต้องการใช้ 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
จากนั้นเรียกใช้ข้อมูลโค้ดการติดตั้งและการยืนยันจาก คู่มือเริ่มต้นฉบับย่อ
การตั้งค่า NPU ใน Windows
หมายเหตุ: ข้ามส่วนนี้หากคุณต้องการใช้ AOT เท่านั้น เนื่องจากไม่จำเป็นต้องใช้ NPU จริง
- ติดตั้งไดรเวอร์ Intel NPU (32.0.100.4724+) จาก ศูนย์ดาวน์โหลดของ Intel
- ตรวจสอบว่าโปรแกรมจัดการอุปกรณ์แสดงรายการอุปกรณ์ NPU ในส่วนโปรเซสเซอร์ระบบประสาท (แสดงเป็น
Intel(R) AI BoostหรือIntel(R) NPUขึ้นอยู่กับไดรเวอร์) - เรียกใช้ข้อมูลโค้ดการติดตั้งและการยืนยันจาก คู่มือเริ่มต้นฉบับย่อ โดยแทนที่
pipด้วยpython -m pip
ข้อมูล:
import ai_edge_litertจะลงทะเบียนไดเรกทอรี DLL โดยอัตโนมัติโดยใช้os.add_dll_directory()ดังนั้นสคริปต์ Python จึงไม่จำเป็นต้องตั้งค่าPATHสำหรับผู้ใช้ที่ไม่ใช่ Python ให้เรียกใช้setupvars.batหรือเพิ่ม<openvino>/libsไว้ข้างหน้าPATH
สร้างจากซอร์ส
ใช้พร็อกซีอยู่ใช่ไหม ส่งออก
http_proxy/https_proxy/no_proxyก่อนเรียกใช้สคริปต์บิลด์ เนื่องจากสคริปต์จะส่งต่อข้อมูลเหล่านี้ไปยัง Docker และคอนเทนเนอร์
Linux (Docker, Hermetic)
cd LiteRT/docker_build && ./build_wheel_with_docker.sh
Windows (PowerShell, Bazel ใน PATH)
.\ci\build_pip_package_with_bazel_windows.ps1
เอาต์พุตจะอยู่ใน dist/ ดังนี้
ai_edge_litert-*.whl\- วงล้อรันไทม์ai_edge_litert_sdk_{intel,qualcomm,mediatek,samsung}-*.tar.gz\- sdist ของผู้ให้บริการ- sdist ของ Intel มีขนาดประมาณ 5 KB ระบบจะดึงข้อมูลคอมไพเลอร์ NPU
.so/.dllในเวลาpip installดังนั้น sdist เดียวกันจึงทำงานใน Linux และ Windows ได้
การทำ Unit Test
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 ทำงานใน CPU แทนที่จะเป็น NPU (ไม่มีบันทึก Partitioned subgraph, ไม่มีบันทึก Loaded plugin, ระบบยังคงพิมพ์ Fully accelerated: True) |
ไม่พบปลั๊กอินคอมไพเลอร์ ตรวจสอบว่า ov.get_compiler_plugin_dir() แสดงเส้นทางภายใต้ ai_edge_litert/vendors/intel_openvino/compiler/ หากติดตั้ง SDK ของผู้ให้บริการหลายราย ให้ส่ง compiler_plugin_path=ov.get_compiler_plugin_dir() อย่างชัดเจนไปยัง Environment.create() (หรือ --compiler_plugin_path=... ไปยัง litert-benchmark) |
JIT ล้มเหลว: Cannot load library .../openvino/libs/libopenvino_intel_npu_compiler.so (Linux) / openvino_intel_npu_compiler.dll (Windows) |
sdist ของ SDK จะคัดลอกคอมไพเลอร์ NPU ไปยัง openvino/libs/ เมื่อ import ai_edge_litert_sdk_intel ครั้งแรก หากระบบข้ามการคัดลอก (FS แบบอ่านอย่างเดียว, ไม่มี openvino) ให้ติดตั้ง ai-edge-litert-sdk-intel อีกครั้งหลังจากติดตั้ง openvino แล้ว จากนั้น 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 เพื่อแก้ไขข้อบกพร่องของไดรเวอร์ และรีบูตหลังการติดตั้ง |
| สิทธิ์ถูกปฏิเสธใน NPU | sudo gpasswd -a ${USER} render && newgrp render. |
| Windows: NPU ไม่อยู่ในตัวจัดการอุปกรณ์ | ติดตั้งไดรเวอร์ NPU 32.0.100.4724+ จาก ศูนย์ดาวน์โหลดของ Intel |
Windows: Failed to initialize Dispatch API / DLL หายไป |
ตรวจสอบว่า import ai_edge_litert ทำงานก่อน (ลงทะเบียนไดเรกทอรี DLL โดยอัตโนมัติ) สำหรับผู้เรียกที่ไม่ใช่ Python ให้เรียกใช้ setupvars.bat หรือเพิ่ม <openvino>/libs ไว้ข้างหน้า PATH |
บิลด์ Windows: LNK2001 fixed_address_empty_string, C2491 dllimport, Python 3.12+ fails |
ข้อจำกัดเวอร์ชัน Protobuf ABI / Python - ดู ci/build_pip_package_with_bazel_windows.ps1 บิลด์ Windows ต้องใช้ Python 3.11 |
ข้อจำกัด
ระบบรองรับเฉพาะอุปกรณ์ NPU ผ่านเส้นทางการส่ง OpenVINO สำหรับการอนุมาน CPU ให้ใช้ HardwareAccelerator.CPU อย่างเดียว (XNNPACK)
ขั้นตอนถัดไป
- เริ่มต้นด้วยคู่มือ NPU แบบรวม: การเร่ง NPU ด้วย LiteRT
- ทำตามขั้นตอนการแปลงและการติดตั้งใช้งานที่นั่น โดยเลือก Qualcomm เมื่อมี
- สำหรับ LLM โปรดดู เรียกใช้ LLM ใน NPU โดยใช้ LiteRT-LM