Hailo Dataflow Compiler를 이용한 컴파일 과정을 도커 환경에서 실행하고 이미지파일로 Export 하는 과정

설치환경

Build PC

  • CPU: Intel(R) Xeon(R) w5-3423 @ 12cores
  • RAM: 256GB
  • OS: Ubuntu-22.04 LTS
  • GPU: NVIDIA RTX A6000 x 2ea
  • Target Hailo System: Hailo8
  • Docker Version: 26.1.1

Hailo Version

  • Hailo DFC: 3.27.0
  • Hailo Model Zoo: 2.11.0

사전 준비

Hailo Dataflow Compiler

  • hailo_dataflow_compiler-3.29.0-py3-none-linux_x86_64.whl
  • Hailo 홈페이지에서 회원가입 후 개발자존에서 최신버전 다운로드 가능

Docker 환경

Docker 설치

docker --version
>> Docker version 26.1.1, build 4cf5afa

Nvidia Container Toolkit

  • (Docker) Docker - Nvidia CUDA 설치 참고하여 nvidia-container-toolkit 설치
  • 본 환경에서는 nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 이미지 사용함
  • nvidia-container-toolkit 설치 확인
docker run --rm --gpus all nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 nvidia-smi

도커 환경 세팅

컨테이너 생성

  • cuda 11.8이 설치된 ubuntu-22.04 이미지 pull 및 컨테이너 실행
docker run -i -t -d --gpus all --name hailo-compile nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04

컨테이너 - 기본 설치

  • 컨테이너 시작 및 접속
docker start [container name]
docker attach [container name]
  • 컨테이너 내부에서 필수 패키지 설치
# apt update
apt update
apt upgrade
# git 설치
apt install git
# python 설치ls
apt install python3
# pip 설치
apt install python3-pip
# 개발 패키지 설치
apt install build-essential

컨테이너 - Hailo DFC 설치

  • 의존 패키지 설치
  • python3.X-dev and python3.X-distutils (according to the Python version), python3-tk, graphviz, and libgraphviz-dev packages. Use the command sudo apt-get install PACKAGE for installation.
apt install python3-dev
pat install python3-distutils
apt install python3-tk
apt install graphviz
apt install libgraphviz-dev
  • python 가상환경 설치
pip install virtualenv
virtualenv <VENV_NAME>
. <VENV_NAME>/bin/activate
  • Hailo DFC 설치 패키지 docker 내부로 복사
docker cp ./hailo_dataflow_compiler-3.27.0-py3-none-linux_x86_64.whl hailo_compile:/home/
pip install hailo_dataflow_compiler-3.27.0-py3-none-linux_x86_64.whl

컨테이너 - Hailo Model Zoo 설치

  • Hailo Model Zoo 가져오기
  • (git clone으로 최신 버전을 가져와도 되지만, 버전 이슈로인해 v2.11.0 복사하여 사용)
git clone https://github.com/hailo-ai/hailo_model_zoo.git
  • 패키지 설치
cd hailo_model_zoo; pip install -e .
  • 실행 테스트
hailomz info mobilenet_v1
  • 컴파일 테스트
hailomz compile yolov8n

+) ISSUE-1

  • libGL 관련 에러
# ERROR
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
# 해결
>> apt install libgl1-mesa-glx

ISSUE-2

  • optimize 시 GPU를 못찾는 문제
  • cuda toolkit과 cudnn을 설치하여 해결
  • cudnn이 사전 설치되어 있는 도커 이미지를 베이스로 구축해봐도 될듯(추천)

+) ISSUE-3

  • python virtualenv 사용안하고 root python에 패키치 구축했을 때, 컴파일 시 에러남
[error] Failed to produce compiled graph
[error] TypeError: expected str, bytes or os.PathLike object, not NoneType
root@18a6d840ecb4:~/workspace/my_hailo/test# hail

결과

  • yolov8n 모델 기반 소량의 coco 데이터셋으로 컴파일 완료
  • 버전 이슈가 있어 DFC 3.29.0 버전에서 컴파일 실패

+full


도커 환경 배포 및 실행

커밋 & 배포

  • 작업한 내용을 이미지로 저장
# 현재환경을 이미지로 커밋
docker commit hailo_compile hailo_compiler:test1 
 
# 이미지를 로컬 파일로 저장
docker save -o output_file.tar image_name

실행

  • docker 컨테이너에 명령어를 던져 외부에서 실행
docker exec 52521ea615f1 sh /root/workspace/yolo_sample.sh