pytorch를 docker 환경에서 설치하는 것은 매우 간단하다. 다만 nvidia-docker 환경이 먼저 설치되어 있어야 한다.

 

□ nvidia-docker 설치

nvidia-docker 설치를 하고 싶다면 아래를 참고하기 바란다.

https://driz2le.tistory.com/297

 

Ubuntu, Nvidia-docker 설치

당연히 docker는 먼저 설치가 되어 있어야 한다. 설치된 docker 환경에서 GPU를 사용할 수 있도록 nvidia-docker을 설치하는 가장 좋은 방법은 역시 nvidia에서 공식적으로 제공하는 github 사이트를 이용하는 것..

driz2le.tistory.com

 

□ docker pytorch 설치

nvidia-docker 환경 구성을 완료했거나 이미 설치가 되어 있을 경우 이제 콘솔 화면에서 아래와 같이 입력하여 설치를 시작한다.

$ docker pull pytorch/pytorch

 

참고로 해당 명령은 아래 사이트에서 pytorch 설치에 대한 정보를 확인할 수 있다.

https://hub.docker.com/r/pytorch/pytorch/

 

Docker Hub

 

hub.docker.com

해당 사이트를 캡처한 아래 그림에서 오른 쪽 하단에 Docker Pull Command를 통해서 설치 명령어를 알 수 있다.

 

끝으로 docker 사이트에 로그인이 되어 있지 않다면 로그인하라는 메세지가 뜨기도 한다.

당황하지말고 침착하게 docker login ~

 

□ docker pytorch 이미지 확인

pytorch 다운로드가 완료되면 아래와 같이 이미지를 잘 받았는지 확인이 가능하다.

$ docker images
REPOSITORY              TAG                      IMAGE ID            CREATED             SIZE
pytorch/pytorch             latest                    ba2da111b833      3 weeks ago         4.32GB

 

□ docker pytorch 컨테이너 실행

runtime 환경에 nvidia를 설정해 주어야 한다.

 

# docker version 19.03 이상

$ docker run --gpus all --name pytorch --restart=always pytorch/pytorch

 

# docker version 19.03 이하 nvidia-docker v2 상태

$ docker run --runtime=nvidia --name pytorch --restart=always pytorch/pytorch

 

※ 주의

    docker version 19.03 부터 nvidia-docker를 설치하면 --gpus 명령을 사용해야 한다.

    19.03 이하 버전에서는 nvidia-docker 버전에 따라 아래처럼 사용한다.

    nvidia-docker v2에서는 --gpus all 대신 --runtime=nvidia를 사용한다.

    nvidia-docker v1은 --runtime=nvidia 또는 --gpus all 명령줄 플래그 대신 nvidia-docker 별칭을 사용한다.

 

□ 설치된 pytorch에서 GPU 사용여부 확인

pytorch 컨테이너가 구동되면 pytorch가 정상적으로 GPU를 사용할 수 있는지 확인할 필요가 있다.

이 경우 아래 페이지를 참고하여 확인할 수 있다.

 

https://driz2le.tistory.com/270

 

pytorch GPU check

일반적인 경우 아래 세 개 command로 pytorch에서 GPU를 사용가능한지 확인이 가능하다. import torch torch.cuda.is_available() torch.cuda.get_device_name(0) torch.cuda.device_count() 각각의 command를 설..

driz2le.tistory.com

이제 사용하는 일만 남았다~ 건승하시길~

 

□ 추신

새로 설치한 pytorch에는 VI와 jupyter notebook이 설치되어 있지 않다. 설치해 주려면 아래를 수행한다.

1) VI 설치

$ apt-get update
$ apt-get install vim

 

2) jupyter notebook 설치

$ pip install jupyter

 

반응형

'Linux' 카테고리의 다른 글

Ubuntu, Nvidia-docker 설치  (0) 2020.03.28
필수 SW, FileZilla Client  (0) 2020.03.28
실행중인 docker container 접속  (0) 2019.09.29
nvdia driver, CUDA, CUDNN 설치 여부 및 버전 검사  (0) 2019.09.15
docker에 visual studio code 설치  (0) 2019.07.14

일반적인 경우 아래 세 개 command로 pytorch에서 GPU를 사용가능한지 확인이 가능하다.

import torch

torch.cuda.is_available()

