※ 글쓰기에 앞서 Dell PowerEdge R720 모델에서 Xilinx Example을 돌리려고 하면 오류가 많이 발생합니다.
오류가 발생하는 원인에 대한 포스팅은 아래 글들을 참고해주세요.)
참고 1 - AVX (Advanced Vecter eXtension) 란?
으어어 오늘은 Xilinx 사에서 제조한 가속기 카드인 Alveo Card U200 모델을 장착해보겠다.
이거는 어느용도로 사용되냐면... AI Computing에 주로 사용된다. (필자는 블록체인 분야 연구 중인데...)
기존에 이제 DeepLearning에서 추론할 때 CPU와 GPU, 특히 좀더 세세하게 설명하자면 그 안에 논리연산하는 장치인 ALU (Arithmetic-Logic Unit)를 사용해서 AI 연산을 한다.
ALU가 무엇인지는 이 링크를 참조해주세요. https://en.wikipedia.org/wiki/Arithmetic_logic_unit
하지만 CPU는 코어 당 처리할 수 있는 Image 수가 많지만 단위 코어 당 ALU의 수가 적고
GPU는 코어 당 처리할 수 있는 Image의 수가 상대적으로 적은편이지만 단위 코어 당 많은 수의 ALU를 보유하고 있다.
그렇기 때문에 대개 AI 추론연산에 있어서 CPU와 GPU의 성능 비교 논문은 상당 수 많이 존재한다.
허나... FPGA라고 들어본 적 있는가 ?
FPGA (Field-Programmable Gate Array)의 약자로 말그대로 FPGA라는 회로 소자 내부를 개발자가 직접 프로그래밍을 해서 AI연산을 수행한다는 의미다. (필자는 여기와서 처음에 FPGA 프로그래밍 하는줄 알았음)
근데 아마 FPGA는 필자와 같은 컴돌이들은 보통 프로그래밍을 접할기회가 매우 드물다. 주로 전자공학생도들이 많이 접해본다고 하는데... 필자도 궁금해서 찾아보긴 했으나 프로그래밍이 쉽지 않아보였다. (Physical Layer보다 더 밑 단계의 프로그래밍 과정으로 예상) 거의 뭐... Assembly 코딩과 비슷했는데 여기서 말하는 Assembly 코딩은 주로 MIPS나 GAS, MASM 등이 있다. 자세하겐 모르니 관심있는분들은 찾아보도록
다시 본론으로 돌아와서 말그대로 회로 소자를 내가 직접 프로그래밍하니깐 상대적으로 GPU에 비해 AI 추론연산에서 Throughput (Image/s), Latency 등의 수치들이 상당히 증감효과를 보일 수 밖에 없었더라.
아래는 Xilinx 사에서 제공하는 Benchmark 에 대한 글이다.
위 그림에서 보이는 바와 같이 throughput은 압도적으로 상승하고 latency는 매우 낮게 측정되는 것을 확인할 수 있다.
자 이제 본 글의 취지대로 Xilinx Alveo Card U200 을 설치해보겠다.
일단 나는 회사 서버 실 내에 있는 Dell PowerEdge R720 모델 (Cent OS 7)에 Xilinx Alveo Card U200을 장착했다.
일단 Xilinx Alveo Card U200은 요렇게 생겼다.
동일한 모델 중 Active 방식이 있는데 그건 단순히 Passive 방식과 쿨러 유무 차이라서 요놈을 구매했다고 연구원님이 말씀하셨다.
근데 이래뵈도... 1000만원이 넘는 값비싼 녀석이라는 것.
요녀석을 장착하고 나서 Cent OS 내부로 들어가서 확인해보면,
오... 잘 잡혀있네.
근데 이게 끝은 아니다. 드라이버를 설치해줘야 한다.
아래는 드라이버 설치하는 방법에 대해 기술해놓았다.
1. 설치 전 카드 장착 여부 확인
lspci -vd 10ee:
2. Software Package 설치 - 1 Xilinx Run Time (XRT)
sudo yum install epel-release
sudo yum install <rpm-dir>/xrt_201910.2.2.2173_7.4.1708-xrt.rpm
저 위에 있는 xrt_201910.2.2.2173_7.4.1708-xrt.rpm 은 Xilinx 홈페이지에 직접 들어가서 다운로드 받아야 한다.
아래 링크는 올려뒀으나 회원가입 하고 로그인해야만 받을 수 있는 것으로 알고 있다.
그리고 <rpm-dir> 는 개개인 별로 다운로드 받는 공간이 다를테니 개인 별로 다운로드 받은 경로를 의미한다.
3. Software Package 설치 - 2 Deployment Shell
sudo yum install <rpm-dir>/<deployment Shell.rpm file>
여기서 deployment Shell.rpm file도 2번에서 올려놓은 링크에서 다운받으면 된다.
그러면 이 과정까지 모두 마치면 "Please flash card manually by running below command" 라고 설치과정에 출력된 메시지를 확인할 수 있다.
☆★중요☆★ 저 메시지 바로 밑에 있는 내용을 꼭 다른 곳에 옮겨적어 두어야 한다. 난수 숫자배열이었던걸로 기억하는데...
4. flash 과정
sudo /opt/xilinx/xrt/bin/xbutil flash -a xilinx_u200_xdma_201830_2 -t <number>
3번에서 옮겨적은 숫자배열을 <number>에다 옮겨서 명령을 실행한다. 아마 내 생각으론 card가 유효한 지 key 개념인거 같은데 확실하겐 잘 모르겠다.
cat >shell_flash_command
sudo shutdown
그러고 나서 컴퓨터를 재부팅 해준다. (필자는 재부팅도 안하고 왜 안잡히는지 한동안 끙끙댔다는...)
5. 4번과정 한번더 실행
less shell_flash_command
sudo /opt/xilinx/xrt/bin/xbutil flash -a xilinx_u200_xdma_201830_2 -t <number>
sudo reboot
6. 장치 장착되었는지 확인
sudo lspci -vd 10ee:
오... 이제 아마 장치가 두 개가 잡힐 것이다.
정상적으로 드라이버를 설치하면 이렇게 두개가 출력된다. 위의 xclmgmt는 Manager용, 아래는 User용 으로 사용된다.
이후, xbutil 명령을 사용해서 flash scan 과 validate 과정을 거친다.
sudo /opt/xilinx/xrt/bin/xbutil flash scan
sudo /opt/xilinx/xrt/bin/xbutil validate
validate를 하면 저렇게 출력화면이 뜬다. M2M Test는 Memory to memory test로 메모리간 테스트를 나타내고 위에 또한 DMA test 까지 거치는 것을 확인할 수 있다.
이렇게 테스트까지 모두 끝나면 Alveo Accelator Card는 정상적으로 작동한다.
아 번외로 카드의 현재상태를 확인할 수 있는 명령도 있으니 참고하도록...
/opt/xilinx/xrt/bin/xbutil query
다음번엔... Xilinx Alveo Card Benchmark example 실습으로 포스팅하겠다.
'개발(Dev) 이야기 > A.I.' 카테고리의 다른 글
CNN, Convolutional Neural Network에 관하여 (1) (0) | 2019.08.07 |
---|---|
Deep Learning 프레임워크의 종류 (0) | 2019.08.05 |
Xilinx Benchmark 예제 코드 실행해보기 (0) | 2019.08.02 |
Hdf5 형식 파일이란 ? (0) | 2019.08.01 |
Cuda (쿠다) 란? 사용 이유를 중심으로 (0) | 2019.07.31 |