2020년 6월 11일 목요일

고성능 인공지능 임베디드보드 NVIDIA AGX Xavier 소개, 설치 및 예제 실행

이 글은 NVIDIA AGX Xavier 소개, 설치 및 예제 실행 방법을 소개한다.
NVIDIA AI

NVIDIA AGX Xavier 소개
NVIDIA AGX Xavier는 고성능 딥러닝용 개발 보드로 512 Core GPU, 11 TFLOPS, 8-core ARM CPU, 16GB LPDDR, 32GB eMMC를 장착한 엠베디드 보드이다. 이로 인해 세그먼테이션, 포인트 클라우드 데이터셋같이 큰 GPU 메모리와 많은 계산량이 필요한 사례에 유용하다(ㅎ본인이 AGX를 세팅한 이유다). 관련 자세한 내용은 다음 링크를 참고한다.
AGX 이상부터는 Isaac SDK 도 사용할 수 있어, AI기반 분석, 시뮬레이션 등 고성능이 필요한 어플리케이션도 개발할 수 있다.

NVIDIA Jetpack 소개
2019년 기점으로 NVIDIA 보드에 JETPACK 설치 방법은 다음과 영상과 같이 SDK manager를 통하게 되었다. 참고로, 제트팩은 엔비디아 보드 위에서 구동되는 딥러닝, 머신러닝, 비전 라이브러리 및 예제가 포함된 개발 플랫폼이다. 

현재 버전인 제트팩 4.3은 다음 기능을 라이브러리 및 소스코드로 제공한다.
DeepStream 아키텍처(참고 - DeepStream Getting Started)
DeepStream 4.0 demo

Jetpack 설치 준비물
그냥 AGX 자비에를 전원, 모니터 연결해 켜 보면, 우분투가 미리 설치되어 있는 것을 확인할 수 있다. 하지만, 이 우분투는 NVIDIA AGX 용 드라이버, 라이브러리 등이 전혀 설치되어 있지 않아 사용할 수 없는 것이다. 다음 방법을 통해 제트팩과 NVIDIA 보드용 리눅스를 설치해야 제대로 개발보드를 사용할 수 있다.

설치를 위해 다음을 준비한다.
  • 우분투 18.04가 설치된 별도 노트북이나 컴퓨터
  • 모니터 및 HDMI 케이블
  • 무선 키보드 및 마우스
  • Intel 8265NGW WiFi 어답터(조립 참고 영상) 및 WiFi 동글
  • NVIDIA AGX Xavier
이와 관련해 다음 영상을 참고해, 설치 작업을 준비한다.

노트북에 Jetpack을 다운로드 받아야 하므로, 다음과 같이 df 명령으로 root, home에 충분히 넉넉한 공간이 있는 지 확인한다. 최소 20Gb는 있어야 설치를 제대로 할 수 있다.

Jetpack 설치 방법
노트북 우분투에서 AGX Xavier용 SDK manager를 다운로드 받고 실행한다.

메니저 프로그램 실행되면 다음과 같이 NVIDIA 가입 후 로그인, 암호를 입력한다.

옵션을 선택한다. ADDITIONAL SDK 도 모두 선택한다.

이후, 다음과 같이 I accept... 선택하고, CONTINUE 버튼을 누르면, 자동으로 각 SDK 도구가 다운로드 될 것이다.

다운로드에는 네트워크 상태에 따라 몇 시간 이상이 소요된다.

다운로드가 다 되면, 자동 설치가 진행된다. 이 때 다음과 같이 설치 옵션 선택 화면이 표시된다. 이때 Automatic에서 Manual로 수정한다.

이제 다음 단계를 진행한다.
  1. NVIDIA AGX Xavier는 별도 부팅하고, 이미 설치되어 있는 우분투 설정을 완료한다. 
  2. JetPack설치를 위해 파워 종료한다. 
  3. 엔비디아 자비에의 전원 반대쪽 USB 3.0포트와 노트북을 연결한다.  
  4. 다음 그림에서 Force Recovery 버튼을 먼저 누르고, Power 버튼을 누른후 동시에 땐다. 그럼, AGX Xavier가 설치 가능 상태로 변경된다.  

이 상태에서 노트북 우분투에서 보이는 다음 그림의 Flash버튼을 클릭한다. 그럼, 자비에 보드에 테그라용 우분투, 드라이버 등이 USB SSH를 통해 설치된다. 설치 후, 자비에 보드는 재부팅되고, 우분투 설정이 진행된다. 자비에 보드 우분투에 ID, PWD 입력 후 설정을 완료한다. 이후에는 노트북의 우분투 젯슨 설치 화면의 지시를 따라서 ID, PWD를 입력하고 install 을 실행하면 된다.  

그럼, 다음과 같이 한두시간 후에 설치될 것이다. 

모두 설치되었다면, 몇몇 데모 소스코드를 빌드해 본다. 
$ /usr/share/visionworks/sources/install-samples.sh ~/ 
$ cd ~/VisionWorks-1.6-Samples/ 
$ make -j4
AGX demo build

빌드 후  bin 폴더 아래 실행파일을 각각 입력해 보자. 
$ ~/VisionWorks-1.6-Samples/bin/aarch64/linux/release$ ls nvx_demo_feature_tracker 

다음과 같이 실행될 것이다. 성공한 것에 축하한다.
DNN demo
YOLO demo (blog)

Deepstream sample 을 실행해 보자. 우선, 다음과 같이 데모 프로그램을 빌드한다.
$ cd /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test1
make
$ deepstream-test1-app /opt/nvidia/deepstream/deepstream-5.0/samples/streams/sample_720p.h264

그럼 다음과 같은 객체 탐지 수행결과를 확인할 수 있다.
기존 촬영 영상을 h.264 포맷으로 변환하고, 테스트해보자. 다음과 같이 객체 탐지가 잘 되는 것을 확인할 수 있다.

이제 세그먼테이션을 수행해보자.
$ sudo nvpmodel -m 0
$ sudo jetson_clocks
$ cd ~/deepstream-5.0
$ cd sources/apps/sample_apps/deepstream-segmentation-test
$ make
$ ./deepstream-segmentation-app dstest_segmentation_config_semantic.txt ../../../../samples/streams/sample_720p.mjpeg ../../../../samples/streams/sample_720p.mjpeg
$ ./deepstream-segmentation-app dstest_segmentation_config_industrial.txt ../../../../samples/streams/sample_720p.mjpeg ../../../../samples/streams/sample_720p.mjpeg
$ ./deepstream-segmentation-app dstest_segmentation_config_industrial.txt ../../../../samples/streams/sample_industrial.jpg

다음과 같이 차량 및 사람이 세그먼테이션된 결과가 출력될 것이다.

엔비디아 개발 보드를 설정하는 작업은 반나절에서 하루 정도 소요된다. 몇몇 시행착오가 있으나 구글링을 통해 해결할 수 있는 수준이다. 인내심을 가지고 단계적으로 따라하면 큰 문제 없이 데모 화면을 볼 수 있을 것이다.

기타, SSD 메모리를 추가로 장착하고 싶다면, 다음 영상을 참고하길 바란다.

튜토리얼 및 워크샵 예제는 다음 링크를 참고한다.
Deep Stream demo

활용 사례
이 정도급의 GPU 성능과 메모리라면, 거의 대부분의 학습 데이터셋을 학습, 사용할 수 있다. 아래는 이와 관련된 사례이다.

레퍼런스

댓글 없음:

댓글 쓰기