구글 클라우드 인사이트 Kubeflow 시작하기 구글 인사이트 by Miyeon. Jo 2021년 05월 24일 2021년 05월 24일 473 목차Kubeflow 개요개념적 개요Kubeflow 구성 제품GCP에서 Kubeflow를 통한 예시1. 개요Kubeflow는 Kubernetes + ML flow를 합한 의미로, 파이프라인이라는 ML워크플로를 구축하고 배포하기 위해 제공되는 플랫폼입니다. 개발, 테스트 및 프로덕션 수준 서비스를 위해 다양한 환경에 ML 시스템을 배포하려는 ML 엔지니어 및 운영 팀을 위한 것입니다.1.1 파이프라인 구성 요소 이해AI HUB의 파이프라인 워크플로우는 데이터 사전 처리, 데이터 변환, 모델 학습 등과 같은 단계로 구성되어 있습니다. 워크플로우의 구성요소는 입력 매개 변수 세트, 출력 세트 및 컨테이너 이미지의 위치로 구성되어 있습니다. 구성요소의 컨테이너 이미지는 구성 요소의 실행 코드와 코드가 실행되는 환경의 정의를 포함하는 패키지로 이루어져있습니다.2. 개념적 개요Kubeflow는 쿠버네티스에서 머신 러닝 워크 플로를 실행하기 위해서 만들어졌습니다. 일반적으로 다음과 같은 이유로 사용할 수 있습니다.이미 쿠버네티스 기반의 인프라가 있거나, 새로운 머신 러닝 플랫폼을 만들려는 경우다양한 환경(예 : 로컬, 온 프레미스 및 클라우드)에서 머신 러닝 모델을 학습하거나 서비스하려는 경우자원(예 : CPU 또는 GPU)를 할당하여 작업을 하려는 경우Jupyter 노트북을 사용하여 머신 러닝 작업을 하려는 경우Kubeflow에는 Jupyter 노트북 생성 및 관리를 위한 서비스를 이용할 때Kubeflow Pipelines는 Docker 컨테이너를 기반으로하는 다단계 ML 워크 플로를 구축, 배포 및 관리할 때Kubeflow는 여러 플랫폼에서 ML 학습, 초 매개 변수 조정, 워크로드를 자동으로 작업하려는 경우더 자세한 내용은 아래의 링크를 참고해주시길 바랍니다.Kubeflow Overview3. Kubeflow 주요 제품Kubeflow’s UI – Central DashboardJupyter NotebooksMetadataFrameworks for TrainingHyperparameter Tuning : KatibPipelinesTools for Serving3.1 Kubeflow’s UIKubeflow의 UI 화면으로서, Kubeflow의 구성 요소를 쉽게 접근할 수 있는 대시보드가 포함되어 있습니다. 특정 작업에 대한 바로 가기, 최근 노트북 목록 및 파이프 라인 목록을 한 번에 볼 수 있습니다. 또한, 파이프라인, 노트북, Katib 등 클러스터에서 실행중인 컴포넌트 목록을 볼 수 있습니다.3.2 메타데이터Kubeflow에서 실행하는 머신 러닝 워크 플로우의 메타 데이터를 추적 및 관리하는데 사용합니다. 메타데이터 컴포넌트는 Kubeflow 사용자가 머신 러닝 워크 플로에서 생성하는 메타 데이터를 추적하고 관리함으로써, 머신 러닝 워크 플로를 이해하고 관리 할 수 ​​있도록 도와 줍니다.3.3 Hyperparameter Tuning : KatibKubeflow에서 머신 러닝 모델의 하이퍼 파라미터 튜닝을 할 수 있도록 도와줍니다. Katib는 머신 러닝 모델의 하이퍼 파라미터 및 뉴럴 아키텍처(Neural Architecture)를 자동으로 튜닝할 수 있는 기능을 제공합니다. Katib는 TensorFlow, PyTorch, Apache MXNet, XGBoost 등 다양한 머신 러닝 프레임 워크를 지원합니다.3.4 PipelinesKubeflow 파이프라인은 컨테이너를 기반으로 확장 가능한 ent-to end 머신 러닝 워크 플로를 구축하기 위한 플랫폼입니다. 머신 러닝 파이프라인을 관리하는 기능을 제공하여 ent-to end 오케스트레이션을 지원합니다. 그리고 수 많은 아이디어와 기술을 시도할 수 있도록 시험(trials)과 실험(experiments)을 관리할 수 있는 기능도 제공합니다.4. GCP에서 Kubeflow를 통한 예시4.1 python을 통한 Kubeflow Pipelines 배포1. Navigation Meun → AI Platform → Pipelines 로 이동2. New Instance 클릭 → Configure 클릭3. Access to the following Cloud APIs 허용 → Create cluster 클릭(2~3분 소요) → GCP Marketplace 서비스 약관에 동의 → 배포(10분 정도 소요)4. Navigation Menu → AI Platform → Notebook → New Instance → Tensorflow Enterprise 2.x _ without GPU (default 셋팅)5. 필수요소 값 가져오기RPOJECT ID5-1) 참고Gcloud Storage name 가져오기5-2) 참고kfp.Client – host url5-3) 참고5-1) PROJECT ID 값 가져오기5-2) Gcloud Storage 이름 가져오기(gshell을 이용)export PROJECT=$(gcloud config list project --format "value(core.project)") echo "Your current GCP Project Name is: "$PROJECT export REGION=us-central1 gsutil mb -l ${REGION} gs://${PROJECT} gsutil ls 5-3) kfp.Client – host url 값 가져오기piplelines 중에 배포할 모델의 SETTINGS 클릭 → 박스 안에 있는 kfp.Client(host=’https://**********************’) 값 중 ‘____’ 값 가져오기6. NOTEBOOKS에서 OPEN JUPYTERLAB 클릭 → Terminal 클릭 → 터미널 창에 아래 코드 입력 후, 데이터 다운로드 확인git clone https://github.com/kubeflow/pipelines.git cd pipelines git checkout d87c3be6114af867760d07f1d70f4d95d4456c52 7. root/pipelines/samples/core/ai_platform/ai_platform.ipynb 열기 → 위에서 구한 필수요소 값 입력Project ID / Storage Location 입력kfp.client 값은 아래와 같이 변경8. 코드 전체 실행 → 배포된 모델 및 결과 확인배포가 제대로 완료되면 아래와 같은 그림으로 kubeflow pipeline이 작성됨배포가 완료되면 아래와 같이 cloud storage에 csv파일로 결과값이 저장됨4.2 Run of [Demo] XGBoost – Iterative model training1. AI Platform → 파이프라인 → 새 인스턴스 생성 → 파이프라인 대시보드 열기2. Central Dashboard에서 pipelines 클릭 → [Demo] XGBoost – Iterative model training 클릭3. 우측 상단에 있는 Create experiment 클릭 → Experiment Name 칸에 실험 이름 입력(ex : test01-2021-04-29) → 옵션들은 default로 두고 start 클릭4. Runs 선택 후, Run name 중 돌렸던 모델을 클릭 → 상자 우측 상단에 초록색 체크 표시가 있으면, 성공적으로 돌아갔음을 확인할 수 있음5. 각 단계별 input / output를 박스 클릭하여 확인할 수 있음. (여기서는 log, table, mse, r , squared r 값 등을 확인할 수 있음) 출처 및 참고사이트Kubeflow docskubeflow를 이용한 예제https://www.kubeflow.org/docs/distributions/gke/https://cloud.google.com/ai-platform/pipelines/docs/connecting-with-sdk?hl=ko&_ga=2.209744988.-877239896.1615783265&_gac=1.114355701.1616481048.CjwKCAjwgOGCBhAlEiwA7FUXkqT7onKpS8QLYdfNHPDllgIgmoGdnEXju60eyO4m8RJZoXldMY6eHBoCK_cQAvD_BwEhttps://cloud.google.com/ai-hub/docs/kubeflow-pipeline?_ga=2.220756817.-877239896.1615783265&_gac=1.195774302.1616481048.CjwKCAjwgOGCBhAlEiwA7FUXkqT7onKpS8QLYdfNHPDllgIgmoGdnEXju60eyO4m8RJZoXldMY6eHBoCK_cQAvD_BwE