본문 바로가기

SW, HW 소개

엔비디아 Jetson Xavier; 1. Virtualbox로 우분투 PC 만들어 AI 보드 설치

엔비디아 Jetson Xavier

1. Virtualbox로 우분투 PC 만들어 AI 보드 설치

2. VMware로 우분투 PC 만들어 AI 보드 설치

3. Tensorflow (+ Keras) 설치

4. PyTorch 설치 후 MNIST 학습 테스트

5. VNC로 쉽게 연결하기

 

1. Jetson Xavier

몇 년 전에 영상인식을 위한 인공지능 프로그램을 개발하면서 Jetson 보드 2종류를 구매해서 사용한 적이 있다. 프로젝트가 끝나고 사용하지 않다가 이번에 인공지능 프로젝트를 위해 다시 사용해 보기로 했다.

 

영상이 아닌 데이터 스트림에 대해서는 라즈베리 파이나 다른 임베디드 보드를 사용해도 어느 정도의 성능을 기대할 수 있지만, 영상에 대해서만은 Jetson이 다른 임베디드 보드보다 성능이 좋다고 알려져 있다. 예를 들어, GPS로 경로를 잡고 라이더 센서와 함께 영상을 해석해서 물체를 인식하고 거리를 측정해서 장애물을 피해 가는 시스템을 제작한다면 Jetson이 가장 적합하지 않을까 생각된다.

 

Jetson 모델 중 외부 의존 없이 컴퓨터처럼 사용할 수 있는 모델로 Xavier가 있는데, 내가 가지고 있는 이전 세대 Xavier보다 현재 세대의 Xavier가 3배(베치마크한 페이지에서 보면)에서 8배(엔비디아의 비교를 보면) 정도 성능이 개선되었다고 한다. 하지만, 가격이 저렴하지 않기 때문에 클라우드를 사용하지 않는 규모의 프로젝트에서 인공지능 모델 학습용으로 사용하려면 RX시리즈 그래픽보드 가성비 면에서 더 좋다.

 

출처: edge-ai-vision

나는 이미 가지고 있기도 하고, 간단한 인공지능 모델을 학습시키는 용도로 괜찮은 성능일 뿐 아니라, 전기 소모량 (Max 30W) 도 많지 않기 때문에, Xavier에 최신버전의 Jetson SDK를 설치해 사용하기로 했다.

2. Virtualbox 우분투에서 JetPack SDK 설치

Jetson Xavier는 일반적인 컴퓨터가 아닌 임베디스 시스템 개발을 위한 개발용 시스템이다. 그래서 OS를 펌웨어로 올리는 작업이 필요하고 이 작업은 SDK Manager를 사용한다. 

 

JetPack SDK

Builds end-to-end accelerated AI applications and supports edge AI development.

developer.nvidia.com

하지만, 아래 SDK Manager 페이지에 따르면, 설치하려는 패키지에 따라 다르지만, 현재는 SDK Manager가 거의 우분투만 지원하고, 우분투 버전에 따라 설치할 수 있는 패키지가 달라 상황에 맞게 OS를 설치해야 한다. 나는 JetPack 5.X와 6.X도 가능한지 알아볼 예정이어서 우분투 20.04 버전을 설치하기로 했다. 물론 새로운 컴퓨터에 우분투 데스크탑을 설치하고 진행해도 되지만, 먼저 노트북에 Virtualbox에 설치해 진행해 보고 문제가 생기면 물리 컴퓨터를 사용하기로 했다.

 

SDK Manager

An end-to-end development environment setup solution for DRIVE, Jetson, and more. SDKs.

developer.nvidia.com

a. Virtualbox와 Vagrant로 우분투 데스크탑 설치

Virtualbox를 좀 더 쉽고 빠르게 사용하는 대표적인 방법이 Hashicorp에서 개발한 Vagrant를 이용하는 방법이다. Vagrant를 이용하면 OS를 찾아서 다운로드하고 Virtualbox에 가상머신을 만들기 위해 설정하는 작업 등이 Vagrant파일 하나로 해결되기 때문에 매우 편리하다. Vagrant 사용법을 좀 더 자세히 알고 싶으면 아래 글을 참고하면 된다.

 

