Intel NPU (OpenVino) с LiteRT

LiteRT поддерживает Intel OpenVino через API CompiledModel как для компиляции AOT, так и для компиляции на устройстве.

Настройка среды разработки

Linux (x86_64):

Windows (x86_64):

Для сборки из исходного кода также требуется Bazel 7.4.1+ с использованием Bazelisk или герметичной сборки Docker.

Поддерживаемые SoC

Платформа НПУ Кодовое имя ОС
Intel Core Ultra Series 2 НПУ4000 Лунное озеро (LNL) Linux, Windows
Intel Core Ultra Series 3 НПУ5010 Озеро Пантер (PTL) Linux, Windows

Быстрый старт

1. Установите драйверы NPU.

См. раздел «Настройка NPU в Linux» или «Настройка NPU в Windows» . Пропустите этот шаг, если вам нужен только AOT.

Драйвер NPU необходим только в системах, которые выполняют модель на аппаратном обеспечении NPU. Системы, использующие исключительно AOT-сборку, могут его пропустить.

Примечание: ai-edge-litert-sdk-intel-nightly фиксирует соответствующий ночной пакет OpenVINO по версии PEP 440 (например, openvino==2026.2.0.dev20260506 ), поэтому pip требуется --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly для его поиска. В Linux, если автоматическое определение дистрибутива выбирает неправильный архив, установите LITERT_OV_OS_ID=ubuntu22 или ubuntu24 перед pip install .

2. Создайте виртуальную среду Python.

Рекомендуется изолировать ночную сборку 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

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 из индекса 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) — необходимые для AOT.
  • Available 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 поддерживает два пути выполнения инференции на NPU Intel:

  • JIT — загрузка необработанного файла .tflite ; плагин компилятора разделяет и компилирует поддерживаемые операции для NPU во время CompiledModel.from_file() . Добавляет некоторую задержку при первом запуске (зависит от модели).
  • Компиляция AOT — загрузка файла <model>_IntelOpenVINO_<SoC>_apply_plugin.tflite , созданного на шаге 4. Пропускает этап разбиения на разделы и компиляции во время загрузки.

Этот фрагмент кода работает в обоих случаях:

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, а не на нейронном процессоре — см. строку устранения неполадок 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 первый Ключ подписи для запуска.
--use_cpu / --no_cpu на Переключите режим работы процессора на ускорение / резервный режим работы процессора.
--use_gpu выключенный Включите графический ускоритель.
--use_npu выключенный Включите ускоритель Intel NPU.
--require_full_delegation выключенный Ошибка произойдет, если модель не будет полностью перенесена на выбранный акселератор.
--num_runs N 50 Количество итераций вывода с заданным временем.
--warmup_runs N 5 Перед измерением проводятся разминочные итерации без ограничения по времени.
--num_threads N 1 Количество потоков ЦП.
--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 в соседних каталогах никогда не затрагиваются.

Для интерфейса командной строки эквивалентными флагами являются:

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

Чтобы убедиться, что модель действительно работала на нейропроцессоре, проверьте наличие обоих сигналов:

  1. В журнале содержится Loading shared library: .../LiteRtDispatch_IntelOpenvino.{so,dll} — загружена библиотека диспетчеризации Intel ( .so в Linux, .dll в Windows).
  2. model.is_fully_accelerated() возвращает True — каждая операция была перенесена на выбранный акселератор.

Одной лишь is_fully_accelerated() недостаточно : если библиотека диспетчеризации так и не загрузилась, операции были полностью перенесены на XNNPACK/CPU, а не на NPU.


Настройка NPU в Linux

Примечание: Пропустите этот раздел, если вам нужен только AOT — физический NPU не требуется.

Информация: Используйте драйвер NPU версии 1.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 или добавьте в PATH переменную <openvino>/libs .


Сборка из исходного кода

Используете прокси-сервер? Перед запуском скриптов сборки экспортируйте http_proxy / https_proxy / no_proxy — они перенаправят их в Docker и контейнер.

Linux (Docker, герметичный):

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 — сдисты поставщика.
  • Размер дистрибутива Intel составляет примерно 5 КБ; файлы .so / .dll компилятора NPU загружаются во время pip install , поэтому один и тот же дистрибутив работает как в Linux, так и в Windows.

Модульные тесты

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-компилятор работает на ЦП, а не на НПУ (нет записи в журнале 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) При первом import ai_edge_litert_sdk_intel SDK sdist копирует компилятор NPU в openvino/libs/ . Если копирование было пропущено (файловая система только для чтения, отсутствует openvino ), переустановите ai-edge-litert-sdk-intel после установки openvino , а затем import ai_edge_litert в новом процессе.
Level0 pfnCreate2 result: ZE_RESULT_ERROR_UNSUPPORTED_FEATURE Обновите драйвер NPU до версии 1.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 Ограничение по ABI Protobuf / версии Python — см. ci/build_pip_package_with_bazel_windows.ps1 ; для сборки под Windows требуется Python 3.11.

Ограничения

В рамках протокола OpenVINO поддерживается только устройство NPU. Для вывода данных на ЦП используйте только HardwareAccelerator.CPU (XNNPACK).

Следующие шаги

  1. Начните с единого руководства по NPU: ускорение NPU с помощью LiteRT.
  2. Следуйте инструкциям по преобразованию и развертыванию, указанным там, выбрав Qualcomm, где это применимо.
  3. Для LLM-модулей см. раздел «Выполнение LLM-модулей на NPU с использованием LiteRT-LM» .