torch.cuda.get_device_name(0)

torch.cuda.device_count()

 

각각의 command를 설명하면 다음과 같다.

# GPU를 사용할 수 있는 지 알 수 있다.

torch.cuda.is_available()

→ True

 

# GPU 정보를 반환한다. 아래는 0번 GPU 정보를 반환한다.

torch.cuda.get_device_name(0)

'GeForce GTX 1080 Ti'

 

# 사용가능한 GPU 개수를 반환한다. 아래 예제는 2개의 GPU가 있다는 것을 알 수 있다.

torch.cuda.device_count()

→ 2


# 만약 os 세팅을 통해서 GPU 개수를 줄인다면

# 터미널에서 아래와 같이 환경변수 CUDA_VISIBLE_DEVICES를 0으로 설정한 후 python 실행

CUDA_VISIBLE_DEVICES=0 python                 # python 실행

 

# 환경 변수에 의해서 사용가능한 GPU가 0번만 지정되어 1개로 나타난다.

torch.cuda.device_count()

→ 1

 

# 아래와 같이 사용하는 것은 tourch.cuda.device_count() 결과에 영향을 주지 않는다.

CUDA_VISIBLE_DEVICES=0 python                 # python 실행

 

import os

os.environ['CUDA_VISIBLE_DEVICES]  = "0"

torch.cuda.device_count()

→ 2

 

이외 아래와 같은 명령어들이 있다.

# 항상 0을 return

torch.cuda.current_device()

→ 0

 

# device 정보 반환

torch.cuda.device(0)

 

반응형

□ exec 명령어

실행중인 docker container에 특정 명령을 수행하도록 지시하는 명령어로 대부분의 경우 -it 옵션을 지정할 필요가 있다.

-it 옵션은 표준 입출력(STDIN)을 통해서 접속하라는 것으로 TTY 연결을 통해서 수행된다.

사용방법은 아래와 같다.

 

docker exec -it [명령어 또는 실행 프로그램]

 

docker exec -it /bin/bash

가장 많이 사용하는 명령 중 하나로 docker container에 bash을 이용해서 TTY 연결을 하라는 것이다. 즉, docker container상의 콘솔(console) 창이 하나 생성된다.

 

 

 

 

반응형

'Linux' 카테고리의 다른 글

필수 SW, FileZilla Client  (0) 2020.03.28
docker pytorch 설치  (0) 2019.11.08
nvdia driver, CUDA, CUDNN 설치 여부 및 버전 검사  (0) 2019.09.15
docker에 visual studio code 설치  (0) 2019.07.14
docker와 GUI 환경 연결  (0) 2019.07.14

엘초코데떼레노

서울특별시 용산구 한남동 263-10
02-792-5585 https://g.co/kgs/uFbsaA
반응형

떼레노

서울특별시 종로구 가회동 북촌로 71
02-332-5525 https://g.co/kgs/zEUvZ4
반응형

1. Nvidia Driver 설치 여부 및 버전 확인

$ cat /proc/driver/nvidia/version

 정상적으로 설치되어 있는 경우 아래와 같이 출력된다.

NVRM version: NVIDIA UNIX x86_64 Kernel Module  430.34  Wed Jun 26 12:19:48 CDT 2019
GCC version:  gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1) 

 

이외 nvidia-smi를 이용해서 확인하는 방법도 있다. (이것을 더 추천한다.)

$ nvidia-smi

 

2.  CUDA

$ nvcc --version

 정상적으로 설치되어 있는 경우 아래와 같이 출력된다.

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

 

nvidia-smi는 수행되는데 nvcc 가 수행 안될 경우, 

보통은 path 설정 문제이다. 하기와 같이 .bashrc 파일에 경로(path)를 추가한다.

# VI 에디터로 .bashrc 파일에 경로 추가

$ vi ~/.bashrc

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

 

# .bashrc 재수행

$ source ~/.bashrc

 

3. CUDNN

버전별로 스크립트가 하기와 같이 다르다.

# cuDNN 8.x.x 이전 버전
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

# cuDNN 8.x.x 이후 버전
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

 

 

$ cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

→ 정상적으로 설치되어 있는 경우 아래와 같이 출력된다.

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 3
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

 

반응형

Visual studio code 설치만 필요하고 docker환경에서 설치는 필요없다면

