NPU Intel (OpenVino) có LiteRT

LiteRT hỗ trợ Intel OpenVino thông qua API CompiledModel cho cả AOT và quá trình biên dịch trên thiết bị.

Thiết lập môi trường phát triển

Linux (x86_64):

  • Ubuntu 22.04 hoặc 24.04 LTS
  • Python 3.10 trở lên – cài đặt từ python.org hoặc bản phân phối của bạn (sudo apt install python3 python3-venv)
  • Trình điều khiển NPU của Intel v1.32.1 – xem phần Thiết lập NPU trên Linux

Windows (x86_64):

Để tạo từ nguồn, bạn cũng cần Bazel 7.4.1 trở lên bằng Bazelisk hoặc bản dựng Docker khép kín.

SoC được hỗ trợ

Nền tảng NPU Tên mã Hệ điều hành
Dòng Intel Core Ultra 2 NPU4000 Lunar Lake (LNL) Linux, Windows
Intel Core Ultra Series 3 NPU5010 Hồ Panther (PTL) Linux, Windows

Bắt đầu nhanh

1. Cài đặt trình điều khiển NPU

Xem phần Thiết lập NPU trên Linux hoặc Thiết lập NPU trên Windows. Bỏ qua nếu bạn chỉ cần AOT.

Bạn chỉ cần trình điều khiển NPU trên những hệ thống thực thi mô hình trên phần cứng NPU. Các hệ thống chỉ tạo AOT có thể bỏ qua bước này.

Lưu ý: ai-edge-litert-sdk-intel-nightly ghim bánh xe OpenVINO phù hợp theo phiên bản PEP 440 (ví dụ: openvino==2026.2.0.dev20260506), vì vậy pip cần --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly để xác định vị trí của bánh xe này. Trên Linux, nếu tính năng tự động phát hiện bản phân phối chọn sai tệp lưu trữ, hãy đặt LITERT_OV_OS_ID=ubuntu22 hoặc ubuntu24 trước pip install.

2. Tạo môi trường ảo Python

Bạn nên giữ bánh xe openvino hằng đêm tách biệt với mọi bản cài đặt OpenVINO trên toàn hệ thống.

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. Cài đặt gói 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 cho phép pip phân giải bánh xe openvino được ghim hằng đêm từ chỉ mục của OpenVINO cùng với các gói trên PyPI.

4. Xác minh quá trình cài đặt

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

Nội dung cần kiểm tra trong kết quả đầu ra:

  • SDK libs lists libopenvino_intel_npu_compiler.so (Linux) hoặc openvino_intel_npu_compiler.dll (Windows) – bắt buộc đối với AOT.
  • Available devices bao gồm NPU – xác nhận rằng trình điều khiển NPU đã được cài đặt và OpenVINO có thể giao tiếp với thiết bị. NPU sẽ không có trên các hệ thống chỉ có AOT (nơi trình điều khiển không được cài đặt) và trên các hệ thống không có phần cứng NPU của Intel.

5. Biên dịch AOT (Không bắt buộc)

  • Biên dịch trước một .tflite cho một mục tiêu NPU cụ thể của Intel (PTL hoặc LNL) để thời gian chạy bỏ qua bước trình bổ trợ trình biên dịch.
  • Không cần NPU thực hoặc trình điều khiển NPU — chỉ cần ai-edge-litert-nightlyai-edge-litert-sdk-intel-nightly.
  • Hỗ trợ biên dịch chéo: biên dịch trên mọi máy chủ lưu trữ Linux hoặc Windows, chuyển .tflite kết quả đến một mục tiêu của một trong hai hệ điều hành và chạy kết quả đó ở đó.

Tệp đầu ra có tên là <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. Chạy suy luận NPU

LiteRT hỗ trợ hai đường dẫn suy luận trên NPU của Intel:

  • JIT – tải một .tflite thô; trình bổ trợ trình biên dịch phân vùng và biên dịch các hoạt động được hỗ trợ cho NPU tại thời điểm CompiledModel.from_file(). Tăng độ trễ khi chạy lần đầu (tuỳ theo mô hình).
  • Được biên dịch AOT – tải một <model>_IntelOpenVINO_<SoC>_apply_plugin.tflite do bước 4 tạo ra. Bỏ qua bước phân vùng và biên dịch tại thời gian tải.

Đoạn mã này hoạt động cho cả:

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

Xác nhận rằng JIT thực sự đã chạy

