Intel NPU (OpenVino) me LiteRT

LiteRT mbështet Intel OpenVino përmes CompiledModel API si për kompilimin AOT ashtu edhe për atë në pajisje.

Konfiguroni mjedisin e zhvillimit

Linux (x86_64):

  • Ubuntu 22.04 ose 24.04 LTS
  • Python 3.10+ — instalojeni nga python.org ose nga shpërndarja juaj ( sudo apt install python3 python3-venv )
  • Drajveri Intel NPU v1.32.1 — shihni Konfigurimi i NPU Linux

Windows (x86_64):

Për ndërtimin nga burimi, kërkohet gjithashtu Bazel 7.4.1+ duke përdorur Bazelisk ose ndërtimin hermetik Docker.

SoC-të e mbështetura

Platforma NPU Emri i koduar Sistemi operativ
Intel Core Ultra Series 2 NPU4000 Liqeni Hënor (LNL) Linux, Windows
Intel Core Ultra Series 3 NPU5010 Liqeni Panther (PTL) Linux, Windows

Fillimi i shpejtë

1. Instaloni Drajverët e NPU-së

Shihni Konfigurimi i NPU-së së Linux-it ose Konfigurimi i NPU-së së Windows-it . Kapërcejeni nëse ju nevojitet vetëm AOT.

Drajveri NPU nevojitet vetëm në sistemet që e ekzekutojnë modelin në harduerin NPU. Sistemet e ndërtuara vetëm me AOT mund ta anashkalojnë atë.

Shënim: ai-edge-litert-sdk-intel-nightly e fikson rrotën përkatëse të OpenVINO nightly sipas versionit PEP 440 (p.sh. openvino==2026.2.0.dev20260506 ), kështu që pip-it i duhet --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly për ta gjetur atë. Në Linux, nëse zbulimi automatik i shpërndarjes zgjedh arkivin e gabuar, vendosni LITERT_OV_OS_ID=ubuntu22 ose ubuntu24 para pip install .

2. Krijoni një mjedis virtual në Python

Rekomandohet që rrota openvino e natës të mbahet e izoluar nga çdo instalim i OpenVINO në të gjithë sistemin.

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. Instaloni paketën 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 lejon që pip të zgjidhë rrotën e fiksuar openvino nightly nga indeksi i OpenVINO së bashku me paketat në PyPI.

4. Verifikoni instalimin

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)
"

Çfarë duhet të kontrolloni në rezultat:

  • SDK libs liston libopenvino_intel_npu_compiler.so (Linux) ose openvino_intel_npu_compiler.dll (Windows) — e nevojshme për AOT.
  • Available devices përfshijnë NPU — konfirmon që drajveri NPU është instaluar dhe OpenVINO mund të komunikojë me pajisjen. NPU do të mungojë në sistemet vetëm me AOT (ku drajveri nuk është i instaluar) dhe në sistemet pa harduerin Intel NPU.

5. Kompilimi i AOT (Opsional)

  • Kompilon paraprakisht një .tflite për një objektiv specifik të NPU-së Intel (PTL ose LNL) në mënyrë që koha e ekzekutimit të anashkalojë hapin e plugin-it të kompajlerit.
  • Nuk ka nevojë për një NPU fizike ose për drajverin e NPU-së — vetëm ai-edge-litert-nightly dhe ai-edge-litert-sdk-intel-nightly .
  • Mbështetet kompilimi i kryqëzuar: kompilojeni në çdo host Linux ose Windows, dërgoni skedarin .tflite që rezulton në një objektiv të njërit prej sistemeve operative dhe ekzekutojeni atje.

Skedarët e daljes emërtohen <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. Ekzekutoni NPU Inference

LiteRT mbështet dy rrugë përfundimi në NPU-në Intel:

  • JIT — ngarkon një .tflite të papërpunuar; shtojca e kompiluesit ndan dhe kompilon operacionet e mbështetura për NPU-në në kohën CompiledModel.from_file() . Shton pak vonesë gjatë ekzekutimit të parë (ndryshon sipas modelit).
  • AOT-kompiluar — ngarkoni një <model>_IntelOpenVINO_<SoC>_apply_plugin.tflite të prodhuar nga hapi 4. Anashkaloni hapin e ndarjes dhe kompilimit në kohën e ngarkimit.

Ky fragment funksionon për të dyja:

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())

Konfirmo që JIT u zhvillua në të vërtetë

