Kubeflow on GCP (1)

2019-08-11

최근에 회사에서 머신러닝 워크플로 관리를 위해 툴들을 리서치 해보고 있습니다. 그 중에서 가장 잘 알려지기도 한 kubeflow를 소개하고 간단하게 GCP에 deploy하는 것을 해보려고 합니다.

사실 간단한 서비스라면 AWS의 Sage Maker나 GCP의 AI Platform의 기능들을 활용해도 충분한 것 같습니다.

1. Kubeflow 란?

kubeflowkubernetes 에서 ML 워크플로(데이터 전처리, 모델 학습, 예측 서비스 및 서비스 관리)를 구축하기 위한 툴킷입니다.

Kubeflow에서 제공하는 메인 기능들은 다음과 같습니다.

  • Jupyter Notebooks: Using Jupyter notebooks in Kubeflow

  • Hyperparameter Tuning: Hyperparameter tuning of ML models in Kubeflow

  • Pipelines: ML Pipelines in Kubeflow

  • Serving: Serving of ML models in Kubeflow

  • Training: Training of ML models in Kubeflow

2. Deploy Kubeflow on GCP

Kubeflow document에서 Kubeflow on GCP - Deploying Kubeflow 라는 메뉴에 보면 GCP에서 kubeflow를 설치하는 방법을 step별로 잘 설명해 둔 문서가 있습니다.

설치 방법은 CLI를 이용하는 방법과 kubeflow 에서 제공하는 웹 UI를 이용하는 방법이 있는데, 저는 빠르게 kubeflow를 세팅해서 써보고 싶은게 목적이라 훨씬 간편하게 할 수 있는 후자의 방법을 선택했습니다.

웹 UI를 이용해서 Kubeflow 세팅하기

웹 UI는 https://deploy.kubeflow.cloud/#/deploy 링크로 들어가면 보실 수 있습니다.

위와 같이 Project id, deployment name, login 방식, GKE zone 등의 설정만 선택하면 간단히 Kubernetes 위에서 돌아가는 kubeflow를 구성하실 수 있습니다. (세상 편함…)

로그인 방식은 차후 kubeflow endpoint에 접근하기 위한 로그인 방식입니다.

  • Login with GCP Iap: Oauth client를 생성하고, 구글 계정으로 로그인
  • Login with Username and Password: 로그인할 사용자 계정과 password를 입력해서 해당 계정으로 로그인

저는 GCP IAP 방식으로 설정했습니다. 이것도 https://www.kubeflow.org/docs/gke/deploy/oauth-setup/ 를 보시면 쉽게 따라서 설정하실 수 있습니다.

위와 같이 적절히 원하는 설정값을 입력하고 Create Deployment 버튼을 누르면, 아래에 진행상황 창이 뜨면서 클러스터를 구성하기 시작합니다.

클러스터 세팅까지는 10분정도, kubeflow UI에 접속가능한 endpoint가 구성되기까지는 20분정도 소요됩니다.

아래 진행상황 창에서 다음과 같이 완료 시점도 알려줍니다.

your kubeflow service url should be ready within 20 minutes (by 오후 7:47:29): https://kubeflow-test-1.endpoints.your-project-id.cloud.goog

GCP - Kubernetes Engine에서 클러스터 확인

구성된 클러스터는 GCP 콘솔의 kubernetes Engine 메뉴에서 확인할 수 있습니다.

클러스터의 노드 풀을 확인해보면 다음과 같은 스펙으로 클러스터가 구성되어 있습니다.

n1-standard-8 머신 2개를 사용하고 있고 디스크는 노드 당 100GB로 설정되어 있습니다.

(가격표는 아래 참고)

클러스터 설정할 때 가까운 곳이 asia-east1 밖에 없어서 여기로 설정했는데, 타이완이었네요.

서비스 및 수신 메뉴에서는 띄워진 서비스들을 확인할 수 있습니다.

envoy-ingress 옆에 나와있는 엔드포인트로 kubeflow UI에 접속가능합니다.

참고로 endpoint url 형태는 https://<cluster-name>.endpoints.<gcp-product-id>.cloud.goog/ 입니다.

3. Kubeflow UI

위 엔드포인트 주소로 접속해서 클러스터를 구성할 때 설정한 로그인 방식으로 로그인하면 다음과 같은 화면을 보실 수 있습니다.

왼쪽 메뉴는 kubeflow의 document와 제공하고 있는 기능들에 대한 대시보드들입니다.

  • Notebooks
  • TFJob Dashboard
  • Katib Dashboard
  • Pipeline Dashboard

맺음말

이렇게 30분만에 간단히 kubeflow를 띄워봤습니다. (만세 > <!)

여담이지만, 회사에서는 AWS를 주로 활용하고 있긴한데 공부할 때나 혼자 toy project를 할 때는 주로 GCP를 활용하게 되는 것 같습니다.

인프라 쪽 지식이 별로 없는 제가 볼 때 커스텀한 설정없이 기본 설정으로 특정 서비스를 써보는 것은 AWS에 비해 GCP가 문서화가 잘 되어있고 단계 별로 스크린샷도 잘 제공하고 있어서 더 접근성이 높다고 느껴지는 것 같습니다. :)

다음 글에서는 kubeflow의 각 기능들에 대해서 알아보고 간단한 예제 데이터를 활용해서 전체 워크플로를 한번 돌아보는 걸 해보려고 합니다.