Khi JIT thành công, nhật ký sẽ chứa (phần mở rộng tệp là .so trên Linux, .dll trê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ếu không có những dòng đó nhưng Fully accelerated: True vẫn được báo cáo, thì mô hình đã chạy trên cơ chế dự phòng CPU XNNPACK, chứ không phải trên NPU – hãy xem hàng khắc phục sự cố JIT.

7. Benchmark (Điểm chuẩn)

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

Các cờ cảnh báo phổ biến:

Cờ Mặc định Mô tả
--model PATH Đường dẫn đến mô hình .tflite (bắt buộc).
--signature KEY trước tiên Khoá chữ ký để chạy.
--use_cpu/--no_cpu bật Bật/tắt trình tăng tốc CPU/CPU dự phòng.
--use_gpu tắt Bật trình tăng tốc GPU.
--use_npu tắt Bật bộ tăng tốc NPU của Intel.
--require_full_delegation tắt Thất bại nếu mô hình không được giảm tải hoàn toàn cho bộ tăng tốc đã chọn.
--num_runs N 50 Số lần lặp lại suy luận có tính thời gian.
--warmup_runs N 5 Các vòng lặp khởi động không có thời gian trước khi đo.
--num_threads N 1 Số luồng CPU.
--result_json PATH Viết bản tóm tắt JSON (số liệu thống kê về độ trễ, thông lượng, danh sách bộ tăng tốc).
--verbose tắt Ghi nhật ký bổ sung khi bắt đầu chạy.

Cờ nâng cao / ghi đè – chỉ cần thiết để trỏ đến các bản dựng tuỳ chỉnh: --dispatch_library_path, --compiler_plugin_path, --runtime_path.

Bánh xe của nhiều nhà cung cấp: ghim JIT vào Intel OV

Lưu ý: Khi Environment.create() được gọi mà không có đường dẫn rõ ràng, nó sẽ tự động phát hiện các nhà cung cấp trong ai_edge_litert/vendors/ theo thứ tự bảng chữ cái và đăng ký nhà cung cấp đầu tiên mà nó tìm thấy. Trong quá trình cài đặt của nhiều nhà cung cấp, đây có thể không phải là Intel OV — hãy truyền các thư mục Intel OV một cách rõ ràng để buộc chọn đúng.

  • Trình biên dịch pip wheel ships cho mọi nhà cung cấp đã đăng ký (intel_openvino/, google_tensor/, mediatek/, qualcomm/, samsung/).
  • Để bắt buộc đường dẫn Intel OV (nên dùng khi bạn cài đặt nhiều SDK của nhà cung cấp), hãy truyền các thư mục Intel OV theo cách thủ công:
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,
)

Thời gian chạy tải mọi thư viện dùng chung mà nó tìm thấy trong thư mục đã cho, vì vậy, việc trỏ đến vendors/intel_openvino/compiler/ chỉ tải trình bổ trợ Intel; các trình bổ trợ Google Tensor / MediaTek / Qualcomm / Samsung trong các thư mục ngang hàng sẽ không bao giờ được chạm đến.

Đối với CLI, các cờ tương đương là:

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

Xác minh việc thực thi NPU

Để xác nhận rằng mô hình thực sự chạy trên NPU, hãy kiểm tra cả hai tín hiệu:

  1. Nhật ký chứa Loading shared library: .../LiteRtDispatch_IntelOpenvino.{so,dll} – thư viện điều phối Intel đã được tải (.so trên Linux, .dll trên Windows).
  2. model.is_fully_accelerated() trả về True – mọi thao tác đều được chuyển sang bộ tăng tốc đã chọn.

Chỉ is_fully_accelerated()không đủ: nếu thư viện điều phối không bao giờ được tải, thì các thao tác sẽ được chuyển hoàn toàn sang XNNPACK/CPU, chứ không phải NPU.


Thiết lập NPU trên Linux

Lưu ý: Bỏ qua phần này nếu bạn chỉ cần AOT – không bắt buộc phải có NPU thực.

Thông tin: Sử dụng trình điều khiển NPU v1.32.1 (kết hợp với OpenVINO 2026.1). Các trình điều khiển cũ hơn sẽ không hoạt động với 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

Sau đó, hãy chạy đoạn mã cài đặt + xác minh trong phần Bắt đầu nhanh.


Thiết lập NPU trên Windows

Lưu ý: Bỏ qua phần này nếu bạn chỉ cần AOT – không bắt buộc phải có NPU thực.

  • Cài đặt trình điều khiển NPU của Intel (32.0.100.4724+) từ Trung tâm tải xuống của Intel.
  • Xác minh rằng Trình quản lý thiết bị liệt kê thiết bị NPU trong phần Bộ xử lý thần kinh (hiển thị dưới dạng Intel(R) AI Boost hoặc Intel(R) NPU tuỳ thuộc vào trình điều khiển).
  • Chạy đoạn mã cài đặt + xác minh từ Bắt đầu nhanh, thay thế pip bằng python -m pip.

