LiteRT supporta Intel OpenVino tramite l'API CompiledModel
per la compilazione AOT e on-device.
Configura l'ambiente di sviluppo
Linux (x86_64):
- Ubuntu 22.04 o 24.04 LTS
- Python 3.10+ - installa da python.org
o dalla tua distribuzione (
sudo apt install python3 python3-venv) - Driver NPU Intel v1.32.1: vedi Configurazione della NPU Linux
Windows (x86_64):
- Windows 10 o 11
- Python 3.10+ - installa da python.org
- Driver NPU Intel 32.0.100.4724+. Vedi Configurazione della NPU di Windows
Per la compilazione dal codice sorgente, è necessario anche Bazel 7.4.1+ che utilizza Bazelisk o la build Docker ermetica.
SoC supportati
| Piattaforma | NPU | Nome in codice | Sistema operativo |
|---|---|---|---|
| Intel Core Ultra Serie 2 | NPU4000 | Lunar Lake (LNL) | Linux, Windows |
| Intel Core Ultra Serie 3 | NPU5010 | Panther Lake (PTL) | Linux, Windows |
Avvio rapido
1. Installare i driver NPU
Consulta Configurazione della NPU Linux o Configurazione della NPU Windows. Salta se hai bisogno solo di AOT.
Il driver NPU è necessario solo sui sistemi che eseguono il modello sull'hardware NPU. I sistemi di compilazione AOT pura possono ignorarlo.
Nota:
ai-edge-litert-sdk-intel-nightlyblocca la ruota notturna OpenVINO corrispondente in base alla versione PEP 440 (ad es.openvino==2026.2.0.dev20260506), quindi pip ha bisogno di--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightlyper individuarla. Su Linux, se il rilevamento automatico della distribuzione sceglie l'archivio sbagliato, impostaLITERT_OV_OS_ID=ubuntu22oubuntu24prima dipip install.
2. Crea un ambiente virtuale Python
Consigliamo di mantenere la ruota openvino notturna isolata da qualsiasi installazione OpenVINO a livello di sistema.
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. Installa il pacchetto 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 consente a pip di risolvere la ruota notturna openvino
dall'indice di OpenVINO insieme ai pacchetti su PyPI.
4. Verifica dell'installazione
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)
"
Cosa controllare nell'output:
SDK libselencalibopenvino_intel_npu_compiler.so(Linux) oopenvino_intel_npu_compiler.dll(Windows), richiesti per AOT.Available devicesincludeNPU: conferma che il driver NPU è installato e che OpenVINO può comunicare con il dispositivo.NPUnon sarà presente sui sistemi solo AOT (in cui il driver non è installato) e sui sistemi senza hardware Intel NPU.
5. Compilazione AOT (facoltativa)
- Precompila un
.tfliteper un target NPU Intel specifico (PTL o LNL) in modo che il runtime salti il passaggio del plug-in del compilatore. - Non ha bisogno di una NPU fisica o del driver NPU, solo di
ai-edge-litert-nightlyeai-edge-litert-sdk-intel-nightly. - È supportata la compilazione incrociata: compila su qualsiasi host Linux o Windows, invia
il
.tfliterisultante a una destinazione di uno dei due sistemi operativi ed eseguilo lì.
I file di output sono denominati <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. Esegui inferenza NPU
LiteRT supporta due percorsi di inferenza sulla NPU Intel:
- JIT: carica un
.tflitenon elaborato; il plug-in del compilatore partiziona e compila le operazioni supportate per la NPU al momento diCompiledModel.from_file(). Aggiunge una latenza di primo avvio (varia in base al modello). - Compilato AOT: carica un
<model>_IntelOpenVINO_<SoC>_apply_plugin.tfliteprodotto dal passaggio 4. Salta il passaggio di partizionamento e compilazione al momento del caricamento.
Questo snippet funziona per:
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())
Conferma che il provisioning JIT sia stato eseguito
Quando la compilazione JIT ha esito positivo, il log contiene (l'estensione del file è .so su Linux, .dll su
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...
Se queste righe non sono presenti, ma Fully accelerated: True viene comunque segnalato, il
modello è stato eseguito sul fallback della CPU XNNPACK, non sulla NPU. Consulta la riga
di risoluzione dei problemi JIT.
7. Benchmark
# Dispatch library and the NPU compiler are auto-discovered from the wheel.
litert-benchmark --model=model.tflite --use_npu --num_runs=50
Flag comuni:
| Flag | Predefinito | Descrizione |
|---|---|---|
--model PATH
|
— | Percorso del modello .tflite (obbligatorio). |
--signature KEY |
prima | Chiave di firma da eseguire. |
--use_cpu/--no_cpu
|
on | Attiva/disattiva l'acceleratore CPU/il fallback della CPU. |
--use_gpu |
off | Attiva l'acceleratore GPU. |
--use_npu |
off | Attiva l'acceleratore NPU Intel. |
--require_full_delegation
|
off | Errore se il modello non è completamente scaricato sull'acceleratore selezionato. |
--num_runs N
|
50 | Numero di iterazioni di inferenza temporizzata. |
--warmup_runs N
|
5 | Iterazioni di riscaldamento senza limiti di tempo prima della misurazione. |
--num_threads N |
1 | Conteggio thread CPU. |
--result_json PATH
|
— | Scrivi un riepilogo JSON (statistiche di latenza, throughput, elenco degli acceleratori). |
--verbose |
off | Logging di runtime aggiuntivo. |
Flag avanzati / di override: necessari solo per indicare build personalizzate:
--dispatch_library_path, --compiler_plugin_path, --runtime_path.
Ruote di fornitori misti: blocco di JIT su Intel OV
Nota:quando
Environment.create()viene chiamato senza percorsi espliciti, rileva automaticamente i fornitori inai_edge_litert/vendors/in ordine alfabetico e registra il primo che trova. In un'installazione di più fornitori, questo potrebbe non essere Intel OV. Trasferisci esplicitamente le directory Intel OV per forzare la scelta corretta.
- Il pacchetto pip include i plug-in del compilatore per ogni fornitore registrato
(
intel_openvino/,google_tensor/,mediatek/,qualcomm/,samsung/). - Per forzare il percorso Intel OV (consigliato quando sono installati più SDK di fornitori), passa manualmente le directory 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,
)
Il runtime carica ogni libreria condivisa che trova nella directory specificata, quindi
se punti a vendors/intel_openvino/compiler/ viene caricato solo il plug-in Intel; i
plug-in Google Tensor / MediaTek / Qualcomm / Samsung nelle directory di pari livello non vengono
mai toccati.
Per la CLI, i flag equivalenti sono:
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
Verifica dell'esecuzione della NPU
Per verificare che il modello sia stato eseguito effettivamente sulla NPU, controlla entrambi i segnali:
- Il log contiene
Loading shared library: .../LiteRtDispatch_IntelOpenvino.{so,dll}: la libreria di invio Intel è stata caricata (.sosu Linux,.dllsu Windows). model.is_fully_accelerated()restituisceTrue: ogni operazione è stata scaricata sull'acceleratore selezionato.
is_fully_accelerated() da solo non è sufficiente: se la libreria di distribuzione non è mai stata caricata, le operazioni sono state completamente scaricate su XNNPACK/CPU, non sulla NPU.
Configurazione della NPU Linux
Nota:salta questa sezione se hai bisogno solo di AOT. Non è necessario un NPU fisico.
Informazioni:utilizza il driver NPU v1.32.1 (abbinato a OpenVINO 2026.1). I driver meno recenti non funzionano con
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
Quindi esegui lo snippet di installazione e verifica dalla Avvio rapido.
Configurazione della NPU di Windows
Nota:salta questa sezione se hai bisogno solo di AOT. Non è necessario un NPU fisico.
- Installa il driver NPU Intel (32.0.100.4724+) dal Centro download Intel.
- Verifica che Gestione dispositivi elenchi il dispositivo NPU nella sezione Processori neurali
(visualizzato come
Intel(R) AI BoostoIntel(R) NPUa seconda del driver). - Esegui lo snippet di installazione e verifica da Avvio rapido, sostituendo
pipconpython -m pip.
Informazioni:
import ai_edge_litertregistra automaticamente le directory DLL utilizzandoos.add_dll_directory(), quindi gli script Python non richiedono alcuna configurazionePATH. Per i consumatori non Python, eseguisetupvars.bato anteponi<openvino>/libsaPATH.
Compilare dall'origine
Dietro un proxy? Esporta
http_proxy/https_proxy/no_proxyprima di eseguire gli script di build, in quanto li inoltrano a Docker e al container.
Linux (Docker, ermetico):
cd LiteRT/docker_build && ./build_wheel_with_docker.sh
Windows (PowerShell, Bazel in PATH):
.\ci\build_pip_package_with_bazel_windows.ps1
Gli output vengono inseriti in dist/:
ai_edge_litert-*.whl: la rotellina del runtime.ai_edge_litert_sdk_{intel,qualcomm,mediatek,samsung}-*.tar.gz— vendor sdists.- L'sdist di Intel è di circa 5 KB; il compilatore NPU
.so/.dllviene recuperato al momentopip install, quindi lo stesso sdist funziona su Linux e Windows.
Test delle unità
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
Risoluzione dei problemi
| Problema | Correggi |
|---|---|
Errori AOT: Device with "NPU" name is not registered |
Compilatore NPU non recuperato. Controlla gli elenchi ai_edge_litert_sdk_intel.path_to_sdk_libs()libopenvino_intel_npu_compiler.so / .dll. Se è vuoto, reinstalla con l'accesso alla rete o imposta LITERT_OV_OS_ID=ubuntu22/ubuntu24. |
JIT viene eseguito sulla CPU anziché sulla NPU (nessun log Partitioned subgraph, nessun log Loaded plugin, Fully accelerated: True ancora stampato) |
Il plug-in del compilatore non è stato rilevato. Verifica che ov.get_compiler_plugin_dir() restituisca un percorso in ai_edge_litert/vendors/intel_openvino/compiler/. Se sono installati più SDK fornitore, passa compiler_plugin_path=ov.get_compiler_plugin_dir() in modo esplicito a Environment.create() (o --compiler_plugin_path=... a litert-benchmark). |
Errori JIT: Cannot load library .../openvino/libs/libopenvino_intel_npu_compiler.so (Linux) / openvino_intel_npu_compiler.dll (Windows) |
L'SDK sdist copia il compilatore NPU in openvino/libs/ al primo import ai_edge_litert_sdk_intel. Se la copia è stata ignorata (FS di sola lettura, openvino mancante), reinstalla ai-edge-litert-sdk-intel dopo l'installazione di openvino, quindi import ai_edge_litert in un nuovo processo. |
Level0 pfnCreate2 result: ZE_RESULT_ERROR_UNSUPPORTED_FEATURE |
Esegui l'upgrade del driver NPU alla versione 1.32.1 (Linux). |
Risorsa /dev/accel/accel0 non trovata |
sudo dmesg | grep -i vpu per eseguire il debug del driver; riavvia dopo l'installazione. |
| Autorizzazione negata sulla NPU | sudo gpasswd -a ${USER} render && newgrp render. |
| Windows: NPU non presente in Gestione dispositivi | Installa il driver NPU 32.0.100.4724+ dal Centro download Intel. |
Windows: Failed to initialize Dispatch API / DLL mancanti |
Assicurati che import ai_edge_litert venga eseguito per primo (registra automaticamente le directory DLL); per i chiamanti non Python, esegui setupvars.bat o anteponi <openvino>/libs a PATH. |
Build di Windows: LNK2001 fixed_address_empty_string, C2491 dllimport, Python 3.12+ fails |
Vincolo ABI / versione Python di Protobuf: vedi ci/build_pip_package_with_bazel_windows.ps1; le build di Windows richiedono Python 3.11. |
Limitazioni
Solo il dispositivo NPU è supportato tramite il percorso di distribuzione OpenVINO. Per l'inferenza
della CPU, utilizza solo HardwareAccelerator.CPU (XNNPACK).
Passaggi successivi
- Inizia con la guida NPU unificata: Accelerazione NPU con LiteRT
- Segui i passaggi per la conversione e l'implementazione, scegliendo Qualcomm dove applicabile.
- Per gli LLM, consulta Eseguire LLM sulla NPU utilizzando LiteRT-LM.