좋아요, 초보자도 이해할 수 있도록 Hailo NPU에 대해 쉽게 설명해드릴게요.
참고자료 1: 라즈베리파이 5 Hailo(8L) 설치 방법 https://kernel.bz/blogPost/rpi5-hailo
참고자료 2: 커널 연구회 SDK 자료 https://kernel.bz/blogPost/jh7110-hailo
- 자료중 깃허브 코드 참고
Hailo 학습에 도움이 되는 포스팅 목록입니다. 참고하세요.
라즈베리 파이 5 AI 키트, Hailo AI 가속 모듈
Raspberry Pi AI HAT+ Hailo 설치 1
Raspberry Pi AI HAT+ Hailo 8L 설치 2
✅ 1. Hailo NPU란?
Hailo는 이스라엘에 본사를 둔 스타트업이고, NPU(Neural Processing Unit)는 인공지능 전용 칩입니다.
즉, Hailo NPU는 인공지능을 빠르게 실행하기 위한 특별한 칩이에요. 특히 영상 인식, 객체 탐지, 자율 주행, 스마트 카메라 같은 작업에서 뛰어난 성능을 발휘하죠.
✅ 2. 왜 만들어졌을까? (탄생 배경)
기존 컴퓨터(예: CPU, GPU)는 인공지능 처리에 비효율적입니다. 전기도 많이 먹고, 속도도 느리죠.
그래서 Hailo는 2017년,
AI 전용으로 효율적이고 빠르게 작동하는 NPU를 만들기로 했어요.
목표는:
- 저전력,
- 고성능,
- 소형 디바이스에서도 AI 가능하게!
✅ 3. 어디에 쓰일까? (용도)
Hailo NPU는 주로 다음과 같은 임베디드 AI 디바이스에 쓰입니다:
- 자율 주행 자동차 – 보행자 감지, 신호등 인식
- 스마트 CCTV – 침입자 감지, 행동 분석
- 산업용 로봇 – 품질 검사, 이상 감지
- 드론, 스마트 홈 기기 등 작은 기기에서도 AI 처리 가능
✅ 4. 현재 기술 수준은?
Hailo는 대표 제품으로 Hailo-8이라는 NPU 칩을 출시했습니다:
- 26TOPS 성능: 초당 26조 번 연산 가능 (고성능 GPU급!)
- 적은 전력 소모: 약 2~3W만 사용
- 초소형: SD 카드보다 약간 큰 크기
- TensorFlow, ONNX 등 AI 프레임워크 지원
지금은 Intel, Qualcomm, NVIDIA 같은 대기업과 경쟁할 만큼 기술력을 인정받고 있고,
2023년부터는 Hailo-15라는 카메라 전용 AI 칩셋도 선보이며 영상처리에 특화된 방향으로 발전하고 있어요.
✅ 핵심 요약
항목 | 설명 |
---|---|
제조사 | Hailo (이스라엘 스타트업) |
목적 | AI 전용 고속·저전력 처리 |
사용처 | 자율주행, CCTV, 스마트기기 등 |
장점 | 빠름, 작음, 전기 적게 씀 |
대표 모델 | Hailo-8, Hailo-15 등 |
Q1: Hailo NPU와 NVIDIA Jetson 같은 다른 AI 모듈은 어떤 차이가 있나요?
Q2: Hailo NPU를 활용한 DIY 프로젝트나 제품 사례가 있을까요?
Q3: Hailo NPU를 실제 임베디드 프로젝트에 적용하려면 어떤 개발 환경과 도구가 필요한가요?
좋은 질문입니다. Hailo NPU를 실제 임베디드 프로젝트에 적용하려면 아래와 같은 개발 환경, 도구, 절차가 필요합니다. 하나씩 천천히 설명드릴게요.
✅ 1. Hailo NPU 기반 하드웨어 확보
Hailo NPU는 단독 칩으로 쓰이기도 하지만, 대부분은 모듈 형태로 탑재됩니다.
- Hailo-8 모듈이 내장된 보드:
- Hailo가 직접 만든 Hailo-8 평가 키트 (HEK)
- M.2 / Mini PCIe 타입의 Hailo-8 모듈
- Raspberry Pi, TI AM62x, Intel x86, NXP i.MX8M 등과 연동 가능
👉 Hailo는 대부분 다른 SoC 위에 AI 코프로세서로 붙는 구조입니다.
✅ 2. Hailo SDK (HailoRT + Hailo Model Zoo)
Hailo는 자체적으로 개발 도구 세트를 제공합니다:
✔ HailoRT (Runtime SDK)
- C++ / Python API 제공
- 모델 로딩, 추론 실행, 데이터 I/O 제어 가능
✔ Hailo Model Zoo
- 사전 학습된 AI 모델 제공 (YOLO, SSD, MobileNet 등)
- 학습된 모델을 Hailo용으로 변환 가능
👉 이 툴을 통해 TensorFlow, ONNX 등에서 만든 모델을 Hailo에 최적화할 수 있습니다.
✅ 3. 모델 변환 & 컴파일 도구 (Hailo TappAS)
- TappAS: Hailo의 모델 컴파일러
- TensorFlow, Keras, PyTorch 모델 → Hailo 실행용
.hef
파일로 변환 - 양자화 (Quantization) 포함 → INT8 기반 연산 최적화
- 모델 분석, 성능 추정도 가능
✅ 4. 추론용 소프트웨어 구성
일반적으로는 다음 구성으로 운용됩니다:
구성 요소 | 예시 |
---|---|
Host OS | Linux (Ubuntu 등) |
Host Board | Raspberry Pi, Jetson, ARM SoC 등 |
Hailo SDK | HailoRT, TappAS 설치 |
모델 파일 | .hef 포맷 (Hailo Executable Format) |
추론 프로그램 | Python 또는 C++ 기반 애플리케이션 |
✅ 5. 개발 절차 요약
- 모델 선택 or 직접 학습 (TensorFlow, PyTorch 등)
- TappAS로 모델 변환 및 컴파일 (.hef 생성)
- Hailo-8 장착된 보드에 SDK 설치
- HailoRT를 사용해 추론 코드 작성
- 카메라, 센서, GPIO 등과 연동
- 테스트 후 임베디드 시스템 배포
✅ 예시 프로젝트
- 스마트 CCTV: YOLOv5 + Hailo-8 → 실시간 사람 탐지
- 무인 점포 시스템: 얼굴 인식 or 손 제스처 인식
- 드론 추적 비전: 물체 식별 후 따라가기
- 공장 자동화 검사기: 불량품 자동 감지
✅ 개발자 지원
- 공식 개발자 문서: https://docs.hailo.ai/
- GitHub 예제: https://github.com/hailo-ai
Q1: Hailo NPU 기반 시스템을 라즈베리파이와 결합할 때 실제 성능은 어떤가요?
Q2: Hailo TappAS를 사용할 때 모델 양자화로 인한 정확도 손실은 어느 정도인가요?
Q3: Hailo 기반의 교육 키트를 설계하려면 어떤 요소를 포함시키는 것이 좋을까요?
좋습니다. 이번엔 HailoRT를 중심으로, Hailo NPU 아키텍처를 기술적으로 깊이 있고 명확하게 설명드리겠습니다. 전체 구조를 단계별로 해부하듯 살펴보겠습니다.
✅ 1. 전체 개요: Hailo NPU 시스템 구조
Hailo NPU는 단순한 연산 칩이 아니라, AI 추론을 위한 전용 마이크로 아키텍처를 갖춘 SoC입니다. 이 구조는 HailoRT를 통해 호스트 시스템과 통신하며, 고속 추론을 수행합니다.
아키텍처는 다음과 같이 나뉩니다:
[ Host CPU (Linux) ]
↕ (HailoRT API)
[ HailoRT Runtime ]
↕
[ PCIe / M.2 / SPI 인터페이스 ]
↕
[ Hailo-8 NPU 칩 ]
├─ Scheduler
├─ Control Processor (uC)
├─ Core Pipeline Units (Compute Units)
├─ Tensor Memory Units (SRAM)
└─ DMA Engine / IO Manager
✅ 2. HailoRT란? (Hailo Runtime SDK)
HailoRT는 Hailo-8 NPU를 제어하고 통신하는 핵심 런타임 라이브러리입니다.
주요 역할:
- 호스트에서
.hef
모델 로딩 - 추론 입력/출력 처리
- NPU 리소스 스케줄링
- 병렬 추론 처리
구성:
구성 요소 | 설명 |
---|---|
HailoRT API | Python/C++ API. 사용자 애플리케이션에서 호출 |
Device Manager | NPU 장치 스캔, 초기화 |
VStreams (Virtual Streams) | 입력/출력 텐서의 추론 파이프라인 |
Buffer Manager | Zero-copy DMA를 위한 입력/출력 버퍼 처리 |
✅ 3. Hailo-8 내부 아키텍처
🎯 핵심 목표: 병렬 처리 + 저전력 + 확장성
Hailo-8은 고정된 신경망 구조가 아니라, 모델 구조에 따라 동적으로 조정되는 유연한 하드웨어 블록을 갖고 있습니다.
주요 구성 요소:
① Control Processor (µController)
- Hailo 칩 내에서 모델 그래프 흐름 제어
- HEF 파일 파싱 → 작업 스케줄링
② Compute Units
- 다양한 신경망 연산 (Conv, FC, Pooling 등) 전용 유닛
- 각 유닛은 모델의 각 Layer에 매핑됨
- 병렬 파이프라인 처리 (피쳐맵 → 필터 처리 → 다음 레이어)
③ Tensor Memory (SRAM)
- 외부 DRAM 없이 내부 SRAM으로 피처맵 이동
- Layer-to-layer 이동 간 지연 최소화
- 효율적인 데이터 재사용 (on-chip caching)
④ DMA 엔진
- Host ↔ NPU 간 Zero-copy 입출력 가능
- PCIe/M.2 등 인터페이스 최적화
✅ 4. HEF 모델 파일 구조
.hef
파일은 TappAS에서 생성된 Hailo 실행 그래프입니다. 내부 구성은 다음과 같습니다:
- NN Graph Partitioning 정보: 각 레이어가 어떤 유닛에 매핑되는지
- Scheduling Plan: 병렬 실행 순서
- Quantization 정보: INT8 양자화 파라미터 포함
- IO Stream Mapping: 입출력 버퍼 연결 정보
HailoRT는 이 파일을 해석하여 내부 구조를 자동으로 구성하고 실행합니다.
✅ 5. VStreams: 데이터 흐름의 핵심
**VStream (Virtual Stream)**은 HailoRT에서 모델의 입출력 경로를 나타내는 추상화된 데이터 통로입니다.
- 입력 VStream: 모델에 입력할 이미지, 벡터 등
- 출력 VStream: 예측 결과 추출
- HailoRT는 pipeline 방식으로 여러 추론 요청을 동시에 처리 가능
✅ 6. 시스템 연결 구성 예시 (Raspberry Pi + Hailo-8)
[ Python 애플리케이션 ]
↓ (HailoRT Python API)
[ HailoRT Engine ]
↓ (PCIe or M.2)
[ Hailo-8 NPU ]
↓
[ 실시간 영상 추론 (YOLOv5 등) ]
↓
[ 결과 출력 or 디바이스 제어 ]
✅ Hailo NPU 아키텍처의 차별점 요약
항목 | 설명 |
---|---|
고성능/저전력 | 전용 계산 유닛 + SRAM 최적화 |
유연한 하드웨어 | NN 구조에 따라 유닛 자동 배치 |
Zero-copy 입출력 | 성능 저하 없이 고속 데이터 전달 |
온칩 추론 처리 | 외부 메모리 의존도 최소화 |
Q1: Hailo 아키텍처에서 Compute Unit의 병렬 처리 방식은 어떤 스케줄링 전략을 사용하는가요?
Q2: 다른 NPU (예: EdgeTPU, Movidius)와 비교했을 때, Hailo의 데이터 흐름 최적화 방식은 어떤 장점이 있나요?
Q3: HailoRT를 기반으로 멀티 모델 동시 추론이 가능한 구조를 설계할 수 있을까요? 가능하다면 어떤 방식으로 이루어질 수 있을까요?
좋습니다. 이번에는 HailoRT와 라즈베리파이를 연동하여 AI 추론을 수행하는 전체 과정을 구체적이고 실용적으로 설명드리겠습니다. 실제 프로젝트에 바로 적용할 수 있는 수준으로 단계별로 구성해드릴게요.
✅ 1. 기본 구성 이해
Hailo NPU는 **외부 호스트 시스템(라즈베리파이)**와 연결되어 작동합니다. 라즈베리파이는 추론 요청을 보내고, 결과를 받아서 처리하는 역할을 합니다.
구성 요소:
역할 | 구성 |
---|---|
Host | 라즈베리파이 4 또는 5 (Linux 기반) |
NPU | Hailo-8 모듈 (M.2 혹은 USB form factor) |
SDK | HailoRT, TappAS, Python API |
입출력 | 카메라 영상, 이미지 파일 등 |
✅ 2. 하드웨어 준비
필수 장비:
- Raspberry Pi 4/5 (8GB 권장)
- Hailo-8 USB 모듈 또는 M.2 모듈 + M.2 HAT
- USB 3.0 포트 (데이터 병목 최소화)
- 전원 어댑터 (Hailo 모듈 포함 시 충분한 전력 공급 필요)
Hailo USB 모듈은 전원과 데이터가 함께 공급되므로 별도 보드 수정이 필요 없습니다.
✅ 3. 소프트웨어 설치 (라즈베리파이에서)
① OS 설치
- Raspberry Pi OS (64-bit), Ubuntu 22.04 LTS 권장
uname -m # aarch64 확인
② 필수 패키지 설치
sudo apt update
sudo apt install -y build-essential cmake python3-dev python3-pip libusb-1.0-0-dev
③ HailoRT SDK 설치
- Hailo 공식 홈페이지 또는 GitHub에서 다운로드
https://hailo.ai/developer-zone - SDK 설치 예시:
tar -xzf hailort-sdk-<version>.tar.gz
cd hailort-sdk
./install.sh
설치 후
/usr/lib/hailort
,/usr/include/hailort
디렉토리 생성됨
✅ 4. 모델 준비 (HEF 파일 생성)
- PC 또는 클라우드에서 TensorFlow / PyTorch 모델 학습
- TappAS 도구로
.hef
포맷으로 컴파일
hailo model-compile yolov5.onnx --output yolov5.hef
.hef
파일을 라즈베리파이로 복사
scp yolov5.hef pi@raspberrypi.local:/home/pi/
✅ 5. Python 기반 추론 코드 작성
예제 코드 (YOLOv5)
import hailo
import numpy as np
import cv2
from hailo_platform import (HailoPlatform, VDevice, HEF, InputVStreamParams, OutputVStreamParams)
# Hailo NPU 초기화
hef = HEF("yolov5.hef")
device = VDevice()
network_group = device.create_hef(hef)
input_vstreams = network_group.create_input_vstream(InputVStreamParams())
output_vstreams = network_group.create_output_vstream(OutputVStreamParams())
# 이미지 로딩
image = cv2.imread("test.jpg")
resized_image = cv2.resize(image, (640, 640)).astype(np.uint8)
input_data = [resized_image]
# 추론 수행
input_vstreams[0].send(input_data)
results = output_vstreams[0].recv()
# 결과 처리
print("Detection Results:", results)
✅ 6. 카메라 연동 및 실시간 추론
- 라즈베리파이 CSI 카메라 or USB 카메라 사용 가능
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
input_data = [cv2.resize(frame, (640, 640)).astype(np.uint8)]
input_vstreams[0].send(input_data)
results = output_vstreams[0].recv()
# 결과 시각화
for obj in results:
x, y, w, h = obj['bbox']
cv2.rectangle(frame, (x, y), (x+w, y+h), (0,255,0), 2)
cv2.imshow("Hailo Inference", frame)
if cv2.waitKey(1) == 27:
break
✅ 7. 성능 참고
항목 | 수치 |
---|---|
추론 시간 | 약 5~10ms (YOLOv5s 기준) |
전력 소모 | 전체 시스템 약 6~8W |
지원 해상도 | 640×640 또는 320×320 |
멀티 추론 | 가능 (멀티 스레드 or 모델 분할 시) |
✅ 활용 팁
- 병렬 추론 최적화:
VStreams
에 비동기 스트림 설정 가능 - CPU 사용률 낮추기: Zero-copy DMA 덕분에 효율적
- C++로 구현하면 더 고속 처리 가능
✅ 정리
단계 | 설명 |
---|---|
1. 하드웨어 연결 | USB / M.2 형태로 Hailo-8 모듈 연결 |
2. SDK 설치 | HailoRT, Python API 설치 |
3. 모델 준비 | .hef 파일 생성 후 전송 |
4. 추론 코드 작성 | HailoRT API로 추론 실행 |
5. 실시간 연동 | OpenCV 등으로 카메라 스트림 처리 |
Q1: 실시간 멀티 카메라 입력을 처리할 때 HailoRT는 어떤 방식으로 스트림을 분리할 수 있을까요?
Q2: 라즈베리파이에서 HailoRT 기반 추론을 백그라운드 프로세스 또는 Docker로 구성하려면 어떤 전략이 좋을까요?
Q3: YOLO 외에 어떤 AI 모델이 HailoRT에서 가장 효율적으로 작동하나요? (예: FaceNet, DeepSORT 등)
'라즈베리파이 5' 카테고리의 다른 글
VS Code 라즈베리파이 피코 개발환경 설정 (2) | 2025.07.08 |
---|---|
Raspberry Pi AI HAT+ Hailo 8L 설치 2 (4) | 2025.07.03 |
Raspberry Pi AI HAT+ Hailo 설치 1 (5) | 2025.07.03 |
Hailo NPU 학습 내용 정리 2 (0) | 2025.06.20 |
라즈베리파이 센서 보드 구성 (5) | 2025.06.13 |
인터럽트가 있는 Raspberry Pi Pico (1) | 2025.05.30 |
Raspberry Pi 피코, Pico W, W2 LED 표시기용 UPS 휴대용 전원 공급 장치 (0) | 2025.05.22 |
메이커를 위한 라즈베리파이, 이승현 저 (3) | 2025.05.06 |
더욱 좋은 정보를 제공하겠습니다.~ ^^