LiteRT는 AOT 및 기기 내 컴파일 모두를 위해 CompiledModel API를 통해 Intel OpenVino를 지원합니다.
개발 환경 설정
Linux (x86_64):
- Ubuntu 22.04 또는 24.04 LTS
- Python 3.10 이상 - python.org
또는 배포판 (
sudo apt install python3 python3-venv)에서 설치 - Intel NPU 드라이버 v1.32.1 - Linux NPU 설정 참고
Windows (x86_64):
- Windows 10 또는 11
- Python 3.10 이상 - python.org에서 설치
- Intel NPU 드라이버 32.0.100.4724+ - Windows NPU 설정 참고
소스에서 빌드하려면 Bazelisk 또는 hermetic Docker 빌드를 사용하는 Bazel 7.4.1 이상도 필요합니다.
지원되는 SoC
| 플랫폼 | NPU | 코드명 | OS |
|---|---|---|---|
| Intel Core Ultra 시리즈 2 | NPU4000 | Lunar Lake (LNL) | Linux, Windows |
| Intel Core Ultra 시리즈 3 | NPU5010 | Panther Lake (PTL) | Linux, Windows |
퀵스타트
1. NPU 드라이버 설치
Linux NPU 설정 또는 Windows NPU 설정을 참고하세요. AOT만 필요한 경우 건너뛰세요.
NPU 드라이버는 NPU 하드웨어에서 모델을 실행 하는 시스템에만 필요합니다. 순수 AOT 빌드 시스템은 건너뛸 수 있습니다.
참고:
ai-edge-litert-sdk-intel-nightly는 일치하는 OpenVINO nightly 휠을 PEP 440 버전 (예:openvino==2026.2.0.dev20260506)으로 고정하므로 pip에서 이를 찾으려면--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly가 필요합니다. Linux에서 배포판 자동 감지가 잘못된 보관 파일을 선택하는 경우pip install전에LITERT_OV_OS_ID=ubuntu22또는ubuntu24를 설정합니다.
2. Python 가상 환경 만들기
nightly 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에서 PyPI의 패키지와 함께 OpenVINO의 색인에서 고정된 openvino nightly 휠을 확인할 수 있습니다.
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 컴파일 (선택사항)
- 런타임에서 컴파일러 플러그인 단계를 건너뛰도록 특정 Intel NPU 타겟 (PTL 또는 LNL)을 위해
.tflite를 미리 컴파일합니다. - 실제 NPU 또는 NPU 드라이버가 필요하지 않습니다.
ai-edge-litert-nightly및ai-edge-litert-sdk-intel-nightly만 필요합니다. - 교차 컴파일이 지원됩니다. Linux 또는 Windows 호스트에서 컴파일하고 결과
.tflite를 OS 중 하나의 타겟으로 전송하여 거기에서 운영합니다.
출력 파일의 이름은 <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는 Intel NPU에서 두 가지 추론 경로를 지원합니다.
- JIT - 원시
.tflite를 로드합니다. 컴파일러 플러그인은CompiledModel.from_file()시간에 NPU의 지원되는 작업을 분할하고 컴파일합니다. 일부 첫 실행 지연 시간을 추가합니다 (모델에 따라 다름). - AOT 컴파일됨 - 4단계에서 생성된
<model>_IntelOpenVINO_<SoC>_apply_plugin.tflite를 로드합니다. 로드 시 분할 및 컴파일 단계를 건너뜁니다.
이 스니펫은 둘 다에 적용됩니다.
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가 성공하면 로그에 다음이 포함됩니다 (파일 확장자는 Linux에서는 .so, Windows에서는 .dll).
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가 계속 보고되는 경우 모델이 NPU가 아닌 XNNPACK CPU 폴백에서 실행된 것입니다. 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
|
위치 | CPU 가속기 / CPU 폴백을 전환합니다. |
--use_gpu |
사용 안함 | GPU 가속기를 사용 설정합니다. |
--use_npu |
사용 안함 | Intel NPU 가속기를 사용 설정합니다. |
--require_full_delegation
|
사용 안함 | 모델이 선택한 가속기로 완전히 오프로드되지 않으면 실패합니다. |
--num_runs N
|
50 | 시간 제한 추론 반복 횟수 |
--warmup_runs N
|
5 | 측정 전 시간 제한이 없는 워밍업 반복 |
--num_threads N |
1 | CPU 스레드 수 |
--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 플러그인은 절대 터치되지 않습니다.
CLI의 경우 상응하는 플래그는 다음과 같습니다.
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 실행 확인
모델이 실제로 NPU에서 실행되었는지 확인하려면 두 가지 신호를 모두 확인하세요.
- 로그에
Loading shared library: .../LiteRtDispatch_IntelOpenvino.{so,dll}이 포함됩니다. Intel 디스패치 라이브러리가 로드되었습니다 (Linux에서는.so, Windows에서는.dll). model.is_fully_accelerated()가True를 반환합니다. 모든 작업이 선택한 가속기로 오프로드되었습니다.
is_fully_accelerated() 만으로는 충분하지 않습니다. 디스패치 라이브러리가 로드되지 않은 경우 작업이 NPU가 아닌 XNNPACK/CPU로 완전히 오프로드되었습니다.
Linux NPU 설정
참고: AOT만 필요한 경우 이 섹션을 건너뛰세요. 실제 NPU는 필요하지 않습니다.
정보: OpenVINO 2026.1과 페어링된 NPU 드라이버 v1.32.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
그런 다음 퀵스타트에서 설치 + 확인 스니펫을 실행합니다.
Windows NPU 설정
참고: AOT만 필요한 경우 이 섹션을 건너뛰세요. 실제 NPU는 필요하지 않습니다.
- Intel 다운로드 센터에서 Intel NPU 드라이버 (32.0.100.4724+)를 설치합니다.
- 기기 관리도구에 드라이버에 따라 신경망 프로세서 아래에 NPU 기기가 나열되는지 확인합니다(
Intel(R) AI Boost또는Intel(R) NPU로 표시됨). - 빠른 시작에서 설치 + 확인 스니펫을 실행하고 Quick Start를
pip로 바꿉니다.python -m pip
정보:
import ai_edge_litert는os.add_dll_directory()를 사용하여 DLL 디렉터리를 자동 등록하므로 Python 스크립트에는PATH설정이 필요하지 않습니다. Python이 아닌 소비자의 경우setupvars.bat를 실행하거나<openvino>/libs를PATH에 추가합니다.
소스에서 빌드
프록시 뒤에 있나요? 빌드 스크립트를 실행하기 전에
http_proxy/https_proxy/no_proxy를 내보냅니다. 그러면 Docker 및 컨테이너로 전달됩니다.
Linux (Docker, hermetic):
cd LiteRT/docker_build && ./build_wheel_with_docker.sh
Windows (PowerShell, PATH의 Bazel):
.\ci\build_pip_package_with_bazel_windows.ps1
출력은 dist/에 있습니다.
ai_edge_litert-*.whl- 런타임 휠ai_edge_litert_sdk_{intel,qualcomm,mediatek,samsung}-*.tar.gz- 공급업체 sdist- Intel sdist는 약 5KB입니다. NPU 컴파일러
.so/.dll은pip install시간에 가져오므로 동일한 sdist가 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가 NPU 대신 CPU에서 실행됨 (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) |
SDK sdist는 첫 번째 import ai_edge_litert_sdk_intel에서 NPU 컴파일러를 openvino/libs/에 복사합니다. 복사가 건너뛰어진 경우 (읽기 전용 FS, openvino 누락) openvino가 설치된 후 ai-edge-litert-sdk-intel을 다시 설치한 다음 새 프로세스에서 import ai_edge_litert를 실행합니다. |
Level0 pfnCreate2 result: ZE_RESULT_ERROR_UNSUPPORTED_FEATURE |
NPU 드라이버를 v1.32.1 (Linux)로 업그레이드합니다. |
/dev/accel/accel0을 찾을 수 없음 |
sudo dmesg | grep -i vpu를 사용하여 드라이버를 디버그합니다. 설치 후 재부팅합니다. |
| NPU에 대한 권한이 거부됨 | sudo gpasswd -a ${USER} render && newgrp render. |
| Windows: 기기 관리도구에 NPU가 없음 | Intel 다운로드 센터에서 NPU 드라이버 32.0.100.4724+를 설치합니다. |
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 |
Protobuf ABI / Python 버전 제약조건 - ci/build_pip_package_with_bazel_windows.ps1을 참고하세요. Windows 빌드에는 Python 3.11이 필요합니다. |
제한사항
NPU 기기만 OpenVINO 디스패치 경로를 통해 지원됩니다. CPU 추론의 경우 HardwareAccelerator.CPU만 사용합니다 (XNNPACK).
다음 단계
- 통합 NPU 가이드인 LiteRT를 사용한 NPU 가속으로 시작합니다.
- 해당 변환 및 배포 단계를 따르고 해당하는 경우 Qualcomm을 선택합니다.
- LLM의 경우 LiteRT-LM을 사용하여 NPU에서 LLM 실행을 참고하세요.