NVIDIA JETSON AGX XAVIER 소개 및 설정 방법

Source: Deep Learning on Medium


Go to the profile of Kyunghoon Kim

오늘은 강력한 추론 엔진인 NVIDIA® Jetson AGX Xavier™의 설정 방법을 소개드리려고 합니다. 먼저 자비에가 뭔지 살펴보겠습니다.

NVIDIA에서는 작년 12월(2018), 소형 컴퓨터 젯슨 AGX 자비에를 공개했습니다. 모듈과 개발자 키트 두 종류를 구매할 수 있는데요, 먼저 모듈은 다음의 스펙을 갖습니다.

Jetson AGX Xavier 모듈

Jetson AGX Xavier Module

Processing Components

  • Octal-core NVIDIA Carmel ARMv8.2 CPU @ 2.26GHz
  • 512-core Volta GPU @ with 64 Tensor Cores
  • Dual Deep Learning Accelerator (DLA) engines
  • 16GB 256-bit LPDDR4x @ 2133MHz (137GB/s)
  • 32GB eMMC 5.1
  • Vision Accelerator engine
  • (4x) 4Kp60 H.264/H.265 video encoder
  • (2x) 8Kp30 / (6x) 4Kp60 H.265 video decoder

I/O Interfaces & Ports

  • (16x) MIPI CSI-2 lanes, (8x) SLVS-EC lanes
  • up to 6 active sensor streams and 36 virtual camera channels
  • (5x) PCIe Gen 4 controllers | 1×8, 1×4, 1×2, 2×1
  • (3x) Root Port & Endpoint
  • (2x) Root Port
  • (3x) USB 3.1 + (4x) USB 2.0
  • (3x) eDP 1.4 / DP 1.2 / HDMI 2.0 @ 4Kp60
  • 10/100/1000 BASE-T Ethernet + MAC + RGMII PHY
  • Dual CAN bus controller
  • UART, SPI, I2C, I2C, GPIOs

Form-Factor

  • 699-pin board-to-board connector
  • dimensions: 100x87mm with 16mm Z-height
  • Integrated Thermal Transfer Plate (TTP) with heatpipe
  • -25C to 80C operating temperature
  • 9.0–20VDC input power

Software Support

USB, PCIe 등 여러 입력 단자를 통해 음성, 디스플레이 등 다양한 커뮤니케이션이 가능합니다. 이러한 자비에의 우수한 성능을 모듈만으로는 개발자들이 바로 사용해보기 어렵기 때문에 개발자 키트를 별도로 발매했습니다.

Jetson AGX Xavier Developer Kit

4면을 사진으로 먼저 보여드리겠습니다. NVIDIA 로고가 있는 쪽이 전면(Front View)입니다.

자비에 전면과 좌측면 (USB-C 포트 등)
자비에 후면과 우측면 (전원버튼, 전원단자, HDMI 등)

자비에를 실행하기 위해서는 다음의 네 가지가 연결되어야 합니다. 이 때 주의할 점은 전면의 USB-C는 비워두세요. 개발자 키트를 플래싱할 때 이 단자를 사용합니다. (패키지에 포함된 USB-C to USB 선을 사용합니다)

  1. 전원단자
  2. 랜선
  3. HDMI
  4. 키보드 (USB-C to USB 어댑터가 개발자 패키지에 포함되어 있습니다)
자비에 연결 화면

이제 버튼 네 개 중 첫 번째 버튼을 눌러서 전원을 켭니다. LED에 하얀 불이 들어오면서 모니터에 Ubuntu 18.04 LTS의 부팅 화면이 나옵니다.

자비에 POWER ON!

JetPack Installation (젯팩 설치)

1. 다운로드

자 이제 JetPack을 설치할 겁니다. 다음 링크에서 JetPack을 다운 받으세요. (VM에서 하실 분은 VM 안에서 다운 받거나 다운로드 폴더를 VM에 공유해 주세요)

