How to Set Environment for Development - teoac/DeepLearningOnJetson GitHub Wiki
OS ๋ฐ ๊ธฐ๋ณธ SW ์ค์น
Ubuntu 16.04.04 LTS ์ค์น
- ๊ธฐ์กด ์๋์ฐ ์์คํ ์ ์์ ์ ์ธ ์ด์ฉ์ ์ํด ๋ณ๋์ ํ๋์ ์ฐ๋ถํฌ๋ฅผ ์ค์นํ๋ ๊ฒ์ด ์์ ์ ์ธ ์ด์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ๋ฐ์คํฌํ์ฉ ์ฐ๋ถํฌ๋ฅผ ๋ค์ด๋ก๋ํ๋ค. [๋ค์ด๋ก๋ ์ฌ์ดํธ]
- ์ฐ๋ถํฌ ์ค์น๋ฅผ ์ํด USB๋ฅผ ๋ถํ ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๋ค. [์ฐธ๊ณ ์ฌ์ดํธ]
- USB๋ก ๋ถํ
ํ์ฌ ์ค์น๋ฅผ ์งํํ๋ค.
- 'Installation type'์๋ 'Something else'๋ฅผ ์ ํํ๋ค.
- ์ค์นํ ๋ '/boot' ์์ญ์ 500MB(์ฃผํํฐ์ ), '/' ์์ญ์ 50GB(์ฃผํํฐ์ ), 'Swap' ์์ญ์ 32GB(์ฃผํํฐ์ ), '/home' ์์ญ์ ๋๋ผ์ด๋ธ์ ๋๋จธ์ง(๋ ผ๋ฆฌํํฐ์ )๋ฅผ ํ ๋นํ๋ค.
- 'Device for boot loader installation'์์๋ Ubuntu๋ฅผ ์ค์นํ๋ ๋๋ผ์ด๋ธ๋ฅผ ์ ํํ๋ค.
ํ๊ธ์ ๋ ฅ
์๊ฐ๋ ์ค์ ํ๊ธฐ
์ ๋ฐ์ดํธ ์ต์ ๋ณ๊ฒฝ ๋ฐ ์ด๊ธฐ ์ ๊ทธ๋ ์ด๋
- System Setting > Software & Updates > Updates ๋ก ์ด๋
- ์์ ์ ์ธ ์์คํ ์ด์ฉ์ ์ํด Unsupported updates (xenial-backports) ์ฒดํฌ ํด์
- ํฐ๋ฏธ๋์ฐฝ ๋ช
๋ น
sudo apt-get update sudo apt-get upgrade
๊ทธ๋ํฝ ๋๋ผ์ด๋ฒ ์ค์น
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-384
Docker CE ์ค์น
- Repository ์
์
- ํจํค์ง ์ธ๋ฑ์ค ์ ๋ฐ์ดํธ
sudo apt-get update
- https ๊ธฐ๋ฐ repository์ apt ์ค์น๋ฅผ ์ธ๊ฐํ๊ธฐ ์ํ ํจํค์ง ์ค์น
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- Docker ๊ณต์ GPG key ์ถ๊ฐ
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- ์์ ์ ์ธ repository๋ฅผ ์ค์ ํ๋ค.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- Docker CE ์ค์น
- ํจํค์ง ์ธ๋ฑ์ค ์ ๋ฐ์ดํธ
sudo apt-get update
- ์ต์ ๋ฒ์ Docker CE ์ค์น
sudo apt-get install docker-ce
- 'hello-world' ์ด๋ฏธ์ง๋ฅผ ํตํด์ ์ค์น ๊ฒ์ฆ
sudo docker run --rm hello-world
NVIDIA-Docker v2.0 ์ค์น
[์ฐธ๊ณ ์ฌ์ดํธ1] [์ฐธ๊ณ ์ฌ์ดํธ2]
- ํจํค์ง repository ์ถ๊ฐ
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
- NVIDIA-docker v2.0 ์ค์น
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
- ์ค์น ๊ฒ์ฆ
sudo docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
- Docker ์ด๋ฏธ์ง, ์ปจํ
์ด๋ ์ค์น ํด๋ ๋ณ๊ฒฝ [์ฐธ๊ณ ์ฌ์ดํธ]
- Docker ์๋น์ค ์ค์ง ๋ฐ ํด๋ ์์ฑ
sudo serviece docker stop mkdir DIR_DOCKER
- Docker daemon ์ค์ ํ์ผ ์์ฑ(๋๋ ์์ )
sudo gedit /etc/docker/daemon.json
- ์๋ ๊ตฌ๋ฌธ ์ถ๊ฐ
{ "data-root": "DIR_DOCKER", "storage-driver": "overlay", "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
- Docker ์๋น์ค ์ฌ์คํ
sudo service docker start
- ํ์ธ
sudo lsof | grep DIR_DOCKER
- NVIDIA GPU CLOUD์ ๋ก๊ทธ์ธ
- ๊ฐ์ ํ ๊ฐ์ธ API Key๋ฅผ ์ป์ด์ผ ๊ฐ์ข ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๋ค.
- ํด๋น ์ปดํจํฐ๋ก 1ํ ํด๋์ผ๋ฉด ํฅํ ๋ณ๋ ๋ก๊ทธ์ธ์ ๋ถํ์ํ๋ค.
- ํฐ๋ฏธ๋์ฐฝ ๋ช ๋ น
sudo docker login nvcr.io Username: $oauthtoken Password: NGC์ ๊ฐ์ ํ๋ฉด ์ป์ ์ ์๋ API Key ์ ๋ ฅ
Docker ์ค์น ํด๋ ์ด๋
- Docker ํ๋ก์ธ์ค ์ค์ง
sudo service docker stop
- Docker ์ด๋ฏธ์ง๋ ์ปจํ
์ด๋๋ฅผ ์ ์ฅํ ํด๋ ์์ฑ
mkdir -p /home/USER/DOCKERFOLDER
- Docker ํ๊ฒฝ์ ๋ณด ํ์ผ ์ด๊ธฐ
sudo gedit /etc/default/docker
- Docker_OPT ๋ณ๊ฒฝ
DOCKER_OPTS="-g /home/USER/DOCKERFOLDER"
- Docker ํ๋ก์ธ์ค ์์
sudo service docker start
DIGITS ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ (๋์ปค ๊ธฐ๋ฐ)
- ์๋ ๋ช
๋ น์ด๋ฅผ ํตํด NVIDIA์์ ์ ๊ณตํ๋ DIGITS ๊ธฐ๋ฐ ํ์ตํ๊ฒฝ ์ปจํ
์ด๋ ์์ฑ
sudo docker run --runtime=nvidia --name digits -d -p 5000:5000 -v [Source Directory]:[Target Directory] nvcr.io/nvidia/digits:18.07
- Tip!
- [Source Directory]์
/home/USER/
๋ฅผ - [Target Directory]์
/workspace/
๋ฅผ - ์ ๋ ฅํ๋ฉด ์์ ์ ํด๋๋ฅผ ์ปจํ ์ด๋์์๋ ์์ ๋กญ๊ฒ ์ด์ฉํ ์ ์๋ค.
- [Source Directory]์
- ํฌํธ 5000์ผ๋ก ์ฐ๊ฒฐํด๋์์ผ๋ฏ๋ก Chrome ๋ฑ์ ํตํด์ 0.0.0.0:5000์ ์ ์
- ์ฃผ์ ๋ช
๋ น์ด ์ ๋ฆฌ
sudo docker stop digits # ์ปจํ ์ด๋ ์ค์ง sudo docker start digits # ์ปจํ ์ด๋ ์์ sudo docker exec -it digits bash # ์ปจํ ์ด๋ ๋ด๋ถ ์ ๋ช ๋ น ์ฐฝ
TensorFlow ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ (๋์ปค ๊ธฐ๋ฐ)
-
์๋ ๋ช ๋ น์ด๋ฅผ ํตํด NVIDIA์์ ์ ๊ณตํ๋ TensorFlow ๊ธฐ๋ฐ ํ์ตํ๊ฒฝ ์ปจํ ์ด๋ ์์ฑ
sudo docker run -it --runtime=nvidia --name tensorflow -v [Source Directory]:[Target Directory] -p 8888:8888 nvcr.io/nvidia/tensorflow:18.07-py3
- Tip!
- [Source Directory]์
/home/USER/
๋ฅผ - [Target Directory]์
/workspace/
๋ฅผ - ์ ๋ ฅํ๋ฉด ์์ ์ ํด๋๋ฅผ ์ปจํ ์ด๋์์๋ ์์ ๋กญ๊ฒ ์ด์ฉํ ์ ์๋ค.
- [Source Directory]์
- Tip!
-
์ค์น์ฌ๋ถ ํ์ธ
python
์คํ- ์๋ ๋ช
๋ น์ด ์ฝ๋ฉ
import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() print(sess.run(hello))
Hello, TensorFlow!
์ถ๋ ฅ๋๋ ์ง ํ์ธ
-
Jupyter Notebook ์ฌ์ฉ ๋ฐฉ๋ฒ
- ์ปจํ
์ด๋ ๋ด๋ถ์์ Jupyter Notebook ์ค์น
python3 -m pip install --upgrade pip python3 -m pip install jupyter
- ์๋ ๋ช
๋ น์ด๋ก Jupyter Notebook ์คํ
jupyter notebook --allow-root --ip 0.0.0.0
- ์ปจํ ์ด๋ ์ธ๋ถ ๋ธ๋ผ์ฐ์ ธ์์ 0.0.0.0:8888์ ์ ์ ๋๋ Pycharm ๋ฑ์ ์ด์ฉํด์ Jupyter Notebook ํ์ผ ๋ง๋ค์ด์ ํด๋น ์๋ฒ์ฃผ์ ์ ๋ ฅ
- ์ปจํ
์ด๋ ๋ด๋ถ์์ Jupyter Notebook ์ค์น
-
์ฃผ์ ๋ช ๋ น์ด ์ ๋ฆฌ
sudo docker stop tensorflow # ์ปจํ ์ด๋ ์ค์ง sudo docker start tensorflow # ์ปจํ ์ด๋ ์์ sudo docker exec tensorflow jupyter notebook --allow-root --ip 0.0.0.0 # Jupyter Notebook ๋ฐ๋ก ์คํ
-
matplotlib์์ ํ๊ธ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋๋ก ํดํธ ์ค์
sudo docker exec -it tensorflow bash # tensorflow ์ปจํ ์ด๋๋ก ๋ค์ด๊ฐ์ ์ฝ์๋ช ๋ น์ผ๋ก ์ค์นํ ์ ์๋๋ก ํจ. apt-get install fontconfig apt-get install fonts-nanum* sudo fc-cache -fv cp /usr/share/fonts/truetype/nanum/Nanum* /usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/fonts/ttf/ rm -rf /home/ubuntu/.cache/matplotlib/*
AirSim ์ค์น
- GitHub Mirosoft/AirSim ์ฐธ๊ณ
- Unreal Engine 4.18 ์์ค์ฝ๋ ๋ณต์ฌ ๋ฐ ์ปดํ์ผ
git clone -b 4.18 https://github.com/EpicGames/UnrealEngine.git cd UnrealEngine ./Setup.sh ./GenerateProjectFiles.sh make
- AirSim 1.2 ์์ค์ฝ๋ ๋ณต์ฌ ๋ฐ ์ปดํ์ผ
cd .. git clone https://github.com/Microsoft/AirSim.git cd AirSim ./setup.sh ./build.sh
Jetson TX2 ๊ฐ๋ฐ์ ์ํ Jetpack ์ค์น
- ์ต์ ๋ฒ์ (3.3 L4T)์ ๋ค์ด๋ก๋ ๋ฐ๋๋ค. ๋งํฌ
- ์ค์น์๋ด ๋งํฌ์ ๋ฐ๋ผ ์ค์นํ๋ค.
- Jetpack์ ์ค์นํ๊ณ ๋๋ฉด
sudo apt-get update
์ํ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ JetPack์ด Jetson TX2๋ฅผ ์ง์ํ๊ธฐ ์ํด์ arm64๋ฅผ ์ง์ํ๋๋ก ppa๋ฅผ ์ง์ ํ๊ธฐ ๋๋ฌธ์ผ๋ก ๋ณด์ธ๋ค. ์์ง ์ด ๋ฌธ์ ๋ ํด๊ฒฐ๋์ง ์์์ผ๋ NVIDIA์์๋ ๊ธฐ๋ฅ์ ๋ฌธ์ ๋ ์๋ค๊ณ ์๊ธฐํ๊ณ ์๋ค. ์ฐธ๊ณ - ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด arm64 ์ํคํ
์ณ์ ๊ด๋ จ๋ ์ค์ ๋ค์ ์ญ์ ํ๊ธฐ ์ํด์ ์๋ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค.
sudo dkpg --force-architecture --remove-architecture arm64 sudo apt-get -f install
- Jetpack์ ์ค์นํ๊ณ ๋๋ฉด