내용 중 " Visual Studio Code 설치" 부분만 참고하면 된다.

 

 Docker container에 ubuntu 설치

vscode(Visual Studion code)를 설치하기 위해
    반드시 ubuntu docker container가 필요한 것은 아니다.

    "설명"을 위해서 ubuntu를 하나의 docker container로 새로 생성했을 뿐이다.

    docker container로 ubuntu를 설치하면 거의 깡통에 가깝기 때문에
    필요한 모든 라이브러리들을 설명하기 쉽기 때문이다.

 

docker container에 ubuntu를 설치한다.

docker pull ubuntu:latest

 

 Docker container와 X windows 환경 연동

docker container에서 X windows 환경을 사용할 수 있도록 설정한다.

docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --name ubuntu1 ubuntu

 

참고) 재실행 

docker start utuntu1

 

참고) 재실행 후 접속

$ docker attach utuntu1 

또는

$ docker exec -it ubuntu1 bash

 

설치된 ubuntu는 거의 깡통이므로 아래와 같이 필수 애플리케이션을 추가 설치한다.

컨테이너가 시작되면 root 계정이므로 그대로 설치가 가능하다. 

가급적 아래를 순차적으로 수행하여 설치해 주는 것이 좋다.

apt-get update
apt-get install sudo
apt-get install wget
apt-get install curl
apt-get install build-essential
apt-get install vim
apt-get install software-properties-common

※ 참고) apt-get install software-properties-common : add-apt-repository를 사용할 수 있게 해준다.

 

(옵션) 신규 user를 생성하고 su 명령을 통해서 user를 변경한다. root를 그대로 사용해도 무방하다.

adduser tester

user를 tester로 변경했으므로 이제 sudo 명령이 필요하다. 역시 root를 그대로 사용한다면 sudo 명령은 필요없다.

참고로 user가 sudo 명령을 사용할 수 있도록 /etc/sudoers 파일에 등록을 먼저 끝내야 한다.

본 글에서는 특정 user에서 설치하므로 아래 명령 모두 sudo를 항상 붙여주지만 root에서 설치하는 경우에는 sudo를 제거하고 실행한다. 그리고 편의 상 docker를 썼을 뿐 당연히 docker 환경에서만 설치가 가능한 것은 아니다. 

 

 Visual Studio Code 설치

1) GPG 키를 다운로드하여 /etc/apt/trusted.gpg.d/ 경로에 복사

sudo sh -c 'curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg'

아래와 같이 나오면 성공

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed
100   983  100   983    0     0   1977      0 --:--:-- --:--:-- --:--:--  1977

 

2) Visual Studio Code를 다운로드 받기 위한 저장소를 추가

sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'

 

3) 그리고 추가한 저장소를 이용해서 패키지 목록을 갱신하고 Visual Studio Code를 설치한다.

sudo apt-get update
sudo apt-get install code

 

4) 설치가 완료되면 다음과 같이 실행한다.

단, 실행 전에 docker 밖의 별도 호스트 쉘에서 

$ xhost +local:docker

명령으로 xwindows 통신이 가능하도록 먼저 처리되어 있어야 한다.

code

※ 참고) root에서 수행할 경우 --user-data-dir 를 붙여주라고 나온다. 아래 정도면 적당하다.

code --user-data-dir=/home/vscode

□ Error 1 : libX11-xcb.so.1 등 없다고 나올 때

   "libX11-xcb.so.1: cannot open shared object file: No such file or directory ......."

 

관련 라이브러리들을 메세지마다 설치한다. 아래는 해당 오류들이 많이 나오는 라이브러리들이다.

참고로 깡통 ubuntu일수록 해당 메세지들이 많이 나온다.

미리 다 설치할 필요는 없고 오류 메세지가 나오면 하나씩 설치해 주도록 한다~.

 

- 자주 나오는 라이브러리

sudo apt install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 
sudo apt install -y libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6

- 이외 가끔 나오는 라이브러리

sudo apt install -y libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 
sudo apt install -y libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 
sudo apt install -y libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 
sudo apt install -y ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

 

□ Error 2 : gnupg, gnupg2 등 없다고 나올 때

   "E: gnupg, gnupg2 and gnupg1 do not seem to be installed, ... "

 

