Intel 14세대 Meteor Lake 부터 NPU가 함께 embedding되어 제공된다. Linux system에서 사용하려면 kernel version 6.2이상이 설치되어 있어야 한다.
NPU 디바이스 확인
CPU: Intel(R) Core(TM) Ultra 5
OS: Ubuntu 24.04
Linux kernel: 6.14.0-33-generic
lspci 명령어로 NPU 디바이스가 인식되어 있는지를 확인할 수 있다.
$ lspci -v|grep -A 9 NPU
00:0b.0 Processing accelerators: Intel Corporation Arrow Lake NPU (rev 01)
DeviceName: Onboard - Other
Subsystem: Gigabyte Technology Co., Ltd Device 7270
Flags: bus master, fast devsel, latency 0, IRQ 154, IOMMU group 6
Memory at 6408000000 (64-bit, non-prefetchable) [size=128M]
Memory at 6410065000 (64-bit, non-prefetchable) [size=4K]
Capabilities: <access denied>
Kernel driver in use: intel_vpu
Kernel modules: intel_vpu
커널에서 잘 인식 되었다면 아래의 경로에 디바이스 노드가 보이게 된다.
$ ls -l /dev/accel/accel0 crw-rw---- 1 root render 261, 0 Oct 10 19:27 /dev/accel/accel0
Linux용 NPU driver 설치
이제 NPU를 Linux에서 사용하기 위한 드라이버를 설치해야 한다. 관련한 내용은 Intel GitHub의 Linux NPU driver release 문서에 자세히 설명되어 있다.
GitHub의 release page를 찾아가서 압축파일을 다운로드 받아 dpkg로 설치하면 모든 준비가 완료된다.
wget https://github.com/intel/linux-npu-driver/releases/download/v1.24.0/linux-npu-driver-v1.24.0.20251003-18218973328-ubuntu2404.tar.gz tar -xf linux-npu-driver-v1.24.0.20251003-18218973328-ubuntu2404.tar.gz sudo apt update sudo apt install libtbb12 sudo dpkg -i *.deb # Level zero가 설치되지 않은경우에만 wget https://github.com/oneapi-src/level-zero/releases/download/v1.24.2/level-zero_1.24.2+u24.04_amd64.deb sudo dpkg -i level-zero*.deb
OpenVINO device 목록 확인
OpenVINO의 Core() class안에 있는 available_devices 멤버 변수를 출력하면 사용가능 한 추론 장치의 목록이 표시되는데 아래와 같이 CPU, GPU와 함께 NPU가 표시되는 것을 볼 수 있다.
python3 -m venv .venv source .venv/bin/activate (.venv) pip install setuptools (.venv) pip install openvino openvino-dev
(.venv)$ python3 -c "from openvino import Core; print(Core().available_devices)" ['CPU', 'GPU', 'NPU']
성능측정 결과
Ultralytics의 문서를 따라 YOLOV11n을 OpenVINO용으로 변환해서 OpenVINO benchmark_app으로 측정하였다.
NPU 벤치마크 결과는 다음과 같다. CPU보다 다소 좋은 성능을 보이고, 실행하는 동안 CPU utilization이 증가되지 않는 것이 확인된다.
$ benchmark_app -m ./yolo11n_openvino_model/yolo11n.xml -d NPU ... [ INFO ] Execution Devices:['NPU'] [ INFO ] Count: 9704 iterations [ INFO ] Duration: 60033.42 ms [ INFO ] Latency: [ INFO ] Median: 24.50 ms [ INFO ] Average: 24.52 ms [ INFO ] Min: 23.54 ms [ INFO ] Max: 69.62 ms [ INFO ] Throughput: 161.64 FPS
CPU로 수행한 결과는 다음과 같다.
$ benchmark_app -m ./yolo11n_openvino_model/yolo11n.xml -d CPU ... [ INFO ] Execution Devices:['CPU'] [ INFO ] Count: 6351 iterations [ INFO ] Duration: 60047.25 ms [ INFO ] Latency: [ INFO ] Median: 24.51 ms [ INFO ] Average: 28.31 ms [ INFO ] Min: 23.05 ms [ INFO ] Max: 45.46 ms [ INFO ] Throughput: 105.77 FPS
iGPU로 실행했을 때 throuput은 가장 좋으나 Max latency가 높은 것이 관찰되는데 아마도 로딩을 위한 메모리 복사 소요 시간으로 추정된다.
$ benchmark_app -m ./yolo11n_openvino_model/yolo11n.xml -d GPU ... [ INFO ] Execution Devices:['GPU.0'] [ INFO ] Count: 87056 iterations [ INFO ] Duration: 60013.22 ms [ INFO ] Latency: [ INFO ] Median: 10.77 ms [ INFO ] Average: 10.83 ms [ INFO ] Min: 4.51 ms [ INFO ] Max: 1010.93 ms [ INFO ] Throughput: 1450.61 FPS