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 설치
Intel GitHub의 Linux NPU driver release 문서에는 driver설치 방법이 자세히 명시되어 있다.
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 목록 확인
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