역시 깡통 ubuntu에서 주로 저장소 추가하거나 할때 자주 나온다. 아래와 같이 가볍게 해결이 가능하다.

sudo apt-get update
sudo apt-get install gnupg   ( ... gnupg1 gnupg2 ... )

 

□ Error 3 : git 이 없다고 나올 때

실행 중 나타날 수 있다. 간단히 해결이 가능하다.

sudo apt-get install git

 

반응형

docker container에서 GUI 애플리케이션을 수행할 필요가 있는 경우가 많다.

이를테면 vscode를 실행시킨다던지, 심심하니까 xeyes를 실행시켜 놓는다던지..

아래 설명한 방법을 사용하면 docker container가 무엇이든 X windows와 연동하여 GUI 애플리케이션 수행이 가능하다.

참고로 여기서는 테스트를 위해서 ubuntu를 container로 설치하여 설명한다.

( 참고로 저의 경우 tensorflow와 pytorch docker container에서 vscode를 주로 호출해서 사용합니다.

  OS로 사용하는 ubuntu에 기본 외에 다른 것을 설치하기를 싫어하기 때문이며

  개발환경은 가급적 docker 내에 구성하려고 애쓰는 편입니다. )

 

□ docker container에서 GUI 환경 사용

docker 환경에서 GUI application을 사용하는 것을 테스트 하기 위해 ubuntu 환경을 설치한다.

$ docker pull ubuntu


docker container를 X windows와 연동할 수 있도록 옵션을 붙여서 수행한다.

$ docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --name ubuntu1 ubuntu

 

위에서 -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY 옵션은 핵심이다.

또한 --name ubuntu1에서 ubuntu1은 작성 예일 뿐이며 당연히 사용자가 원하는 이름으로 정하면 된다.

 

참고로 exit로 빠져나왔을 경우

$ docker start utuntu1

$ docker attach ubuntu1

 

□ 연동 확인 테스트

docker의 ubuntu1 컨테이너를 실행시킨 후 

X windows 연동 테스트를 위해서 xeyes를 사용하고 xeyes 설치를 위해 x11-apps를 설치한다.

$ apt-get update

$ apt-get install x11-apps

 

xeyes를 실행하면 보통은 아래처럼 오류가 나온다.

$ xeyes

No protocol specified
Error: Can't open display: :1

docker container가 아닌 외부에서 다른 터미널을 하나 띄우고 아래와 같이 수행한다.

docker user가 실행하는 모든 프로그램을 X windows와 통신하게 해준다.

$ xhost +local:docker

 

해제하려면 다음과 같이 수행한다.

$ xhost -local:docker

 

docker user 외에도 아래처럼 X windows를 로그인한 user로 설정해도 된다.
xhost +local:$USER
xhost -local:$USER

반응형

시작하기 전에 아래와 같이 환경 구성을 해주는 것을 권장한다.

 

 시작 환경 구성

$ sudo apt-get update
$ sudo apt-get install build-essential

 

Nvidia GTX-1080Ti와 ubuntu 18.04 환경에서는 거의 모두 nouveau 문제가 있다.
Nvidia GTX-1080Ti graphic card가 이미 설치되어 있는 장비에 ubuntu 18.04을 설치하면 nouveau 설정으로 그래픽 카드가 설치 당시에 이미 자동 설정되기 때문이다. 따라서 nouveau 설치 여부를 확인하고 제거하는 것이 필요하다.

 

※ 주의) console 모드를 통해 Nvidia driver를 설치하는 것보다는 Nvidia 홈페이지에서 driver를 다운로드받아서 설치하는 것을 권장한다. 아래 nouveau를 제거하기 전에 미리 Nvidia driver를 받아 두도록 한다.

 

□ nouveau 설치 확인
아래 명령어 실행 후 리스트가 출력되면 nouveau가 설치된 것이다. Nvidia 정식 드라이버 설치를 위해선 제거해야 한다.

$ lsmod | grep nouveau

 

□ nouveau 제거 및 blacklist 등록
아래 경로에 blacklist 파일을 생성한다.

$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf



생성된 .conf 파일에 아래 두 줄을 입력한다.

blacklist nouveau
options nouveau modset=0


아래 명령어를 입력 후 재부팅한다. update에 1분 쯤? ... 조금 시간이 걸린다. 기다리자.

