2 분 소요

Hailo AI Processor는 엣지(Edge) AI 컴퓨팅에 최적화된 고성능 NPU(Neural Processing Unit)로, 이스라엘의 AI 반도체 스타트업 Hailo에서 개발하였습니다.

이 프로세서는 전통적인 CPU나 GPU에 비해 훨씬 낮은 전력 소비와 더 높은 처리 효율을 제공하며, 엣지 디바이스에서 실시간 AI 추론을 가능하게 합니다.

개발 환경 구축

라즈비안(Raspbian) 환경에서는 sudo apt install hailo-all 명령어를 통해 Hailo 개발 환경을 손쉽게 구축할 수 있습니다.

  1. 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.ruleslib/udev/rules.d/60-hailofw.rules에 위치합니다.

    • 작동 과정 요약

      • 드라이버 로딩: hailo_pci.ko가 커널에 로드되며, Hailo NPU와의 연결을 초기화합니다.
      • 펌웨어 전송: 드라이버는hailo8_fw.bin 펌웨어를 PCIe를 통해 Hailo-8 NPU에 전송합니다.
  2. HailoRT 미들웨어 소프트웨어가 설치됩니다.

  3. Hailo Tappas core 후처리 라이브러리가 설치됩니다.

  4. 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
    1. 실질 데이터 전송률 : 5.0 GT/s x 8b/10b = 4.0 Gbps
    2. 단위 변환 : 4.0Gbps / 8 = 500 MB/s
  • PCIe3.0 x1
    1. 실질 데이터 전송률 : 8.0 GT/s $\div$ 128b/130b = 7.877 Gbps
    2. 단위 변환 : 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%)

Reference

카테고리:

업데이트: