이 글은 지적 유희를 위해서 작성하였습니다. kubeflow 자체가 목적이신 분들은, miniKF나 GCP를 사용하시길 추천드립니다.
시스템 사항
다음은 이 글에서 사용한 PC의 사양입니다. kubeflow를 원활하게 설치하기 위해서는 램이 16GB 이상, CPU는 4코어 이상을 추천합니다. GPU를 사용하기 위해서 nvidia 그래픽 카드도 필요합니다.
프로세서 | amd 라이젠 5 3600 |
RAM | 32GB |
그래픽 카드 | RTX-2060 |
스토리지 공간 | 다다익선 |
설치 목록
- ubuntu 18.04 LTS
- nvidia driver 435
- docker CE 18.9
- nvidia-docker2
- kubernetes 1.15.10
- cilium 1.6
- nvidia-device-plugin-daemonset 1.12
- kubeflow 1.0RC4 with istio 1.3
전체 목록
- PC에 kubeflow 설치하기 – 1부 nvidia 드라이버, docker 설치하기
- PC에 kubeflow 설치하기 – 2부 kubernetes, nvidia device-plugin 설치하기
- PC에 kubeflow 설치하기 – 3부 kubeflow 설치하기
우분투 설치하기
우분투는 데스크탑 18.04 LTS 버전을 사용합니다. 설치 방법은 다른곳에 많이 나와있기 때문에 생략합니다. 다만 nvidia 그래픽 카드를 사용할 경우 문제가 생기기 때문에, 그 부분만 다루겠습니다.
nvidia driver 설치하기
우분투 18.04 환경에서 RTX-2060을 사용할 경우 nouveau 문제가 있습니다. RTX-2060가 장착되어 있는 장비에서 우분투를 설치할 경우 nouveau로 자동 설정되기 때문이다. 그래서 nouveau 를 제거하는 작업이 필요합니다.
우분투 설치 화면이 깨져서 보이지 않는다면, 설치 전에 nomodset
옵션을 추가해줘야 정상적인 화면을 볼 수 있습니다.
우분투를 설치 하기 전 GRUB 메뉴 화면에서 e
키를 누룹니다.

e
키를 누르면, 다음과 같이 파라메터를 편집할 수 있는 화면이 나옵니다.

quiet splash
뒤에 nomodeset
을 추가해 줍니다. 그리고 F10 키를 눌러서 부팅 합니다.

정상적으로 화면이 보일 것입니다. 우분투를 설치하는 나머지 과정은 생략하겠습니다.
nouveau 설치 확인 하기
우분투가 정상적으로 설치되었다면, 재부팅 후 nouveau
확인 작업을 합니다. 시스템이 다시 시작되면, 앞서 한 것과 동일한 방법으로, nomodset
옵션을 추가해줘야 정상적인 화면을 볼 수 있을것입니다.

부팅이 완료되면 터미널을 열어서 작업을 시작합니다.
터미널에서 다음 명령어를 실행한 후, 결과가 보이면 nouveau가 설치되어 있는 것입니다. nvidia 드라이버 설치를 위해서 제거해야 합니다.
$ lsmod | grep nouveau nouveau 1863680 0 mxm_wmi 16384 1 nouveau video 49152 1 nouveau i2c_algo_bit 16384 1 nouveau ttm 102400 1 nouveau drm_kms_helper 180224 1 nouveau drm 479232 3 drm_kms_helper,ttm,nouveau wmi 28672 3 wmi_bmof,mxm_wmi,nouveau
/etc/modprobe.d/
경로에 blacklist
파일을 생성합니다.
$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf blacklist nouveau options nouveau modset=0
다음 명령어를 실행 한 후, 재부팅 합니다.
$ sudo update-initramfs -u $ sudo service gdm stop
Nvidia 드라이버 설치하기
컨테이너(Container)를 이용해서 GPU를 사용할 예정이기 때문에, Nvidia 드라이버가 설치합니다.
$ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt-get update $ sudo apt-get install nvidia-driver-435 $ sudo reboot
재부팅 후, nvidia-smi
명령어를 실행해서, 드라이버가 정상적으로 설치되어 있는지 확인해 볼 수 있습니다.
$ nvidia-smi Sun Feb 16 17:26:22 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 435.21 Driver Version: 435.21 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce RTX 2060 Off | 00000000:26:00.0 On | N/A | | 32% 45C P8 9W / 190W | 189MiB / 5931MiB | 1% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 975 G /usr/lib/xorg/Xorg 96MiB | | 0 1123 G /usr/bin/gnome-shell 91MiB | +-----------------------------------------------------------------------------+
docker 설치하기
apt
가 https
저장소를 사용할 수 있도록 패키지를 추가합니다.
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
도커의 GPG 키를 추가합니다.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
저장소를 추가합니다
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
apt
패키지의 인덱스를 업데이트합니다.
$ sudo apt-get update
이 문서를 작성할 당시(2020-02-08)에 도커의 최선 버전은 19.03이였습니다. 19.03 버전 부터 GPU 관련한 내용이 변경되었습니다. 쿠버네티스상에서 GPU 관련 작업을 하라면, k8s-device-plugin
이 필요한데, 아직 19.03 버전을 지원하지 않는 것 같습니다. 그래서 18.9 버전을 설치하였습니다.
도커 엔진 18.9 버전을 설치합니다.
$ sudo apt-get install docker-ce=5:18.09.9~3-0~ubuntu-bionic docker-ce-cli=5:18.09.9~3-0~ubuntu-bionic containerd.io $ sudo apt-mark hold docker-ce docker-ce-cli
설치 가능한 도커 버전을 보려면 다음 명령어를 실행하면 됩니다.
$ apt-cache madison docker-ce docker-ce | 5:19.03.5~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.4~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.3~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.2~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.1~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:19.03.0~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.9~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.8~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages docker-ce | 5:18.09.7~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages ...
도커가 정상적으로 설치되었는지 확인해 보기 위해서 hello-world
이미지를 실행합니다.
$ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...
nvidia-docker2 설치하기
컨테이너에서 GPU를 사용하기 위해서 nvidia-docker2
을 설치합니다. 그리고 도커를 재시작 합니다.
# Add the package repositories $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - $ 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 $ sudo apt-get install nvidia-docker2 $ sudo systemctl restart docker
nvidia-docker2
가 정상적으로 설치되었는지 확인해 보기 위해서, 다음 명령어를 실행합니다.
$ sudo docker run --runtime nvidia nvidia/cuda:10.0-base nvidia-smi Sat Feb 8 11:19:15 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 435.21 Driver Version: 435.21 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce RTX 2060 Off | 00000000:26:00.0 On | N/A | | 29% 40C P8 9W / 190W | 229MiB / 5931MiB | 1% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| +-----------------------------------------------------------------------------+
도커의 기본 런타임을 변경해 줍니다. /etc/docker/daemon.json
파일이 생성되었을 것입니다. 해당 파일을 열여서 "default-runtime": "nvidia"
을 추가해주면 됩니다.
$ sudo vi /etc/docker/daemon.json { "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
파일을 수정한 후, 도커를 재시작합니다.
$ sudo systemctl restart docker
참고
- https://docs.docker.com/install/linux/docker-ce/ubuntu/
- https://github.com/NVIDIA/nvidia-docker
kubeflow 오랜만에 재설치하느냐구 참고하고 있습니다.
예전에 비해 쉽게 잘되네요 ㅎㅎ.
중간에 nvidia-docker2 설치시
distribution=$(. /etc/os-release;echo VERSION_ID) 설정하는부분이 복붙을 하면 잘못표기되어있네용
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) 이렇게 하면 잘됩니다.