# Kubeflow ์ค์น - Ubuntu 18.04(nvidia-docker)
Ubuntu 18.04์ Kubeflow๋ฅผ ์ค์นํ๊ณ pipelines SDK๋ฅผ ์ฌ์ฉํด๋ณด๋ ค๊ณ ํ๋ค.
์ ์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ 16.04๋ ์ ์๋จ
ย
์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ
https://www.kangwoo.kr/category/machine-learning/kubeflow/page/5/
ย
๋ชฉ์ฐจ
Ubuntu 18.04 LTS ์ค์น
- Nvidia driver ์ค์น
Docker ์ค์น
nvidia-docker ์ค์น
ย
์ค์น ๋ฒ์ ์ ๋ฆฌ
- Ubuntu 18.04 LTS
- Nvidia driver 435
- docker-CE 18.09
- nvidia-docker
- kubernetes 1.15.10
- cilium 1.6
- nvidia-device-plugin-daemonset 1.12
- kubeflow 1.0RC4 with istio 1.3
ย
Ubuntu 18.04 LTS ์ค์นํ๊ธฐ
1. ์ค์น ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋
2. ๋ถํ USB๋ฅผ ๋ง๋ค๊ธฐ
3. GIGABYTE USB ๋ถํ
ย
์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
https://hiseon.me/linux/ubuntu/install-ubuntu-18-04/
ย
(1) Nvidia driver ์ค์น
์ฐ๋ถํฌ 18.04 ํ๊ฒฝ์์ nvidia ๊ทธ๋ํฝ ์นด๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
https://www.kangwoo.kr/category/machine-learning/kubeflow/page/5/
ย
nvidia ๋๋ผ์ด๋ฒ ์ค์น๋ฅผ ์ํด nouveau๋ฅผ ์ ๊ฑฐํ ํ์๊ฐ ์๋ค.
ย
1. nouveau ์ค์น ํ์ธ ํ ์ ๊ฑฐํ๊ธฐ
$ lsmod | grep nouveau
๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด nouveau๊ฐ ์ค์น๋์ด์๋์ง ํ์ธํ ์ ์๋ค.
/etc/modprobe.d/ ๊ฒฝ๋ก์ blacklist ํ์ผ์ ์์ฑํ์.
ย
vi ํธ์ง๊ธฐ๋ฅผ ์ด์ฉํด ์๋ ๋ด์ฉ์ ๋ฃ๊ณ esc+wq๋ก ์ ์ฅํ์.
$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modset=0
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ ํ, ์ฌ๋ถํ ํ์.
$ sudo update-initramfs -u
$ sudo service gdm stop
์ฌ๋ถํ ํ๋ฉด ๋ชจ๋ํฐ ํด์๋๋ฅผ ์ ์์ ์ผ๋ก ์ธ์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
Nvidia ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ๋ฉด ๊ด์ฐฎ์์ง๋ค!
ย
2. 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
Kubeflow ์ค์นํ๊ธฐ
(1) ์ต์ ์์คํ ์๊ตฌ์ฌํญ
https://www.kubeflow.org/docs/started/k8s/overview/
๊ณต์ ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด kubeflow ์ต์ ์์คํ ์๊ตฌ์ฌํญ์ ์ด๋ ๋ค.
- RAM 12GB ์ด์
- CPU 4 core ์ด์
- Storage 50GB ์ด์
ย
๊ทธ๋์ ๋ด PC ์ฌ์์ ์์๋ณด์๋ค.
RAM | 16 GB |
CPU core | 12 |
Storage | 256 GB |
CPU | Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz |
Graphic Card | GeForce RTX 2070 - Nvidia |
Kubernetes์ Kubeflow์ ๋ฒ์ ๋ ํ์ธํด๋ณด์.
Kubeflow 1.0์ ์ฌ์ฉํ๊ธฐ ์ํด Kubernetes ๋ฒ์ ์ 1.15๋ฅผ ์ค์นํ์.
ย
(2) Docker ์ค์นํ๊ธฐ
apt๊ฐ https ์ ์ฅ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํจํค์ง ์ถ๊ฐ
$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
docker์ 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
docker-ce๋ 18.09 ๋ฒ์ ์ ๋ค์ด๋ก๋ ๋ฐ๊ณ ํจํค์ง๋ฅผ ๊ณ ์ ํ์.
$ sudo apt-get install -y 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
docker๋ฅผ 18.09 ๋ฒ์ ์ผ๋ก ๋ค์ด๋ฐ๋ ์ด์ ?
19.03 ๋ฒ์ ๋ถํฐ GPU ๊ด๋ จ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋์๋ค. kubernetes์์ GPU ์์
์ ํ๋ ค๋ฉด,ย k8s-device-plugin์ด ํ์ํ๋ฐ, ์์ง(20.06.10) 19.03 ๋ฒ์ ์ ์ง์ํ์ง ์๋ ๊ฒ ๊ฐ๋ค.
์ฐธ๊ณ - https://www.kangwoo.kr/category/machine-learning/kubeflow/page/5/
๋์ปค๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋์๋์ง hello-world ์ด๋ฏธ์ง๋ฅผ ์คํํด๋ณด์
$ sudo docker run hello-world
์๋์ ๊ฐ์ด ์ถ๋ ฅ๋๋ฉด ์ ์์ ์ผ๋ก ์ค์น๋ ๊ฒ์ด๋ค.
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Sudo ์์ด Docker ์คํํ๊ธฐ
Docker๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฃจํธ ๊ถํ์ด ํ์ํ๋ค.
๋ฒ๊ฑฐ๋ก์ฐ๋๊น Docker๋ฅผ sudo ๊ถํ์ผ๋ก ๋ฑ๋ก์์ผ์ฃผ์.
$ sudo groupadd docker
$ sudo usermod -aG docker ${USER}
$ newgrp docker
$ docker run hello-world
(3) nvidia-docker ์ค์นํ๊ธฐ
๋์ปค ์ปจํ ์ด๋์ GPU ๋ฆฌ์์ค ์ฌ์ฉ์ ์ํด nvidia-docker๋ฅผ ์ค์นํด์ผํ๋ค.
์๋ distribution์ด ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋ ๊ฒ ๊ฐ๋ค!
# Add the package repositories
$ distribution=$(. /etc/os-release;echo 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
๊ทธ๋๋ก ํ์ง๋ง ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
https://nvidia.github.io/nvidia-docker/ย ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ ํ์ธํด๋ณด์๋ค.
์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ ๋ด์ฉ๊ณผ distribution ๋ช ๋ น์ด ๋ด์ฉ์ด ๋ฌ๋๋ค
๋งํฌ์ ๋ด์ฉ๋๋ก ์ ๋ ฅํด๋ณด์๋ค.
$ 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๋ฅผ ์ค์นํ์
$ sudo apt-get install nvidia-docker2
$ sudo systemctl restart docker
ย
nvidia-docker๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋์๋์ง ํ์ธํด ๋ณด๊ธฐ ์ํด์, ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํด๋ณด์.
$ sudo docker run --runtime nvidia nvidia/cuda:10.0-base nvidia-smi
์ ์์ ์ผ๋ก ์ค์น๊ฐ ๋์๋ค๋ฉด ๋ ธ๋์ ์ค์น๋์ด ์๋ GPU์ ๋ฆฌ์คํธ์ ๊ฐ์ข ์ํ ๋ฐ ์ํด์ค๋๋ ํ๋ก์ธ์ค๋ฅผ ์ ์ ์๋ ์ ๋ณด๋ฅผ ํ์ธ ํ ์ ์๋ค.
ย
ย
๋์ปค์ ๊ธฐ๋ณธ ๋ฐํ์์ ๋ณ๊ฒฝํด์ฃผ์
์์ฑ๋ /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
ย
ย
Reference
ย
[1] ์ง๊ตฌ๋ณ ์ฌํ์ ๋ธ๋ก๊ทธ - https://www.kangwoo.kr/category/machine-learning/kubeflow/page/5
[2] EGAS ๋ธ๋ก๊ทธ - http://ghcksdk.com/kubeflow-installation/
https://hub.docker.com/r/tensorflow/tensorflow/
https://www.tensorflow.org/guide/gpu
https://docs.docker.com/install/linux/docker-ce/ubuntu/
https://github.com/NVIDIA/nvidia-docker
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
https://blusky10.tistory.com/359
ย