Skip to content

How to Set Environment for Development

Seunghan Lim edited this page Jan 28, 2019 · 81 revisions

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/
    • 입력하면 자신의 폴더를 컨테이너에서도 자유롭게 이용할 수 있다.
  • 포트 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/
      • 입력하면 자신의 폴더를 컨테이너에서도 자유롭게 이용할 수 있다.
  • 설치여부 확인

    • 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 파일 만들어서 해당 서버주소 입력
  • 주요 명령어 정리

    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