현재 글을 작성하는 시점에서는 JetPack 4.2가 배포되고 있으며, NVIDIA SDK Manager 를 다운받아 NVIDIA에 로그인하여 사용하도록 바뀐 것 같네요…..

JetPack은 다음의 라이브러리들을 포함하고 있습니다.

  • TensorRT, cuDNN
  • CUDA
  • Multimedia API
  • Vision Works, OpenCV

2. 연결

2–1. Ubuntu 준비

JetPack을 설치하기 위해서는 호스트 컴퓨터로 Ubuntu를 사용하라고 되어 있습니다. 만약 우분투에 USB로 연결이 가능하시다면 그냥 USB로 연결하시면 됩니다. 연결하신 후에는 2–2로 넘어가세요.

공식 지원하는 운영체제 : Ubuntu Linux x64 Version 18.04 또는 16.04

저는 로컬 환경에서 별도의 Ubuntu를 구하기 귀찮아서, Mac에서 VirtualBox를 이용해 설치를 진행해 보겠습니다. Windows 사용자도 크게 다를 부분은 없을 겁니다.

2–1–1. Virtual Box 준비

다음 사이트에서 OS에 맞는 설치 파일을 다운 받아 설치해 주세요.
VirtualBox 다운로드 : https://www.virtualbox.org/wiki/Downloads

그리고 USB 3.0 Controller를 사용하기 위해서는 Extension Pack도 설치되어야 합니다. 이것도 함께 위 다운로드 사이트에서 다운로드 받아주세요. VirtualBox 설치 이후에 다음의 화면처럼 설치해 주셔야 합니다.

VirtualBox 6.0.4 Oracle VM VirtualBox Extension Pack 설치

2–1–2. Ubuntu Image 준비

먼저 Ubuntu 18.04.2 Desktop을 다운로드 하겠습니다. 빠른 속도를 위해 카이스트 미러를 사용하겠습니다.
http://ftp.kaist.ac.kr/ubuntu-cd/18.04.2/

이 이미지를 사용해 vm을 구성하세요. 그리고 제 경우에는 다음과 같이 셋팅하였습니다.

  • HDD 50GB (다운로드 받고 설치할 파일들이 꽤 많습니다)
  • Memory 4096MB
  • Network — Adapter1 (Bridged Adapter)
  • USB 3.0 (xHCI) Controller

그럼 우분투 사용 준비가 완료되었습니다. 부팅하여 개인설정 등을 마무리해 주세요.

2–2. sdkmanager 설치

다운로드 받은 deb 파일을 실행하면 설치를 할 수 있습니다.

NVIDIA SDK Manager 설치 화면

GUI가 싫으신 분들은 터미널에서 다음과 같이 설치할 수도 있습니다.

sudo dpkg -i sdkmanager_0.9.11-3405_amd64.deb

에러가 나시면 다음을 실행하고 다시 dpkg를 실행해 보세요.

sudo apt --fix-broken install

2–3. NVIDIA SDK Manager 실행

로그인까지 마치면 다음 화면을 볼 수 있습니다.

SDK Manager Step01

이제 차례대로 단계를 진행해 보죠.

SDK Manager Step02
SDK Manager Step03

(다운로드 속도가 많~~~이 느립니다… 포기하고 다음 날 했습니다.. 쑥덕쑥덕)

다운로드 목록은 다음과 같습니다. (공식적으로 19GB 정도의 여유공간을 요구합니다)

HOST COMPONENTS

  • CUDA
    – CUDA on Host (1,402MB) -> Install Size 4,891MB
    – CUDA Cross Compile Package (367.3MB) -> Install Size 385.0MB
  • Computer Vision
    – OpenCV on Host (29.5MB) -> Install Size 158.0MB
    – VisionWorks on Host (100.7MB) -> Install Size 233.0MB
  • Developer Tools
    – NVIDIA Nsight Graphics (155.9MB) -> Install Size 823.8MB
    – NVIDIA Nsight Systems (111.0MB) -> Install Size 365.0MB
    – DevTools Documentation (24.4MB) -> Install Size 30.0MB