Kur JIT ka sukses, regjistri përmban (pushimi i skedarit është .so në Linux, .dll në 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...

Nëse këto rreshta mungojnë, por raportohet ende Fully accelerated: True , modeli është ekzekutuar në rezervën e CPU-së XNNPACK, jo në NPU — shihni rreshtin e zgjidhjes së problemeve të JIT.

7. Pika referuese

# Dispatch library and the NPU compiler are auto-discovered from the wheel.
litert-benchmark --model=model.tflite --use_npu --num_runs=50

Flamuj të zakonshëm:

Flamuri Parazgjedhur Përshkrimi
--model PATH Shtegu për në modelin .tflite (i detyrueshëm).
--signature KEY i pari Çelësi i nënshkrimit për t'u ekzekutuar.
--use_cpu / --no_cpu Aktivizo/çaktivizo përshpejtuesin e CPU-së / opsionin rezervë të CPU-së.
--use_gpu fikur Aktivizo përshpejtuesin e GPU-së.
--use_npu fikur Aktivizo përshpejtuesin e NPU-së Intel.
--require_full_delegation fikur Dështon nëse modeli nuk është shkarkuar plotësisht në përshpejtuesin e zgjedhur.
--num_runs N 50 Numri i përsëritjeve të konkluzionit të kohëzuar.
--warmup_runs N 5 Përsëritje të ngrohjes pa kohë para matjes.
--num_threads N 1 Numri i fijeve të CPU-së.
--result_json PATH Shkruani një përmbledhje JSON (statistikat e vonesës, throughput-i, lista e përshpejtuesve).
--verbose fikur Regjistrim shtesë në kohën e ekzekutimit.

Flamuj të avancuar/mbivendosës — nevojiten vetëm për të treguar ndërtime të personalizuara: --dispatch_library_path , --compiler_plugin_path , --runtime_path .

Rrota me shitës të përzier: fiksimi i JIT në Intel OV

Shënim: Kur Environment.create() thirret pa shtigje të qarta, ajo zbulon automatikisht shitësit nën ai_edge_litert/vendors/ në rend alfabetik dhe regjistron të parin që gjen. Në një instalim me shitës të përzier, ky mund të mos jetë Intel OV — kaloni direktoritë Intel OV në mënyrë të qartë për të detyruar zgjedhjen e duhur.

  • Rrota pip ofron shtojca përpiluesish për çdo shitës të regjistruar ( intel_openvino/ , google_tensor/ , mediatek/ , qualcomm/ , samsung/ ).
  • Për të detyruar shtegun Intel OV (rekomandohet kur instalohen SDK të shumëfishta nga shitës), kaloni manualisht drejtoritë 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,
)

Koha e ekzekutimit ngarkon çdo bibliotekë të përbashkët që gjen në direktorinë e dhënë, kështu që drejtimi te vendors/intel_openvino/compiler/ ngarkon vetëm shtojcën Intel; shtojcat Google Tensor / MediaTek / Qualcomm / Samsung në direktoritë simotra nuk preken kurrë.

Për CLI, flamujt ekuivalentë janë:

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

Verifikoni Ekzekutimin e NPU-së

Për të konfirmuar që modeli ka funksionuar në të vërtetë në NPU, kontrolloni të dy sinjalet:

  1. Regjistri përmban Loading shared library: .../LiteRtDispatch_IntelOpenvino.{so,dll} — biblioteka e shpërndarjes së Intel u ngarkua ( .so në Linux, .dll në Windows).
  2. model.is_fully_accelerated() kthen True — çdo operacion u transferua te përshpejtuesi i zgjedhur.

is_fully_accelerated() vetëm nuk është e mjaftueshme: nëse biblioteka e dërgimit nuk është ngarkuar kurrë, operacionet janë shkarkuar plotësisht në XNNPACK/CPU, jo në NPU.


Konfigurimi i NPU-së në Linux

Shënim: Anashkalojeni këtë seksion nëse ju nevojitet vetëm AOT — nuk kërkohet një NPU fizike.

Informacion: Përdorni drajverin NPU v1.32.1 (të çiftëzuar me OpenVINO 2026.1). Drajverët më të vjetër dështojnë me 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

Pastaj ekzekutoni fragmentin e instalimit + verifikimit nga Quick Start .


Konfigurimi i NPU-së së Windows

Shënim: Anashkalojeni këtë seksion nëse ju nevojitet vetëm AOT — nuk kërkohet një NPU fizike.

  • Instaloni drajverin Intel NPU ( 32.0.100.4724+ ) nga Qendra e Shkarkimeve të Intel .
  • Verify Device Manager e rendit pajisjen NPU nën Procesorët Neural (të shfaqur si Intel(R) AI Boost ose Intel(R) NPU në varësi të drajverit).
  • Ekzekutoni fragmentin install + verify nga Quick Start , duke zëvendësuar pip me python -m pip .

