본문 바로가기

ML & AI/kubeflow

MiniKF - Tutorial 따라하기_Taxi Cab #1

Kubeflow의 On-premise 버전인 MiniKF의 Hands-on 튜토리얼을 따라 실습해 보았다. 실제 Kubeflow 를 활용하려면,  Kubernetes Cluster를 구성하거나, Public Cloud Vendor에서 제공하는 AKS, GKE, EKS 에 Kubeflow를 설치해야한다. 

Arrikto MiniKF는 Vagrant와 VirtualBox 기반으로 설치가 매우 간편하기 때문에 Kubeflow의 기능을 학습하는데 용의하기 때문에 튜토리얼의 내용을 따라 직접 실습해 보면서 Kubeflow의 기본 기능과 활용 방법을 기록해 본다

1. MiniKF 설치하기

Arrikto가 제공하는 MiniKF 설치는 매우 간단하다. (MiniKF 설치 참고하여 설치)

 

[실습환경]

  • Windows10 x64, intel i5, 16GB memory
  • Host : VirtualBox 6.1
  • Guest : Ubuntu 16.04
2. MiniKF 실행하기

MiniKF 설치 후 브라우저에서 https://10.10.10.10 로 접속하면 아래 Kubeflow Dashboard에 접근할 수 있다.

Kubeflow Dashboard

하단의 "Conected to Kubeflow" 버튼을 클릭하면, Kubeflow 로그인 화면이 나타나며, Credential 정보를 입력하여 로그인할 수 있다.

Notebook Server를 생성해보자.

 

3. Notebook Server 생성하기

Kubeflow Dashboard 좌측 메뉴에서 "Notebook Server"를 클릭한 후 "Create New Server"를 하면 새로 만들고자하는 Notebook을 설정할 수 있는 화면이 나타난다. 튜토리얼에 있는 이미지 대신 gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop 이미지를 사용하여 Notebook을 만들었다.

 

 

Notebook 설정화면 하단에 "Data Volumes"에서 "ADD VOLUME" 버튼을 클릭하여 다음과 같이 데이터 저장소를 생성한다. 튜토리얼 대로 Volume Name은 "data"로 지정한다.

 

 

"LAUNCH" 버튼을 클릭하고, Notebook 서버가 생성될때 까지 기다린다. 10분 정도 기다리니 Notebook 이 생성되었고, 터미널 등을 통해 명령어 수행이 가능하였다.

 

Notebook 접속

4. Taxi Cab 튜토리얼 따라하기

JupyterLab의 "Terminal"을 실행하고, 튜토리얼 실습을 위해 제공되는 Notebook 스크립트를 가져온다.

 

wget
https://raw.githubusercontent.com/arrikto/kubeflow-examples/kubecon-demo/taxi-cab-on-prem/taxi-cab-pipeline-snap.ipynb

 

다운로드한 Notebook 파일을 더블-클릭하면 아래와 같이 6개의 명령어가 작성되어 있다. 순서대로 각 Cell의 명령을 실행한다. 각 Cell의 명령을 실행하기 위해서는 해당 Cell을 선택하고 "Crtl + Enter"를 입력하면 된다.

 

  • Taxi Cab 예제를 실행하기 위한 Pipeline 코드를 다운로드
# Download the pipeline source
!wget https://github.com/arrikto/kubeflow-examples/raw/kubecon-demo/taxi-cab-on-prem/taxi-cab-pipeline-snap.py
  • Kubeflow Pipeline 소스 컴파일 또는 실행을 위한 소스, 컴포넌트 및 데이터 등 리소스 다운로드
# Bring in the data
!git clone -b 0.1.25 https://github.com/kubeflow/pipelines

 

  • 다운로드한 Pipeline 리소스 내 Taxi Cab 예제 데이터(taxi-cab-classfication)를 Notebook 서버의 PVC(Data Volume)로 이동 (주의: Notebook 생성 시 설정한 Data Volume 이름을 확인하여 실행해야함. 여기서는 data 라는 이름으로 설정하였음)
# Move the data into our data volume
!cp -av pipelines/samples/tfx/taxi-cab-classification ~/data/

 

  • 로컬 경로(/data)에 학습용 데이터(train.csv) 존재 유무 확인
# Verify data existence
!find ~/data && ls -la ~/data/taxi-cab-classification/train.csv

 

  • taxi-cab-pipeline-snap.py 소스를 컴파일하고, 배포하기 위한 압축 파일 생성
  • taxi-cab-pipeline.tar.gz 파일 안에는 Pipeline Workflow를 YAML(DSL)로 정의한 "pipeline.yaml" 파일이 들어있음.
# Compile the pipeline
!dsl-compile --py taxi-cab-pipeline-snap.py \ --output taxi-cab-pipeline.tar.gz

 

  • 압축한 taxi-cab-pipeline.tar.gz 파일에 "pipeline.yaml" 파일이 존재하는지 체크
# Verify output
!tar tzvf taxi-cab-pipeline.tar.gz

튜토리얼의 첫 부분을 따라하다보니 Kubeflow Pipeline에 대하여 조금 더 상세히 파악할 필요가 있어 보인다.

Taxi Cab 예제에서 제공하는 Pipeline을 분석해 보아야겠다.