TARGET COMPONENTS

  • Jetson OS image
    – File System and OS (1164MB)
    – Drivers for Jetson AGX (120.0MB)
  • Flash Jetson OS
    – Flash Jetson AGX Xavier -> Install Size 30,056MB
  • Jetson SDK components
    – CUDA Toolkit for L4T (846.1MB)
  • cuDNN on Target (268.5MB)
  • tensorRT on Target (516.1MB)
  • OpenCV on Target (11.2MB)
  • VisionWorks on Target (89.7MB)
  • Multimedia API (67.1MB)

2–4. Force Recovery Mode 진입

SDK Manager에서 다음 화면이 나오면 이제 자비에에 설치할 준비가 된 것입니다.

자비에 플래싱 준비 화면

자비에는 강제 리커버리 모드(Force USB Recovery Mode)로 진입해야 합니다. 만약 장비가 켜져 있다면 종료해 주세요. (shutdown now) 진입 방법은 다음과 같습니다.

  1. 가운데 버튼 클릭하고 클릭상태를 유지하세요.(Press and hold down the Force Recovery button.)
  2. 파워버튼 클릭하고 클릭상태를 유지하세요. (Press and hold down the Power button.)
  3. 두 개 동시에 놓습니다. (Release both buttons.)

리커버리 모드인지 확인하는 방법은

  • 전면에 하얀색 LED가 켜져있다.
  • HDMI가 꽃혀 있는데 모니터에 화면이 나오지 않는다.
  • 키보드가 연결되어 있지만 NumLock에 불이 들어오지 않는다.

정도가 될 것 같습니다.

리커버리 모드로 부팅이 되었다면 맥에 USB를 연결해 주세요. 그리고 Virtual Box의 설정에서 Device를 추가해 주세요.

VirtualBox에 NVIDIA APX Device 추가

자비에에 잘 연결되었는지는 터미널에서 lsusb 를 입력하여 목록에서 확인하실 수 있습니다.


SDK Manager에서 Username과 Password는 별다른 설정을 하지 않으셨다면 다음과 같습니다.
Username : nvidia
Password : nvidia

이제 엔터를 누르시면 다음과 같은 화면이 나오며 플래싱이 진행됩니다. (커피 한 잔 하고 오십쇼…..)

제 경우는 의존성 에러가 발생하네요. VirtualBox에 설치된 OS를 한 번도 업데이트 하지 않았기 때문에 혹시나 싶어 update && upgrade 하니 해결이 되었습니다.

sudo apt update
sudo apt upgrade -y

그리고 파이썬도 필요하군요.

sudo apt install python -y

자 이제 플래싱이 끝났습니다! 그럼 자비에는 부팅이 되고 호스트 모니터, 자비에 모니터 각각에는 다음과 같은 화면이 나옵니다.

호스트 모니터 / 자비에 모니터

먼저 자비에의 Wizard를 따라가며 설정을 완료하고 (자동 재부팅), 로그인을 하시면 [짜잔~] 우분투 데스트톱 화면을 볼 수 있습니다.

그런데 Jetson SDK components 설치는 로그인 화면에서 하라는군요. 만약 문제가 있으시다면 로그아웃을 하시죠!

gnome-session-quit

그리고 바뀐 디바이스명을 설정해 주어야 합니다. 제 경우는 NVIDIA Linux for Tegra 였습니다.

VirtualBox Settings — Ports

vm에 자비에가 붙은 것을 확인하고 Wizard에서 새로 설정하신 아이디, 패스워드를 입력해 주세요. 그럼 Target Components들도 설치가 진행됩니다. 이번에는 커피 두 잔 드시죠..

Target Components Installing

드디어 설치가 완료되었습니다!!

이후 자비에의 inference 성능에 대해 또 남겨보겠습니다~ :D