Thông tin: import ai_edge_litert tự động đăng ký các thư mục DLL bằng os.add_dll_directory(), nên các tập lệnh Python không cần thiết lập PATH. Đối với những người dùng không phải Python, hãy chạy setupvars.bat hoặc thêm <openvino>/libs vào trước PATH.


Tạo từ nguồn

Bạn đang sử dụng proxy? Xuất http_proxy / https_proxy / no_proxy trước khi chạy tập lệnh bản dựng – các tập lệnh này sẽ chuyển tiếp các biến môi trường này vào Docker và vùng chứa.

Linux (Docker, khép kín):

cd LiteRT/docker_build && ./build_wheel_with_docker.sh

Windows (PowerShell, Bazel trong PATH):

.\ci\build_pip_package_with_bazel_windows.ps1

Kết quả đầu ra sẽ nằm trong dist/:

  • ai_edge_litert-*.whl – bánh xe thời gian chạy.
  • ai_edge_litert_sdk_{intel,qualcomm,mediatek,samsung}-*.tar.gz – vendor sdists.
  • Intel sdist có kích thước khoảng 5 KB; trình biên dịch NPU .so/.dll được tìm nạp tại thời điểm pip install, vì vậy, cùng một sdist hoạt động trên cả Linux và Windows.

Kiểm thử đơn vị

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

Khắc phục sự cố

Vấn đề Cách khắc phục
AOT không thành công: Device with "NPU" name is not registered Không tìm nạp được trình biên dịch NPU. Kiểm tra ai_edge_litert_sdk_intel.path_to_sdk_libs() danh sách libopenvino_intel_npu_compiler.so / .dll. Nếu trống, hãy cài đặt lại bằng quyền truy cập mạng hoặc đặt LITERT_OV_OS_ID=ubuntu22/ubuntu24.
JIT chạy trên CPU thay vì NPU (không có nhật ký Partitioned subgraph, không có nhật ký Loaded plugin, Fully accelerated: True vẫn được in) Không phát hiện thấy trình bổ trợ trình biên dịch. Xác nhận ov.get_compiler_plugin_dir() trả về một đường dẫn trong ai_edge_litert/vendors/intel_openvino/compiler/. Nếu bạn cài đặt nhiều SDK của nhà cung cấp, hãy truyền compiler_plugin_path=ov.get_compiler_plugin_dir() một cách rõ ràng đến Environment.create() (hoặc --compiler_plugin_path=... đến litert-benchmark).
JIT không thành công: Cannot load library .../openvino/libs/libopenvino_intel_npu_compiler.so (Linux) / openvino_intel_npu_compiler.dll (Windows) SDK sdist sẽ sao chép trình biên dịch NPU vào openvino/libs/ trong lần import ai_edge_litert_sdk_intel đầu tiên. Nếu quá trình sao chép bị bỏ qua (FS chỉ đọc, thiếu openvino), hãy cài đặt lại ai-edge-litert-sdk-intel sau khi cài đặt openvino, sau đó import ai_edge_litert trong một quy trình mới.
Level0 pfnCreate2 result: ZE_RESULT_ERROR_UNSUPPORTED_FEATURE Nâng cấp trình điều khiển NPU lên phiên bản 1.32.1 (Linux).
Không tìm thấy /dev/accel/accel0 sudo dmesg | grep -i vpu để gỡ lỗi trình điều khiển; khởi động lại sau khi cài đặt.
Quyền bị từ chối trên NPU sudo gpasswd -a ${USER} render && newgrp render.
Windows: NPU không có trong Trình quản lý thiết bị Cài đặt trình điều khiển NPU 32.0.100.4724+ từ Trung tâm tải xuống của Intel.
Windows: Failed to initialize Dispatch API / thiếu DLL Đảm bảo import ai_edge_litert chạy trước (tự động đăng ký các thư mục DLL); đối với những người gọi không phải Python, hãy chạy setupvars.bat hoặc thêm <openvino>/libs vào trước PATH.
Bản dựng Windows: LNK2001 fixed_address_empty_string, C2491 dllimport, Python 3.12+ fails Ràng buộc ABI Protobuf / phiên bản Python – xem ci/build_pip_package_with_bazel_windows.ps1; Bản dựng Windows yêu cầu Python 3.11.

Các điểm hạn chế

Chỉ thiết bị NPU được hỗ trợ thông qua đường dẫn điều phối OpenVINO. Đối với suy luận CPU, chỉ sử dụng HardwareAccelerator.CPU (XNNPACK).

Các bước tiếp theo

  1. Bắt đầu với hướng dẫn NPU thống nhất: Tăng tốc NPU bằng LiteRT
  2. Làm theo các bước chuyển đổi và triển khai tại đó, chọn Qualcomm nếu có thể.
  3. Đối với LLM, hãy xem phần Thực thi LLM trên NPU bằng LiteRT-LM.