Data Engineering 및 Infra

kubeflow 설치하기 - Machine Learning pipeline kubeflow install

이수진의 블로그 2020. 4. 5. 16:54
반응형
728x170

포스팅 개요

이번 포스팅은 지난 글인 머신러닝 파이프라인이란?(Machine Learning pipeline) 글에 이어서 머신러닝 파이프라인인 kubeflow를 설치(kubeflow install)하는 방법에 대해서 작성합니다.

지난 글 내용이 궁금하시다면 아래 링크를 따라 보시고 오면 될 것 같습니다.

https://lsjsj92.tistory.com/579

 

머신러닝 파이프라인이란? - ML Pipeline에 대하여

포스팅 개요 이번 포스팅은 머신러닝 파이프라인(Machine Learning pipeline)에 대해서 알아보는 포스팅입니다. 머신러닝 프로젝트를 하다 보면 필요성을 느끼게 되는 머신러닝 파이프라인. 이것이 왜 중요하고,..

lsjsj92.tistory.com

 

또한, 본 글은 아래 링크에서 참조하여 글을 작성하였습니다.


포스팅 본문

개요에서도 말씀드렸듯이 이번 글은 머신러닝 파이프라인 도구인 kubeflow를 설치하는 방법에 대해서 작성합니다. 머신러닝 파이프라인(machine learning pipeline)에 대해서는 지난 글에 작성하였습니다. 하지만 kubeflow에 대해서는 소개 하지 않았는데요. 설치하기 전에 kubeflow란 무엇인지 먼저 살펴보고 가겠습니다.

kubeflow란?

kubeflow에 대해서 먼저 알아보겠습니다. kubeflow란 무엇일까요? 

 kubeflow란 머신러닝  파이프라인을 제공해주는 오슨 소스 프레임워크입니다. 지난 포스팅에서 말씀드렸듯이 머신러닝 프로젝트를 진행하다보면 machine learning의 모델(model)의 성능보다 더 많은 부분에서 신경을 써야할 것이 많습니다. kubeflow는 그런 복잡한 머신러닝 프로젝트 구조를 단순하게 살펴볼 수 있도록 도와줍니다.

또한, kubeflow란 의미가 kubernetes(쿠버네티스)와 machine learning flow를 합한 의미를 가지고 있습니다. 즉, 쿠버네티스 환경에서 동작되는 구조를 가지고 있습니다. 그 말인 즉, 도커 컨테이너 환경을 사용해서 머신러닝 파이프라인 구축을 도와주는 역할을 수행하는 것이죠.

이 kubeflow에 대해서 더 자세히 알고 싶으시면, 개요에 써놓은 첫 번째 참고자료인 조대협님의 kubeflow 소개글을 보시면 될 것 같습니다. 제 포스팅에서는 kubeflow에 대한 소개는 여기까지 하고 이제 설치로 넘어가겠습니다.

 

kubeflow 설치 - install kubeflow

kubeflow 설치는 어떻게 할까요? 일단, kubeflow 자체가 kubernetes 환경에서 동작이 되니까 kubernets 환경이 필요합니다. 저는 아래와 같은 환경에서 kubeflow 설치를 진행하였습니다.

  • Macbook pro Catalina 10.15.2
  • Docker 19.03.8

위와 같은 환경에서 이제 설치를 진행하였습니다.

 

1. minikube 설치 

저는 kubeflow를 minikube 환경에서 설치하였습니다. 그냥 Docker 환경의 Kubernetes에서도 설치가 가능하지만, 둘 다 경험해본 결과 minikube에서 관리하는 것이 더 편리하였기 때문에 kubeflow 설치는 minikube에서 진행하였습니다.

bre install minikube 명령어로 설치를 해줍니다.

 

설치가 다 되면 success가 뜰 것입니다. 여기서 이제 minikube를 시작해줍니다. 단, 시작할 때 스펙을 어느정도 확보해두면 좋습니다. 안그러면 너무 느립니다 ㅠㅠ

minikube start --cpus 4 --memory 8096 --disk-size=60g 로 본인 환경에 맞추어 적당한 크기를 잡아줍니다.

반응형

 

이렇게 시작이 다 되면 아래와 같은 화면을 볼 수 있습니다.

 

minikube에 체크가 되어 있는 것을 확인할 수 있으실겁니다.

이제 minikube 설치를 했고 실행이 된 것을 확인하였으니 본격적으로 kubeflow를 설치해보겠습니다.

 

2. kfctl 가져오기

 kubeflow install을 위해서 kfctl을 가져옵니다. 해당 파일은 github에서 제공해주니 적절한 버전의 kfctl을 가져오시면 되겠습니다.

 

이렇게 받아진 kfctl을 tar 압축해제를 해줍니다. 압축 해제를 한 후 살펴보면 kfctl 이라는 것이 있는 것을 확인할 수 있습니다.

 

