NVIDIA Jetson Xavier NX 사용 준비하기

2 months ago   •   6 min read

By mAsh

Jetson Xaiver NX는 최대 21TOPS의 컴퓨팅 성능을 제공하는 저전력 소형 폼 팩터 SOM(System on Module)입니다. 인기 있는 AI 프레임워크(TensorFlow, PyTorch, MXNet 등)를 모두 지원하며, 이전 모델인 Jetson TX2에 비해 10배 이상의 성능을 제공합니다.

Jetson Xavier NX의 기술 사양

21TOPS의 성능을 자랑하는 Xavier NX의 실제 성능과 편리함이 어느 정도인지 확인해보기 위해 개발자 보드를 주문했습니다. 위에 있는 사진은 ‘모듈’만 나와 있는 칩이고, 이를 개발용으로 사용하기 위해서는 캐리어 보드가 필요합니다. 개발자 보드는 이러한 캐리어 보드와 함께 개발자를 위한 여러 편의 사항을 제공하는 구매 옵션입니다.

Jetson Xavier NX 개발자 보드

디스플레이 포트, USB 포트, 유선 랜 포트 등 다양한 외부 확장 포트를 지원합니다. 자세한 사항은 Xavier NX 홈페이지(https://www.nvidia.com/ko-kr/autonomous-machines/embedded-systems/jetson-xavier-nx/)에서 확인하실 수 있습니다.

이제 성능을 시험해보기 위해 필요한 패키지를 설치할 것입니다. 설치 항목은 다음과 같습니다. 대부분 Xavier NX에서 사용하는 아키텍처와 호환되는 바이너리가 없기 때문에, 코드로부터 빌드해야만 합니다.

  • (선택) jtop
  • OpenCV
  • PyTorch, torchvision

참고) 이미지에 기본으로 설치되어 있는 Python 버전은 3.6.x입니다.

[1] 첫 부팅 준비

위 페이지에서 개발자 보드에 대한 기본 설명을 확인하고, 첫 부팅을 위한 이미지를 SD카드에 복제할 수 있습니다.

[2] 기존 패키지 업데이트sudo apt update && sudo apt upgrade

[3] (선택) jtop 설치

설레는 마음으로 cat /proc/cpuinfo 를 찍어보면 2코어밖에 없다는 사실에 의아함을 느끼게 됩니다. 이미지의 기본 설정은 15W 2Core로 되어 있기 때문에, 이 설정을 변경해야 합니다.

jtop은 Jetson에 특화된 top 프로그램이라고 생각하시면 됩니다. Jetson을 위한 여러가지 편의 기능을 제공하고, 특히 전력 사용 모드팬 설정을 변경할 수 있으므로 설치하는 걸 추천합니다. 아래 링크에서 설치하실 수 있습니다.

※ 빌드할 때는 반드시 모든 성능을 이끌어낼 수 있는 설정을 사용해야 시간을 절약할 수 있습니다.

rbonghi/jetson_stats

jetson-stats is a package to monitoring and control your NVIDIA Jetson [Xavier NX, Nano, AGX Xavier, TX1, TX2] Works…

github.com

[4] PyTorch, torchvision 설치

PyTorch for Jetson Nano - version 1.5.0 now available

Below are pre-built PyTorch pip wheel installers for Python on Jetson Nano, Jetson TX2, and Jetson Xavier with JetPack…

forums.developer.nvidia.com

위 링크에 보다 자세히 설명되어 있습니다. 원하는 PyTorch 버전 중 JetPack 4.4DP용 whl을 다운로드해서 설치하면 됩니다. 여기서는 PyTorch 1.5.0을 기준으로 설명하겠습니다. 다른 PyTorch나 Python 버전을 사용하고 싶다면, Build Instruction에 설명되어 있는 대로 빌드해야 합니다.wget https://nvidia.box.com/shared/static/3ibazbiwtkl181n95n9em3wtrca7tdzp.whl -O torch.whlsudo apt-get install python3-pip libopenblas-base libopenmpi-dev  pip3 install Cython numpypip3 install torch-1.4.0-cp36-cp36m-linux_aarch64.whl

  1. whl 파일을 다운로드합니다.
  2. PyTorch 설치 과정에서 의존성이 있는 데비안, 파이썬 패키지를 설치합니다.
  3. 다운로드한 whl 파일로부터 PyTorch를 설치합니다.sudo apt-get install libjpeg-dev zlib1g-devgit clone --branch 0.6.0 https://github.com/pytorch/vision torchvisioncd torchvision
    sudo python setup.py install
  4. torchvision 빌드 과정에서 의존성이 있는 데비안 패키지를 설치합니다.
  5. GitHub에서 torchvision의 코드를 다운로드합니다. 우리는 PyTorch 1.5.0을 사용하기 때문에, torchvision 0.6.0을 다운로드 하겠습니다.
  6. torchvision을 빌드합니다.

[5] OpenCV 빌드

가장 큰 산입니다. Jetson과 호환되는 opencv-python whl이 없기 때문에, OpenCV를 직접 빌드한 후 Python 라이브러리에 포함시켜야 합니다.

여기서는 OpenCV 3.4.x를 기준으로 설정합니다. 4.x는 세부 빌드 설정이 다를 수 있습니다.sudo apt install build-essential cmake pkg-config -y sudo apt install libjpeg-dev libtiff5-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libx265-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev gfortran python3-devsudo apt install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-pulseaudio libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

제일 먼저 dependency를 설치합니다.wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.5.zipunzip opencv.zip
cd opencv
mkdir build
cd build

  1. OpenCV 소스 코드를 다운로드합니다. URL 끝부분을 변경하면 원하는 버전을 다운로드할 수 있습니다.
  2. 압축을 해제하고, 내부에 build 디렉토리를 만들어 이동합니다.cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D WITH_TBB=OFF \
    -D WITH_IPP=OFF \
    -D WITH_1394=OFF \
    -D BUILD_WITH_DEBUG_INFO=OFF \
    -D BUILD_DOCS=OFF \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D BUILD_EXAMPLES=OFF \
    -D BUILD_TESTS=OFF \
    -D BUILD_PERF_TESTS=OFF \
    -D WITH_QT=OFF \
    -D WITH_GTK=ON \
    -D WITH_OPENGL=OFF \
    -D WITH_V4L=ON  \
    -D WITH_FFMPEG=ON \
    -D WITH_XINE=ON \
    -D WITH_GSTREAMER=ON \
    -D BUILD_NEW_PYTHON_SUPPORT=ON \
    -D PYTHON3_INCLUDE_DIR=/usr/include/python3.6m \
    -D PYTHON3_NUMPY_INCLUDE_DIR=/usr/local/lib/python3.6/dist-packages/numpy/core/include \
    -D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.6/dist-packages \
    -D PYTHON3_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.6m.so \
    ../

cmake로 빌드에 필요한 값들을 설정합니다.make -j 6sudo -H make install

  1. 설정값에 따라 바이너리를 빌드합니다. 여기서 -j 6 은 6코어를 사용하는 것을 의미합니다.
  2. 빌드한 바이너리를 설정값에 따라 로컬 환경에 설치합니다.python3 -c "import cv2"

Python3에 패키지가 잘 설치되었는지 확인합니다. ModuleNotFoundError 가 발생하면 제대로 설치되지 않은 것입니다.

이상으로 Jetson Xavier NX에 PyTorch와 OpenCV 설치를 마쳤습니다. 대략적인 성능이 궁금하신 분들은 아래 동영상을 참고하시면 가늠해보실 수 있습니다.

Spread the word

Keep reading