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 설치하기 참고
- Docker version 확인
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
andpython3.X-distutils
(according to the Python version),python3-tk
,graphviz
, andlibgraphviz-dev
packages. Use the commandsudo 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/
- 도커 내부에서 Hailo DFC 설치
- (Hailo) Hailo Dataflow Compiler 설치 참고
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 버전에서 컴파일 실패
도커 환경 배포 및 실행
커밋 & 배포
- 작업한 내용을 이미지로 저장
# 현재환경을 이미지로 커밋
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