3. kubeflow 설치에 필요한 yaml 파일 가져오기 및 환경 설정

이제 kubeflow install에 필요한 환경설정과 그에 따른 yaml 파일을 가져와주어야 합니다.

환경 설정은 어느 디렉토리에서 kubeflow를 설치할 것인지 지정해주는 것인데요. 여러분들의 환경에 맞추어서 진행하시면 됩니다.

그리고 여기서 꼭 알아두셔야 할 것이 있습니다. 아래에 보면 CONFIG_URL 이란 부분이 있고 raw.github/kubeflow/manifest를 쭉쭉 타고 들어가서  kfctl_k8s_istio.v1.x.x 부분이 있습니다

해당 kfctl_k8s_istio의 버전이 바뀌면 아래 CONFIG_URL에서 kubeflow 설치에 필요한 yaml 파일을 못가져올 수 있습니다. 이 부분을 꼭 환인하셔야 합니다. 저도 3주 전까지는 1.0.0이었는데 그 사이에 1.0.1이 나와서 1.0.0 yaml 파일을 못받았습니다. 

 

위의 명령어를 쭉 실행하신 후 아래와 같이 필요한 디렉토리와 관련 환경에 들어가주시면 됩니다.

 

이제 필요한 환경에 들어왔으니 kfctl build -V -f ${CONFIG_URL}로 아까 설정한 CONFIG_URI에 소속된 yaml 파일을 기반으로 kubeflow 설치를 진행해줍니다. 이 명령어를 입력하게 되면 관련 yaml 파일을 가져오는데요

 

아래 사진처럼 kfctl_k8s_istio.v1.0.1.yaml 파일을 가져왔습니다.

 

4. kubeflow 설치 - install kubeflow

이제 이 파일을 기반으로 kfctl apply -V -f ${CONFIG_FILE} 명령어로 kubeflow 설치를 진행해줍니다. 그러면 뭔가 쭉쭉쭉 설치가 되는데요.

 

여기서 설치 중간에 아래와 같은 현상이 발생될 수 있습니다.

바로 WARN[0131] WILL retry in 21 seconds filename='kustomize/kustomize.go:203" 이러면서 Encountered error apply application cert-manager : failed calling webhook "webhook.cert-manager.io" 무슨 에러가 계속 나오면서 설치가 계속 안되는 현상이 보이게 될 것입니다. 해당 현상은 저도 잘 모르겠지만, 기다리면 다음 순서로 넘어가게 됩니다. 저도 retry가 한 20번 정도 되고 다음 순서로 넘어갔습니다.

300x250

그래서 위와 같이 계속 뭔가 안되어도 기다리시면 됩니다. 그리고 만약에, 설치가 실패된다 하더라도 다시 시도하시면 될 것입니다.

 

자! 이제 여기까지 되셨으면 사실상 kubeflow 설치는 끝났습니다. 이제 여기서 kubectl -n kubeflow get all 명령어로 kubeflow 상태를 확인할 수 있습니다. 아래 사진과 같이 말이죠.

근데, 위 사진에서 제가 박스를 쳐 놓은 부분을 보시면 아시겠지만 ContainerCreating 과 READY 부분이 0/1이 되어 있습니다.

이거는 kubeflow 실행을 위해서 관련 컨테이너드를 시작하고 있는 것입니다. 저는 한 15분 정도 기다리니까 관련 container들이 전부 running 상태로 바뀌었습니다. 즉, 여유를 가지고 잠시 커피 한 잔 하시면서 기다리시면 됩니다!

 

자! 이렇게 커피한잔 하고 오니까 관련 container들이 거의 running 상태로 들어왔습니다. 위 컨테이너들이 전부 동작이 되면 이제 다음 단계로 넘어가시면 됩니다.

 

다음 단계는 네트워크 설정만 해주시면 되는데요. kubernets 환경에 접속하기 위해서는 네트워크 환경 설정이 필요합니다. 그래서 아래와 같은 명령어로 네트워크 설정 및 실행해주시면!

 

그리고 저 위에 나와있는 127.0.0.1:8080 을 입력해주시면 kubernetes 환경에서 실행되고 있는 kubeflow 웹 화면에 접속할 수 있습니다.

 

여기서 본인만의 Namespace를 지정해주시고 넘어가시면

 

아래와 같은 kubeflow 메인 화면을 볼 수 있습니다. 

 

만약, 컴퓨터 리소스 문제로 minikube를 이제 끄고 싶으시면 minikube stop을 해주시면 됩니다.

 


마무리

이번 포스팅에서는 kubeflow 설치 과정을 살펴보았습니다. 구글에 install kubeflow 등을 쳐봐도 관련 자료가 많이 없어서 저도 삽질을 많이 했었네요. 부디 도움 되시길 바랍니다.

반응형
그리드형