Hailo with RaspberryPi
Hailo AI Processor는 엣지(Edge) AI 컴퓨팅에 최적화된 고성능 NPU(Neural Processing Unit)로, 이스라엘의 AI 반도체 스타트업 Hailo에서 개발하였습니다.
이 프로세서는 전통적인 CPU나 GPU에 비해 훨씬 낮은 전력 소비와 더 높은 처리 효율을 제공하며, 엣지 디바이스에서 실시간 AI 추론을 가능하게 합니다.
개발 환경 구축
라즈비안(Raspbian) 환경에서는 sudo apt install hailo-all 명령어를 통해 Hailo 개발 환경을 손쉽게 구축할 수 있습니다.
-
Hailo 커널 디바이스 드라이버 및 펌웨어가 설치됩니다.
-
커널 디바이스 드라이버 설치
hailo_pci.ko모듈은 다음 경로에 설치됩니다:/lib/modules/$(uname -r)/kernel/drivers/media/pci/hailo/hailo_pci.ko.xz$\rightarrow$ 설치 여부는
modinfo hailo_pci명령어를 통해 확인할 수 있습니다. -
펌웨어 설치
hailo8_fw.bin은/lib/firmware/hailo/hailo8_fw.bin에 설치되며,udev 규칙 파일
60-hailofw.rules을lib/udev/rules.d/60-hailofw.rules에 위치합니다. -
작동 과정 요약
- 드라이버 로딩:
hailo_pci.ko가 커널에 로드되며, Hailo NPU와의 연결을 초기화합니다. - 펌웨어 전송: 드라이버는
hailo8_fw.bin펌웨어를 PCIe를 통해 Hailo-8 NPU에 전송합니다.
- 드라이버 로딩:
-
-
HailoRT 미들웨어 소프트웨어가 설치됩니다.
-
Hailo Tappas core 후처리 라이브러리가 설치됩니다.
-
rpicam-apps기반 Hailo 후처리 데모가 설치됩니다.
PCIe 규격 정보
라즈베리파이 5에서는 기본적으로 PCIe2.0 x1 레인을 지원하며, 설정을 통해 PCIe3.0 x1 레인을 사용할 수 있습니다.
| 버전 | 인코딩 | 데이터 전송률 | 레인(x1) |
|---|---|---|---|
| PCIe1.0 | 8b/10b | 2.5 GT/s | 250 MB/s |
| PCIe2.0 | 8b/10b | 5 GT/s | 500 MB/s |
| PCIe3.0 | 128b/130b | 8 GT/s | 984 MB/s |
| PCIe4.0 | 128b/130b | 16 GT/s | 1.969 GB/s |
실질 대역폭 계산 방식
- PCIe2.0 x1
- 실질 데이터 전송률 : 5.0 GT/s x 8b/10b = 4.0 Gbps
- 단위 변환 : 4.0Gbps / 8 = 500 MB/s
- PCIe3.0 x1
- 실질 데이터 전송률 : 8.0 GT/s $\div$ 128b/130b = 7.877 Gbps
- 단위 변환 : 7.877 Gbps $\div$ 8 = 984 MB/s
Hailo-8과 Hailo-8L의 벤치마크 비교
- 트랜스포머 기반 모델처럼 행렬 곱 연산이 주를 이루는 경우에는 Hailo-8과 Hailo-8 간 성능 차이가 크지 않습니다.
- CNN 기반 모델 처럼 합성곱 연산 비중이 높은 경우에는 두 기기간 성능 차이가 크게 나타납니다.
| Network Name | Hailo-8 (FPS) | Hailo-8L (FPS) | 연산 유형 | 성능 향상 (%) |
|---|---|---|---|---|
| cas_vit_m | 47 | 38 | 행렬곱 | 23.68 |
| cas_vit_s | 71 | 55 | 행렬곱 | 29.09 |
| cas_vit_t | 31 | 27 | 행렬곱 | 14.81 |
| deit_base | 28 | 20 | 행렬곱 | 40.00 |
| deit_small | 69 | 53 | 행렬곱 | 30.19 |
| deit_tiny | 89 | 68 | 행렬곱 | 30.88 |
| efficientformer_l1 | 96 | 79 | 행렬곱 | 21.52 |
| efficientnet_l | 221 | 78 | CNN | 183.33 |
| efficientnet_lite0 | 1952 | 1057 | CNN | 84.58 |
| efficientnet_lite1 | 1668 | 159 | CNN | 949.06 |
| efficientnet_lite2 | 977 | 108 | CNN | 804.63 |
| efficientnet_lite3 | 512 | 111 | CNN | 361.26 |
| efficientnet_lite4 | 273 | 73 | CNN | 273.97 |
| efficientnet_m | 984 | 155 | CNN | 534.84 |
| efficientnet_s | 1232 | 548 | CNN | 124.82 |
| fastvit_sa12 | 1113 | 138 | CNN | 706.52 |
| hardnet39ds | 1975 | 277 | CNN | 612.64 |
| hardnet68 | 138 | 115 | CNN | 20.00 |
| inception_v1 | 2454 | 309 | CNN | 694.17 |
| levit128 | 128 | 102 | 행렬곱 | 25.49 |
| levit192 | 134 | 98 | 행렬곱 | 36.73 |
| levit256 | 99 | 78 | 행렬곱 | 26.92 |
| levit384 | 65 | 51 | 행렬곱 | 27.45 |
| mobilenet_v1 | 3305 | 2565 | CNN | 28.85 |
| mobilenet_v2_1.0 | 2597 | 1738 | CNN | 49.42 |
| mobilenet_v2_1.4 | 1652 | 1098 | CNN | 50.46 |
| mobilenet_v3 | 3697 | 1936 | CNN | 90.96 |
| mobilenet_v3_large_minimalistic | 3156 | 2778 | CNN | 13.61 |
| regnetx_1.6gf | 2551 | 1339 | CNN | 90.52 |
| regnetx_800mf | 3498 | 2450 | CNN | 42.78 |
| repghost_1_0x | 242 | 189 | CNN | 28.04 |
| repghost_2_0x | 140 | 111 | CNN | 26.13 |
| repvgg_a1 | 2707 | 1346 | CNN | 101.11 |
| repvgg_a2 | 1132 | 145 | CNN | 680.69 |
| resmlp12_relu | 1429 | 45 | 행렬곱 | 3075.56 |
| resnet_v1_18 | 2718 | 1281 | CNN | 112.18 |
| resnet_v1_34 | 1505 | 162 | CNN | 829.01 |
| resnet_v1_50 | 1372 | 138 | CNN | 894.20 |
| resnext26_32x4d | 1630 | 201 | CNN | 711.44 |
| resnext50_32x4d | 761 | 126 | CNN | 503.97 |
| squeezenet_v1.1 | 3034 | 2514 | CNN | 20.68 |
| swin_small | 16 | 12 | 행렬곱 | 33.33 |
| swin_tiny | 28 | 23 | 행렬곱 | 21.74 |
| vit_base | 29 | 20 | 행렬곱 | 45.00 |
| vit_base_bn | 40 | 35 | 행렬곱 | 14.29 |
| vit_small | 70 | 54 | 행렬곱 | 29.63 |
| vit_small_bn | 131 | 97 | 행렬곱 | 35.05 |
| vit_tiny | 91 | 67 | 행렬곱 | 35.82 |
| vit_tiny_bn | 206 | 193 | 행렬곱 | 6.74 |
라즈베리파이와 Hailo-8/8L의 Latency 비교
| Network Name | 연산 유형 | Raspberry Pi 5 | Hailo-8 | Hailo-8L |
|---|---|---|---|---|
| repvgg_a2 | CNN | 266.10 ± 36.20 | 3.973 ± 0.006 (6600.6%) | 33.548 ± 0.187 (693.2%) |
| vit_tiny | 행렬곱 | 86.77 ± 16.57 | 24.441 ± 0.036 (254.9%) | 31.658 ± 0.040 (174.2%) |