Jetson AGX Xavier 동작 모드 변경 및 TensorFlow-GPU 설치와 실행 그리고 성능 분석
동작 모드에대한 고찰
nvpmodel 명령어
Jetpack을 설치해서 동작하면 기본 Default mode는 Mode ID=2
로 15W로 동작하게 된다.
아래는 주요 명령어들이다.
sudo nvpmodel -q (for current mode)
자세히 보고 싶으면--verbose
option 추가sudo nvpmodel -m 0 (for changing mode, persists after reboot)
sudo ~/tegrastats (for monitoring clocks & core utilization)
각각의 모드들에 대한 소비전력과 성능은 아래의 표와 같다.
모드를 적용 시키기 위해선 재부팅을 해야한다.
jetson_clocks.sh
jetson_clocks.sh
스크립트를 통해서 현재의 nvpmodel mode
에서의 최고의 성능을 달성 할 수 있다. DVFS로 동작하는것을 방지하기 때문이다.
아래와 같이 세가지 동작 옵션을 내장하고 있다.
Maximize jetson performance by setting static max frequency to CPU, GPU and EMC clocks.
Usage:
jetson_clocks.sh [options]
options,
--show display current settings
--store [file] store current settings to a file (default: ${HOME}/l4t_dfs.conf)
--restore [file] restore saved settings from a file (default: ${HOME}/l4t_dfs.conf)
run jetson_clocks.sh without any option to set static max frequency to CPU, GPU and EMC clocks.
--show
를 통해서 현재 상태를 알 수 있다.
nvidia@jetson-0423718017159:~$ sudo ./jetson_clocks.sh --show
SOC family:tegra194 Machine:jetson-xavier
Online CPUs: 0-7
CPU Cluster Switching: Disabled
cpu0: Gonvernor=schedutil MinFreq=1190400 MaxFreq=2265600 CurrentFreq=1190400
cpu1: Gonvernor=schedutil MinFreq=1190400 MaxFreq=2265600 CurrentFreq=2112000
cpu2: Gonvernor=schedutil MinFreq=1190400 MaxFreq=2265600 CurrentFreq=1344000
cpu3: Gonvernor=schedutil MinFreq=1190400 MaxFreq=2265600 CurrentFreq=1651200
cpu4: Gonvernor=schedutil MinFreq=1190400 MaxFreq=2265600 CurrentFreq=1728000
cpu5: Gonvernor=schedutil MinFreq=1190400 MaxFreq=2265600 CurrentFreq=2035200
cpu6: Gonvernor=schedutil MinFreq=1190400 MaxFreq=2265600 CurrentFreq=2035200
cpu7: Gonvernor=schedutil MinFreq=1190400 MaxFreq=2265600 CurrentFreq=1420800
GPU MinFreq=318750000 MaxFreq=1377000000 CurrentFreq=318750000
EMC MinFreq=204000000 MaxFreq=2133000000 CurrentFreq=2133000000 FreqOverride=0
Fan: speed=0
nvpmodel
과 다르게 이건 reboot
하면 유지되지 않는다.
최고 성능으로 동작 시키기
$ sudo nvpmodel -m 0
$ sudo ${HOME}/jetson_clocks.sh
Installing TensorFlow on Xavier
설치가능한 framework들은 아래와 같다.
https://developer.qa.nvidia.com/deep-learning-frameworks
공식적인 설치 절차
https://docs.nvidia.com/deeplearning/dgx/install-tf-xavier/index.html
python 3.6으로 설치했다.
사전 설치 단계
- Install JetPack 4.1.1 Developer Preview
- Install HDF5
apt-get install libhdf5-serial-dev hdf5-tools
- Install pip3 (python3.6)
- Install the following packages:
pip3로 패키지 설치시 생각보다 엄청 오래걸리므로 절대로pip3 install --upgrade pip sudo apt-get install zlib1g-dev zip libjpeg8-dev libhdf5-dev sudo pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker grpcio six mock requests gast h5py astor termcolor
Ctrl+C
하지말고 기다리면 언젠간 설치된다.
Collecting numpy
Downloading https://files.pythonhosted.org/packages/2d/80/1809de155bad674b494248bcfca0e49eb4c5d8bee58f26fe7a0dd45029e2/numpy-1.15.4.zip (4.5MB)
100% |████████████████████████████████| 4.5MB 119kB/s
..
..
Collecting idna<2.9,>=2.5 (from requests)
Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
100% |████████████████████████████████| 61kB 3.4MB/s
Installing collected packages: numpy, six, grpcio, absl-py, py-cpuinfo, psutil, portpicker, pbr, mock, urllib3, certifi, idna, requests, gast, h5py, astor, termcolor
Running setup.py install for numpy ... |
최종결과
Successfully installed absl-py-0.6.1 astor-0.7.1 certifi-2018.11.29 gast-0.2.0 grpcio-1.17.1 h5py-2.9.0 idna-2.8 mock-2.0.0 numpy-1.15.4 pbr-5.1.1 portpicker-1.2.0 psutil-5.4.8 py-cpuinfo-4.0.0 requests-2.21.0 six-1.12.0 termcolor-1.1.0 urllib3-1.24.1
Tensorflow-gpu 설치 및 확인
- Installing TensorFlow
pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v411 tensorflow-gpu
미리 nvidia에서 사전에 빌드해둔 것이https://developer.download.nvidia.com/compute/redist/jp/v411/tensorflow-gpu/
에 있다. 이것을 다운받아서 설치하는 명령어이다. 현재 가장 최신 stable 버전을 포함한다.
tensorflow-gpu 설치완료
Successfully built grpcio numpy absl-py termcolor gast h5py
Installing collected packages: wheel, six, grpcio, setuptools, protobuf, werkzeug, markdown, numpy, tensorboard, astor, h5py, keras-applications, absl-py, termcolor, gast, keras-preprocessing, tensorflow-gpu
Successfully installed absl-py-0.6.1 astor-0.7.1 gast-0.2.0 grpcio-1.17.1 h5py-2.9.0 keras-applications-1.0.6 keras-preprocessing-1.0.5 markdown-3.0.1 numpy-1.15.4 protobuf-3.6.1 setuptools-40.6.3 six-1.12.0 tensorboard-1.12.1 tensorflow-gpu-1.12.0+nv18.12 termcolor-1.1.0 werkzeug-0.14.1 wheel-0.32.3
설치 확인
아래와 같이 나오면 설치가 완료
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
>>> import tensorflow as tf
>>> tf.__version__
'1.12.0'
MNIST데이터를 이용한 CNN 모델 학습 시간 분석
이전 포스트에서 여러 GPU들과 비교 했었다. 같은 코드로 Jetson Xaiver
보드도 대략적으로 테스트 해본다.
사용한 코드는 이전처럼 아래 git에 있다.
https://github.com/leejaymin/TensorFlowLecture/tree/master/5.CNN
deafult mode = 2
로 실험한 결과 아래와 같다.
speed
97 0.9921875
98 0.98828125
99 1.0
time elapsed: 1007.16s
최고성능 모드: mode = 0
, jetson_clock.sh
97 1.0
98 1.0
99 1.0
time elapsed: 525.10s
결론적으로 생각보다 느리다.
아래와 같은 수준이다. 이론상 performance는 32-TOPS이다. 기존 다른 NVIDIA tegra 계열이나 1080 또는 2080 계열은 이론상 FLOPS로 표기한다.
결국 아래 성능 차이는 아래와 같다.
GTX 970
<Jetson-Xaiver
<1060
<1080
<P100
TOPS와 TFLOPS와의 차이점
TOPS are Tera operations per second, i.e. 1 trillion operations (integer, float, etc.) each second.
TFLOPS are Tera floating point operations per second, i.e. 1 trillion (usually single precision) floating point operations per second.
Troubleshooting
개인이 개발한 설치 절차
https://github.com/naisy/JetsonXavier
Jetson 설치 관련 posting
https://devtalk.nvidia.com/default/topic/1039363/problem-to-install-tensorflow-on-xavier/
설치관련 완벽 시크립트
'AI > NVIDIA' 카테고리의 다른 글
NVDLA: NVIDIA Deep Learning Accelerator (DLA) 개론 (0) | 2019.02.08 |
---|---|
NVIDIA AI Tech Workshop at NIPS 2018 -- Session3: Inference and Quantization (0) | 2019.02.06 |
DeepStream을 통한 low precision YOLOv3 실행 (0) | 2019.01.24 |
YOLOv3 on Jetson AGX Xavier 성능 평가 (2) | 2019.01.10 |
Jetson AGX Xavier 설정 및 Visionworks 샘플 실행 (1) | 2019.01.02 |