$ sudo update-initramfs -u
$ sudo reboot

 

□ Nviida driver console 환경 설치
아래는 우분투 18.04에서 기본으로 제공하는 X windows 환경을 종료하고 Console 모드로 들어가는 명령어이다.

$sudo service gdm stop


참고로 우분투 16.04에서 기본으로 제공하는 X windows 환경은 아래와 같은 명령으로 종료한다.

$ sudo service lightdm stop

 

Ubuntu driver를 repository에 등록한다.

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo ubuntu-drivers autoinstall
$ sudo reboot

 

재부팅 후에 아래 명령을 통해서 Nvidia driver 설치여부를 확인한다.

$ nvidia-smi

 

이제 CUDA를 설치한다.

$ sudo apt install nvidia-cuda-toolkit gcc-6
반응형

'Linux' 카테고리의 다른 글

docker에 visual studio code 설치  (0) 2019.07.14
docker와 GUI 환경 연결  (0) 2019.07.14
ubuntu 18.04 - Ubuntu 한글 입력기 설치(fcitx)  (1) 2019.07.14
How can I install CUDA 9 on Ubuntu 17.10  (0) 2018.07.20
Ubuntu Synergy 설치  (0) 2018.07.20

우분투에서 ibus를 통한 한글 변환이 생각처럼 잘 안되는 경우가 많다.

그래서 fcitx를 이용하는 것이 종종 더 편하다.

아래는 fcitx를 이용해서 한글 입력 설정을 하는 내용이다.

18.04에서 설정한 내용이지만 16.04나 상위버전에도 문제없이 설치가 가능하다.

 

□ 설치 환경

   - ubuntu 18.04

   - ubuntu 20.04

   - 원격 데스크톱 수행 시 trooble shooting 

 

일단 아래와 같이 수행해서 fcitx-hangul을 설치한다. 대개의 경우... 아주 잘 설치된다.

sudo apt-get update
$ sudo apt-get install fcitx-hangul

 

우분투 Setting에서 Region & Language 수행 - Manage installed Language 버튼 실행한다.

 

아래와 같이 실행되면 Language 관련 여러가지를 설치한다고 나오는데 설치한다.

 

 

설치가 완료되면 하단 keyboard input method system 항목을 fcitx로 변경한다.

 

Language Support에서 fcitx 설정

 

시스템 재부팅~. 재부팅이 완료되면 우상단에 키보드 모양의 아이콘이 보이고 이 아이콘을 클릭하여 configure를 선택한다. 우상단에 해당 아이콘이 안보이는 경우 이 글 마지막 부분을 참고하면 된다.

 

Input Method Configuration에서 하단 "+" 버튼을 클릭한다. 

 

Add input method 창이 뜨면 "Only Show Current Language"에 체크가 된 것을 해제하고 hangul을 입력해서 검색한다.

 

한글 추가가 끝났다. 아래처럼 보인다. Keyboard-English(US)는 있어도 되고 없어도 된다.

 

이제 Input Method Configuration의 Global Config 탭(tab)을 클릭한다.

Trigger Input Method의 왼쪽 버튼을 마우스 클릭한다음 "한영키"를 눌러서 바꿔주면 끝난다.

 

한글이 잘 설치되면 한영키 클릭 시 아래와 같이 키보드 아이콘이 바뀌는 것을 볼 수 있다.

 

 Fcitx의 Input Method Configuration 아이콘이 보이지 않는 경우

애플리케이션 모음(show application)에서 fcitx로 검색하면 하기와 같이 2개 아이콘을 볼 수 있다.

fcitx, fcitx configuration

fcitx configuration을 실행한다.

 

□ Trooble shooting, 원격 데스크톱 수행 시 한글 입력기 동작 문제

재시작(reboot) 후에도 처음에 fcitx가 잘 동작하지 않는 경우가 있다. 이 경우, 보통은 한 두번 더 재시작을 하면 해결된다. 즉, 위 단계를 모두 끝낸 후 재시작을 더 해보고 원격 데스크톱 접속을 하면 잘 되는 것을 확인할 수 있다.

 

□ Special Thanks

Ubuntu 20 설치 : Telesto 님께서 Ubuntu 20에서도 동일 방법으로 잘 설치됨을 알려 주셨습니다.

반응형

+ Recent posts