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/
목차
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
'Infra > Kubernetes' 카테고리의 다른 글
Deployment - ReCreate와 Rolling Update 차이점 (2) | 2020.04.08 |
---|---|
Controller - Deployment의 네 가지 방식 (0) | 2020.04.08 |
ReplicaSet의 3가지 기능 (0) | 2020.04.07 |
Kubernetes - Controller (0) | 2020.04.07 |
Kubernetes - Namespace, ResourceQuota, LimitRange란? (0) | 2020.03.13 |
블로그의 정보
개발하는만두
youngjun._.