테크매니아
FINN 개요 : FPGA에서 딥러닝 NN 실행하기 본문
FINN : A Framework for Fast, Scalable Binarized Neural Network Inference
개요
Xilinx Research Labs에서 FPGA로 딥러닝 구현을 위해 만든 프레임워크이다. Xlinix BNN repo를 보면.. 실체는 FINN을 가르키고있는데, FINN가 본체인 것 같다.
샘플을 보면, VGG-11, FC CNN, MobileNet-v1을 지원 하는데, MobileNet-v1는 Alveo U250보드에서만 지원한다. Alveo U250보드는 찾아보니 PICe인터페이스 서버용 개발 보드인 것 같다. 판매 페이지 같은게 있긴 하지만 개인에게 그냥 팔 것 같진 않다 (....)
GitHub repo
이 프로젝트는 GitHub repo가 많아서 따로 정리 했다.
Main Repo : https://github.com/Xilinx/finn
Example : https://github.com/Xilinx/finn-examples
HLS lib : https://github.com/Xilinx/finn-hlslib.git
Docs : https://xilinx.github.io/finn/
Quickstart
finn-examples repo에 있는 Quickstart를 간단히 따라해 봤다.
python3 -m pip install --upgrade pip setuptools
pip3 install finn-examples
setuptools를 굳이 업데이트 해야 되나 싶었는데, Zynq Z2 기준으로 업데이트를 해야 한다.
그리고 프로젝트를 받아 올 디렉토리로 이동해서 다음 명령대로 한다.
pynq get-notebooks --from-package finn-examples -p .
pynq커멘드가 뭔가 했는데 Xilinx에서 만들어 놓은 tool같다. 이거는 여기에 자세한 정보가 있다.
근데 위 커멘드를 치면 root 권한을 달라 그러고, sudo로 권한을 주면 쓸 수 있는 노트북이 없다고 한다. 이게 검색 해보니 나랑 비슷한 사람이 있다. shell로 하면 되는데 노트북으로 하면 된다고 해서... 노트북으로 해보니까 노트북에서 만든 shell은 root였다..
shell로 접속 할 때는 xilinx 유저로 했는데.. 이게 아닌가 보다. root로 다시 패키지를 실치하고 실행하면 잘 진행 된다.
제대로 노트북을 가져 왔다면 이렇게 샘플 코드가 3개 있다. 아쉽게도 세번째 imagenet은 실행이 안되기 때문에 mnist를 열어서 한 라인씩 보면서 실행하면 된다.
그런데 아래 라인에서 다운로드 오류가 나는 경우가 있다.
mnist.load_mnist_data
다행히 어떤 파일을 어디에 다운받을지 출력을 해줘서.. shell에서 수동으로 커멘드로 다운로드 받았다. 링크의 이름이 비슷한게 많으니 유의해서 4개정도 되는 파일을 다 다운로드 받아야 한다.
그림이 안보이는 경우에는 아래 코드를 추가 해서 실행 시키면 이미지가 보인다.
%matplotlib inline
import matplotlib
import numpy as np
import matplotlib.pyplot as plt