LiteRT unterstützt Intel OpenVINO über die CompiledModel API für die AOT- und die On-Device-Kompilierung.
Entwicklungsumgebung einrichten
Linux (x86_64):
- Ubuntu 22.04 oder 24.04 LTS
- Python 3.10 oder höher – von python.org
oder Ihrer Distribution installieren (
sudo apt install python3 python3-venv) - Intel NPU-Treiber v1.32.1 – siehe Linux-NPU-Einrichtung
Windows (x86_64):
- Windows 10 oder 11
- Python 3.10 oder höher – von python.org installieren
- Intel NPU-Treiber 32.0.100.4724+ – siehe Windows-NPU-Einrichtung
Für die Erstellung aus der Quelle ist auch Bazel 7.4.1 oder höher mit Bazelisk oder der hermetischen Docker-Erstellung erforderlich.
Unterstützte SoCs
| Plattform | NPU | Codename | Betriebssystem |
|---|---|---|---|
| Intel Core Ultra Series 2 | NPU4000 | Lunar Lake (LNL) | Linux, Windows |
| Intel Core Ultra Series 3 | NPU5010 | Panther Lake (PTL) | Linux, Windows |
Schnellstart
1. NPU-Treiber installieren
Weitere Informationen finden Sie unter Linux-NPU-Einrichtung oder Windows-NPU-Einrichtung. Überspringen Sie diesen Schritt, wenn Sie nur AOT benötigen.
Der NPU-Treiber ist nur auf Systemen erforderlich, die das Modell auf der NPU-Hardware ausführen. Systeme, die nur AOT-Builds verwenden, können diesen Schritt überspringen.
Hinweis:
ai-edge-litert-sdk-intel-nightlyfixiert das passende OpenVINO Nightly-Wheel nach der PEP 440-Version (z. B.openvino==2026.2.0.dev20260506). Daher muss pip--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightlyverwenden, um es zu finden. Wenn unter Linux die automatische Erkennung der Distribution das falsche Archiv auswählt, legen Sie vorpip installLITERT_OV_OS_ID=ubuntu22oderubuntu24fest.
2. Virtuelle Python-Umgebung erstellen
Empfohlen, um das Nightly-Wheel openvino von einer systemweiten OpenVINO-Installation zu isolieren.
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-Paket installieren
pip install --pre \
--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly \
ai-edge-litert-nightly ai-edge-litert-sdk-intel-nightly
Mit --extra-index-url kann pip das fixierte openvino-Nightly-Wheel aus dem OpenVINO-Index zusammen mit Paketen auf PyPI auflösen.
4. Installation prüfen
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)
"
Was Sie in der Ausgabe prüfen sollten:
- Unter
SDK libswirdlibopenvino_intel_npu_compiler.so(Linux) oderopenvino_intel_npu_compiler.dll(Windows) aufgeführt – erforderlich für AOT. - Unter
Available devicesistNPUenthalten – dies bestätigt, dass der NPU-Treiber installiert ist und OpenVINO mit dem Gerät kommunizieren kann.NPUist auf Systemen, die nur AOT verwenden (auf denen der Treiber nicht installiert ist), und auf Systemen ohne Intel NPU-Hardware nicht vorhanden.
5. AOT-Kompilierung (optional)
- Kompiliert vorab eine
.tflite-Datei für ein bestimmtes Intel NPU-Ziel (PTL oder LNL), sodass die Laufzeit den Schritt des Compiler-Plug-ins überspringt. - Erfordert keine physische NPU oder den NPU-Treiber, sondern nur
ai-edge-litert-nightlyundai-edge-litert-sdk-intel-nightly. - Die Cross-Kompilierung wird unterstützt: Sie können auf einem beliebigen Linux- oder Windows-Host kompilieren, die resultierende
.tflite-Datei an ein Ziel eines der beiden Betriebssysteme senden und dort ausführen.
Ausgabedateien haben den Namen <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-Inferenz ausführen
LiteRT unterstützt zwei Inferenzpfade auf der Intel NPU:
- JIT : Laden Sie eine unkompilierte
.tflite-Datei. Das Compiler-Plug-in partitioniert und kompiliert unterstützte Vorgänge für die NPU zur Zeit vonCompiledModel.from_file(). Fügt eine gewisse Latenz bei der ersten Ausführung hinzu (variiert je nach Modell). - AOT-kompiliert : Laden Sie eine
<model>_IntelOpenVINO_<SoC>_apply_plugin.tflitedie in Schritt 4 erstellt wurde. Überspringt den Partitionierungs- und Kompilierungsschritt zur Ladezeit.
Dieses Snippet funktioniert für beide:
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())
Prüfen, ob JIT tatsächlich ausgeführt wurde
Wenn JIT erfolgreich ist, enthält das Log Folgendes (die Dateierweiterung ist .so unter Linux und .dll unter 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...
Wenn diese Zeilen fehlen, aber trotzdem Fully accelerated: True gemeldet wird, wurde das Modell mit dem XNNPACK-CPU-Fallback und nicht auf der NPU ausgeführt. Weitere Informationen finden Sie in der Zeile zur Fehlerbehebung bei 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
Häufig verwendete Flags:
| Flag | Standardeinstellung | Beschreibung |
|---|---|---|
--model PATH
|
– | Pfad zum .tflite-Modell (erforderlich). |
--signature KEY |
1. | Signaturschlüssel für die Ausführung. |
--use_cpu / --no_cpu
|
am | CPU-Beschleuniger / CPU-Fallback aktivieren oder deaktivieren. |
--use_gpu |
deaktiviert | GPU-Beschleuniger aktivieren. |
--use_npu |
deaktiviert | Intel NPU-Beschleuniger aktivieren. |
--require_full_delegation
|
deaktiviert | Fehler, wenn das Modell nicht vollständig auf den ausgewählten Beschleuniger ausgelagert wird. |
--num_runs N
|
50 | Anzahl der zeitgesteuerten Inferenziterationen. |
--warmup_runs N
|
5 | Nicht zeitgesteuerte Warm-up-Iterationen vor der Messung. |
--num_threads N |
1 | Anzahl der CPU-Threads. |
--result_json PATH
|
– | JSON-Zusammenfassung schreiben (Latenzstatistiken, Durchsatz, Beschleunigerliste). |
--verbose |
deaktiviert | Zusätzliches Laufzeit-Logging. |
Erweiterte / überschreibende Flags – nur erforderlich, um auf benutzerdefinierte Builds zu verweisen: --dispatch_library_path, --compiler_plugin_path, --runtime_path.
Wheels verschiedener Anbieter: JIT an Intel OV anpinnen
Hinweis:Wenn
Environment.create()ohne explizite Pfade aufgerufen wird, werden Anbieter unterai_edge_litert/vendors/in alphabetischer Reihenfolge automatisch erkannt und der erste gefundene Anbieter registriert. Bei einer Installation mit mehreren Anbietern ist das möglicherweise nicht Intel OV. Übergeben Sie die Intel OV-Verzeichnisse explizit, um die richtige Auswahl zu erzwingen.
- Das pip-Wheel enthält Compiler-Plug-ins für jeden registrierten Anbieter (
intel_openvino/,google_tensor/,mediatek/,qualcomm/,samsung/). - Wenn Sie den Intel OV-Pfad erzwingen möchten (empfohlen, wenn mehrere Anbieter-SDKs installiert sind), übergeben Sie die Intel OV-Verzeichnisse manuell:
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,
)
Die Laufzeit lädt jede freigegebene Bibliothek, die im angegebenen Verzeichnis gefunden wird. Wenn Sie also auf vendors/intel_openvino/compiler/ verweisen, wird nur das Intel-Plug-in geladen. Die Google Tensor-, MediaTek-, Qualcomm- und Samsung-Plug-ins in den gleichgeordneten Verzeichnissen werden nicht verwendet.
Für die CLI sind die entsprechenden Flags:
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-Ausführung prüfen
Prüfen Sie beide Signale, um zu bestätigen, dass das Modell tatsächlich auf der NPU ausgeführt wurde:
- Das Log enthält
Loading shared library: .../LiteRtDispatch_IntelOpenvino.{so,dll}– die Intel-Dispatch-Bibliothek wurde geladen (.sounter Linux,.dllunter Windows). model.is_fully_accelerated()gibtTruezurück – alle Vorgänge wurden auf den ausgewählten Beschleuniger ausgelagert.
is_fully_accelerated() allein reicht nicht aus. Wenn die Dispatch-Bibliothek nie geladen wurde, wurden die Vorgänge vollständig auf XNNPACK/CPU und nicht auf die NPU ausgelagert.
Linux-NPU-Einrichtung
Hinweis:Überspringen Sie diesen Abschnitt, wenn Sie nur AOT benötigen – eine physische NPU ist nicht erforderlich.
Info:Verwenden Sie den NPU-Treiber v1.32.1 (in Kombination mit OpenVINO 2026.1). Ältere Treiber schlagen mit
Level0 pfnCreate2 result: ZE_RESULT_ERROR_UNSUPPORTED_FEATUREfehl.
# 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
Führen Sie dann das Snippet für die Installation und Überprüfung aus Schnelleinstieg aus.
Windows-NPU-Einrichtung
Hinweis:Überspringen Sie diesen Abschnitt, wenn Sie nur AOT benötigen – eine physische NPU ist nicht erforderlich.
- Installieren Sie den Intel NPU-Treiber (32.0.100.4724+) aus dem Intel Download Center.
- Prüfen Sie, ob der Geräte-Manager das NPU-Gerät unter Neural processors (je nach Treiber als
Intel(R) AI BoostoderIntel(R) NPUangezeigt) auflistet. - Führen Sie das Snippet für die Installation und Überprüfung aus Schnelleinstieg aus und ersetzen Sie
pipdurchpython -m pip.
Info:
import ai_edge_litertregistriert DLL-Verzeichnisse automatisch mitos.add_dll_directory(), sodass für Python-Skripts keinePATH-Einrichtung erforderlich ist. Für Nicht-Python-Nutzer führen Siesetupvars.bataus oder stellen Sie<openvino>/libsvorPATH.
Aus Quelle erstellen
Hinter einem Proxy? Exportieren Sie
http_proxy/https_proxy/no_proxy, bevor Sie die Build-Skripts ausführen. Diese werden an Docker und den Container weitergeleitet.
Linux (Docker, hermetisch):
cd LiteRT/docker_build && ./build_wheel_with_docker.sh
Windows (PowerShell, Bazel in PATH):
.\ci\build_pip_package_with_bazel_windows.ps1
Die Ausgaben befinden sich in dist/:
ai_edge_litert-*.whl– das Laufzeit-Wheel.ai_edge_litert_sdk_{intel,qualcomm,mediatek,samsung}-*.tar.gz– Anbieter-SDists.- Die Intel-Sdist ist etwa 5 KB groß. Der NPU-Compiler
.so/.dllwird zur Zeit vonpip installabgerufen, sodass dieselbe Sdist unter Linux und Windows funktioniert.
Unit Tests
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
Fehlerbehebung
| Problem | Problembehebung |
|---|---|
AOT schlägt fehl: Device with "NPU" name is not registered |
NPU-Compiler nicht abgerufen. Prüfen Sie, ob ai_edge_litert_sdk_intel.path_to_sdk_libs() libopenvino_intel_npu_compiler.so / .dll auflistet. Wenn die Liste leer ist, installieren Sie sie mit Netzwerkzugriff neu oder legen Sie LITERT_OV_OS_ID=ubuntu22/ubuntu24 fest. |
JIT wird auf der CPU anstelle der NPU ausgeführt (kein Partitioned subgraph-Log, kein Loaded plugin-Log, Fully accelerated: True wird trotzdem ausgegeben) |
Compiler-Plug-in wurde nicht erkannt. Prüfen Sie, ob ov.get_compiler_plugin_dir() einen Pfad unter ai_edge_litert/vendors/intel_openvino/compiler/ zurückgibt. Wenn mehrere Anbieter-SDKs installiert sind, übergeben Sie compiler_plugin_path=ov.get_compiler_plugin_dir() explizit an Environment.create() (oder --compiler_plugin_path=... an litert-benchmark). |
JIT schlägt fehl: Cannot load library .../openvino/libs/libopenvino_intel_npu_compiler.so (Linux) / openvino_intel_npu_compiler.dll (Windows) |
Die SDK-Sdist kopiert den NPU-Compiler bei der ersten Ausführung von import ai_edge_litert_sdk_intel nach openvino/libs/. Wenn das Kopieren übersprungen wurde (schreibgeschütztes Dateisystem, openvino fehlt), installieren Sie ai-edge-litert-sdk-intel neu, nachdem openvino installiert wurde, und führen Sie dann import ai_edge_litert in einem neuen Prozess aus. |
Level0 pfnCreate2 result: ZE_RESULT_ERROR_UNSUPPORTED_FEATURE |
Aktualisieren Sie den NPU-Treiber auf v1.32.1 (Linux). |
/dev/accel/accel0 nicht gefunden |
sudo dmesg | grep -i vpu, um den Treiber zu debuggen. Starten Sie nach der Installation neu. |
| Berechtigung für NPU verweigert | sudo gpasswd -a ${USER} render && newgrp render. |
| Windows: NPU nicht im Geräte-Manager | Installieren Sie den NPU-Treiber 32.0.100.4724 oder höher aus dem Intel Download Center. |
Windows: Failed to initialize Dispatch API / fehlende DLLs |
Achten Sie darauf, dass import ai_edge_litert zuerst ausgeführt wird (registriert DLL-Verzeichnisse automatisch). Für Nicht-Python-Aufrufer führen Sie setupvars.bat aus oder stellen Sie <openvino>/libs vor PATH. |
Windows-Build: LNK2001 fixed_address_empty_string, C2491 dllimport, Python 3.12+ fails |
Protobuf-ABI-/Python-Versionsbeschränkung – siehe ci/build_pip_package_with_bazel_windows.ps1. Für Windows-Builds ist Python 3.11 erforderlich. |
Beschränkungen
Nur das NPU-Gerät wird über den OpenVINO-Dispatch-Pfad unterstützt. Verwenden Sie für die CPU-Inferenz nur HardwareAccelerator.CPU (XNNPACK).
Nächste Schritte
- Beginnen Sie mit der einheitlichen NPU-Anleitung: NPU-Beschleunigung mit LiteRT
- Folgen Sie dort den Schritten zur Konvertierung und Bereitstellung und wählen Sie gegebenenfalls Qualcomm aus.
- Informationen zu LLMs finden Sie unter LLMs auf der NPU mit LiteRT-LM ausführen.