VirtualBox와 Vagrant로 윈도우에 우분투와 Docker설치하기

0. WSL 우분투 distro의 한계앞에서 설명한 바와 같이 윈도우에는 WSL(Windows Subsystem for Linux)이 있으며, 그 위에 공식적으로 우분투 distro를 제공하고 있다. Docker엔진과 docker-desktop distro 또한 WSL위에서

front-it.tistory.com

Vagrant파일을 아래와 같이 작성하고 Vagrant up 명령으로 가상머신을 생성한다.

 

Vagrant.configure("2") do |config|
  # OS는 우분투 20.04
  config.vm.box = "ubuntu/focal64"
  # 인터넷 접속은 열어두고
  config.vm.network "public_network"
  config.vm.provider "virtualbox" do |vb|
    # GUI 사용여부
    vb.gui = true
    # 가상머신 메모리 크기
    vb.memory = "8192"
  end
  # 디스크는 60G
  config.vm.disk :disk, size: "60GB", primary: true
  # 데슼트탑 설치
  config.vm.provision "shell", inline: <<-SHELL
    sudo apt-get update && sudo apt-get install ubuntu-desktop -y
  SHELL
end

 

실생 중 가끔씩 ubuntu-desktop설치와 관련해서 문제가 발생하기도 하는데, 이 경우에는 아래 명령에 해당하는 부분은  가상머신 내에서 실행하면 된다.

 

sudo apt-get update && sudo apt-get install ubuntu-desktop -y

 

데스크탐에는 계정을 만들어도 되지만, 우분투 데시크탑은 SDK Manager를 실행하고 JetPack을 설치하는 목적에만 사용할 예정이어서, 설치가 끝나고 vagrant계정의 패스워드를 변경해서 로그인할 수 있도록 했다.

 

vagrant ssh
sudo passwd vagrant

 

마지막으로 reboot 하면 데스탑 로그인 화면이 나온다.

 

sudo reboot

b. SDK Manager로 JetPack 설치

Virtualbox로 만든 우분투 데스크탑에 로그인 한 다음 아래 SDK Manager 페이지로 가서 ".deb Ubuntu" 패키지를 다운로드 한 다음

 

SDK Manager

An end-to-end development environment setup solution for DRIVE, Jetson, and more. SDKs.

developer.nvidia.com

아래 명령으로 설치한다.

 

sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb

 

 

설치가 완료되면 SDK Manager를 실행한다. SDK Manager는 우분투 가상머신의 메모리가 8G 이하이거나 화면의 해상도가 1440 X 900보다 낮으면 실행할 수 없다는 메시지를 보인다.

 

Vagrant파일은 이미 8G 이상의 메모리로 가상머신을 만들도록 변경해 놓았기 때문에 SDK Manager가 문제없이 실행되고, 처음 실행하면 아래와 같이 엔비디아 로그인 페이지로 이동하고, 로그인을 하면 설치 초기 화면이 나온다.

 

Step 1을 지나고 Step 2에서 다운로드가 끝나면 Jetson Xavier의 메모리를 Flash 하기 위해 2가지 옵션을 선택할 수 있다.

 

 

왼쪽 화면은 Jetson Xavier에 리눅스가 이미 설치된 경우에 나타나며, 초기 상태에서 설치를 진행하려면 Jetson을 Recovery모드로 전환한 후 연결하면 오른쪽 화면이 표시된다. 우분투 데스크탑이 Virtualbox에서 실행되고 있기 때문에 Jetson Xavier를 Recovery모드로 만들고 나면 Virtualbox의 USB Settings를 열고 "NVIDIA Corp. APX"를 연결해야만 우분투 데스크탑에서 인식한다.

 

 

Jetson을 Recovery모드로 만들려면 중간 (Recovery) 버튼을 누른 다음, 전원버튼을 누르고 잠시 기다렸다가 동시에 놓으면 Recovery모드로 들어간다. 이때 컴퓨터로 연결하는 USB케이블은 반드시 전원이 있는 쪽이 아닌 앞쪽 USB 포트에 연결해야만 인식이 된다.

 

 

하지만, Flash 버튼을 누르고 설치를 진행했을 때 99%에서 Flash가 안 되는 문제가 발생했다.