Informacion: import ai_edge_litert regjistron automatikisht drejtoritë DLL duke përdorur os.add_dll_directory() , kështu që skriptet Python nuk kanë nevojë për konfigurimin PATH . Për konsumatorët që nuk përdorin Python, ekzekutoni setupvars.bat ose vendosni <openvino>/libs para PATH .


Ndërto nga Burimi

Pas një proxy-je? Eksportoni http_proxy / https_proxy / no_proxy përpara se të ekzekutoni skriptet e ndërtimit — ato i përcillnin këto në Docker dhe në kontejner.

Linux (Docker, hermetik):

cd LiteRT/docker_build && ./build_wheel_with_docker.sh

Windows (PowerShell, Bazel në PATH):

.\ci\build_pip_package_with_bazel_windows.ps1

Daljet dalin në dist/ :

  • ai_edge_litert-*.whl — rrota e kohës së ekzekutimit.
  • ai_edge_litert_sdk_{intel,qualcomm,mediatek,samsung}-*.tar.gz — shitës sdists.
  • Sdisti i Intel është ~5 KB; kompiluesi NPU .so / .dll merret në kohën pip install , kështu që i njëjti sdist funksionon në Linux dhe Windows.

Testet e Njësisë

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

Zgjidhja e problemeve

Çështje Rregullo
AOT dështon: Device with "NPU" name is not registered Kompiluesi NPU nuk u mor. Kontrolloni listat e ai_edge_litert_sdk_intel.path_to_sdk_libs() libopenvino_intel_npu_compiler.so / .dll . Nëse është bosh, riinstaloni me akses në rrjet ose vendosni LITERT_OV_OS_ID=ubuntu22 / ubuntu24 .
JIT funksionon në CPU në vend të NPU (pa regjistër Partitioned subgraph , pa regjistër të Loaded plugin , Fully accelerated: True ende e shtypur) Shtojca e kompiluesit nuk u zbulua. Konfirmo që ov.get_compiler_plugin_dir() kthen një shteg nën ai_edge_litert/vendors/intel_openvino/compiler/ . Nëse janë instaluar SDK të shumë shitësve, kalojeni compiler_plugin_path=ov.get_compiler_plugin_dir() në mënyrë të qartë te Environment.create() (ose --compiler_plugin_path=... te litert-benchmark ).
JIT dështon: Cannot load library .../openvino/libs/libopenvino_intel_npu_compiler.so (Linux) / openvino_intel_npu_compiler.dll (Windows) SDK sdist kopjon kompilatorin NPU në openvino/libs/import ai_edge_litert_sdk_intel . Nëse kopja është anashkaluar (FS vetëm për lexim, mungon openvino ), riinstaloni ai-edge-litert-sdk-intel pasi të instalohet openvino , pastaj import ai_edge_litert në një proces të ri.
Level0 pfnCreate2 result: ZE_RESULT_ERROR_UNSUPPORTED_FEATURE Përditësoni drajverin e NPU-së në v1.32.1 (Linux).
/dev/accel/accel0 nuk u gjet sudo dmesg | grep -i vpu për të debuguar drajverin; rinisni pas instalimit.
Leja e mohuar në NPU është përdorur. sudo gpasswd -a ${USER} render && newgrp render .
Windows: NPU nuk është në Device Manager. Instaloni drajverin NPU 32.0.100.4724+ nga Qendra e Shkarkimeve të Intel .
Windows: Failed to initialize Dispatch API / mungojnë DLL-të Sigurohuni që import ai_edge_litert të ekzekutohet i pari (regjistron automatikisht direktoritë DLL); për thirrësit jo-Python, ekzekutoni setupvars.bat ose vendosni <openvino>/libs para PATH .
Ndërtimi i Windows: LNK2001 fixed_address_empty_string , C2491 dllimport , Python 3.12+ fails Kufizimi i versionit Protobuf ABI / Python — shih ci/build_pip_package_with_bazel_windows.ps1 ; Ndërtimet e Windows kërkojnë Python 3.11.

Kufizime

Vetëm pajisja NPU mbështetet përmes rrugës së dërgimit OpenVINO. Për përfundimin e CPU-së, përdorni vetëm HardwareAccelerator.CPU (XNNPACK).

Hapat e ardhshëm

  1. Filloni me udhëzuesin e unifikuar të NPU-së: Përshpejtimi i NPU-së me LiteRT
  2. Ndiqni hapat e konvertimit dhe vendosjes atje, duke zgjedhur Qualcomm aty ku është e aplikueshme.
  3. Për LLM-të, shihni Ekzekutimi i LLM-ve në NPU duke përdorur LiteRT-LM .