로컬에서는 잘 되는데 ☘️

Kubeflow 설치 - Ubuntu 18.04(nvidia-docker)

by youngjun._.

Ubuntu 18.04에 Kubeflow를 설치하고 pipelines SDK를 사용해보려고 한다.

왠지 모르겠는데 16.04는 잘 안됨

 

참고한 블로그

https://www.kangwoo.kr/category/machine-learning/kubeflow/page/5/

 

https://www.kubeflow.org/

목차

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가 설치되어있는지 확인할 수 있다.

아니나 다를까 내 PC에도 설치되어있다.

/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

nvidia 드라이버가 정상적으로 설치되었다!


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 docs 제공 (20.06.10 기준)

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

그대로 했지만 오류가 발생했다.

Unsupportes distribution!

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

 

블로그의 정보

개발하는만두

youngjun._.

활동하기