feature store에 대한 개념과 필요성을 중점적으로 서술합니다. AS-IS > To-Be로 이어지는 느낌의 글이라고 생각하면 됩니다. 1. 구성 모습 & 정의 Feature Store는 활용 모습에 따라 다양한 구성 요소를 가질 수 있습니다. 실시간성 스트리밍 데이터나 특정 주기마다 데이터를 모아서 한번에 적재를 한 배치 데이터를 Input으로 받아, 모니터링, 데이터 변형, 레지스트리 등의 역할을 하는 것이 Feature Store입니다. 과거에는 스크립트를 기준으로 백엔드에서 수행하거나 Feature pipeline을 만들고 공유하고 같은일을 반복 수행하였지만 이제 Data Scientist들은 이를 바탕으로 Feature에 대해 검색, 탐색, 정의, 벡터 생성등을 수행합니다. 이처럼 Feat..
보통 Feature는 많이 ML을 하면서 많이 듣게 되지만, Feature Store라는 단어는 생소합니다. 하지만 해외에서 이미 Product 된 것들을 살펴보면 Feature들을 표준화하면서 잘 관리를 하여 성공한 사례들이 있다고 합니다. 이번 글은 우선 우리가 아는 Feature들과 Engineering, Pipeline에 대한 글을 작성하고자 합니다. 1. Feature의 정의 Feature는 주 목표로 하는 현상에 대해 개별적으로 측정이 가능한 속성 또는 특징 같은 것을 말합니다. ML model의 input 값입니다. 요약하면 아래 그림과 같습니다. 아래 그림처럼 네비게이션을 예시로 들겠습니다. 보통 최적 경로나 최소 시간 경로 관점에서 길을 알려줍니다. 하지만 운전자 정보, 지도 데이터, 주..
1. Katib Experiment - random search Katib Experiment 리소스 yaml 예제를 보면서 각 필드가 어떤 의미를 가지는지 이해를 해보겠습니다. " random-example.yaml " 로 작성하였습니다. spec 윗부분은 meta 정보인데, 이전 글에서부터 쭈욱 사용하였던 experiment에서 name은 demo, namespace는 kubeflow-user-example-com입니다. 중요한 부분은 spec 부분부터 입니다. 필드별로 하나씩 보면서 주석을 중점적으로 살펴보시면 됩니다. apiVersion: "kubeflow.org/v1beta1" kind: Experiment metadata: namespace: kubeflow-user-example-com # ..
1. Katib 개념 kubeflow 구성 요소 중 AutoML 프로젝트를 담당합니다. 현재 hyperparameter Tuning, Early Stopping, Neural Architecture Search를 지원해줍니다. 아직 Katib는 현재 베타버전에 속하는 편입니다. hpo(hyperparameter optim을 줄여 말하겠습니다)가 필요한 이유는 모델에 많고 많은 hp가 들어가는데, 일일이 어떤 hp가 좋은지 확인하기도 어렵고, Grid Search는 Search Space가 커질수록 찾기가 힘듭니다. 그래서 최대한 시간을 줄이면서 효율적으로 hp를 찾아야합니다. 하지만 또 데이터마다 서치알고리즘이 다 다릅니다. 여기서 쿠버네티스 위에서 ml, dl을 돌리는 것이 좋은 점이 병렬적으로 리소스..
1. Example 3 - Passing Data between Components by File 이전 글에 이어서 예제를 계속 이어나갑니다. 이번에는 첫 번째 컴포넌트에서 file에 data를 쓴 뒤, 두 번째 컴포넌트에서는 해당 file로부터 데이터를 읽어 두 수의 곱을 구하는 pipeline 예제입니다. Component 간에 데이터를 주고받는 방법에는 위의 add_example의 예시처럼 변수를 통해서 넘겨줄 수도 있지만, 데이터의 사이즈가 큰 경우에는 파일에 저장한 뒤, 파일 경로를 전달하는 방식으로 데이터를 넘겨줄 수 있습니다 data_passing_file.py 로 하나 만들겠습니다. 이전 글에서 주의한 것처럼, 주석은 참고만 하고 한글 내용은 전부 제거하고 반영하여야 합니다. import ..
1. 시작하기 전에 개념 잡기 - Pipeline & Component kubeflow를 하기 전에 pipeline과 component에 대한 개념이 제대로 잡혀있어야 합니다. 두 용어에 대한 관계와 정의는 다음과 같습니다. Component : 재사용 가능한 형태로 분리된 하나의 작업 단위, 쿠버네티스 관점에서는 Pod와 매핑이 가능합니다. Pipeline : 여러 Component 들의 연관성, 순서에 따라 연결지은 그래프(DAG), 쿠버네티스 관점에서는 Workflow와 매핑이 가능합니다. - Pipeline kfp sdk 를 사용하여 pipeline을 구현한 뒤, kfp의 dsl compiler 즉, "dsl-compile" 혹은 "kfp.compiler.Compiler().compile()" 명..
ui의 어느위치에 어떤 기능들이 있는지 한번 알아보겠습니다. 저번 글 처럼 minikube를 실행하고, port forwarding하여 .localhost:8080에 접속하겠습니다 kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80 ** 아래와 같이 접속이 나지 않는 경우가 있었는데, kill PID 를 수행하고 나니 정상적으로 kubeflow에 포트포워딩 되는 것을 알았습니다. 참고 : https://blog.serialexperiments.co.uk/posts/kubernetes-port-forward-already-in-use/ 1. 메인페이지 UI 왼쪽 탭은 기능들이 구성되어있습니다.(각각의 Tab들에 대해 설명을 하나씩 설..
1. 개념 Kubenetes 위에서 DS, ML Engineer, 분석가 등 모델 학습, 서빙하는 것이 처음부터는 쉽지가 않습니다. 구글에서 kubeflow라는 프로젝트를 만들었습니다. 이 것은 모듈별로 쪼개져 있는 것이 핵심입니다. 구성요소가 Experiments 페이즈와 Production 페이즈로 나누어져 있습니다. 여기에 한번 그림과 내용을 참고하시는 것을 추천드립니다. 2. Pipeline 쿠버네티스에서 Pipeline이라는 것이 핵심이라고 할 수 있습니다. Pipeline의 정의는 다음과 같습니다. Pipeline의 목표는 다음과 같습니다. Pipeline의 아키텍처는 아래와 같습니다. 3. kustomize란? 이제 kubeflow를 설치할 예정인데 그전에 알아야 할 명령어 중 하나가 kus..
Prerequisites는 k8s환경에서 minikube v1.22.0, helm binary는 helm v3 에서 설치할 예정입니다. 1. install minikube부터 실행합니다. minikube start --driver=docker --cpus='4' --memory='4g' 1) 그 이후 kube-prometheus-stack Helm Repo 추가를 합니다. 이는 Prometheus, Grafana 등을 k8s에 쉽게 설치하고 사용할 수 있도록 패키징 된 Helm 차트입니다. https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack GitHub - prometheus-community/..
1. Opensource - Prometheus 원래 역사는 2012년 SoundCloud에서 만든 모니터링 & 알람 프로그램에서 시작했습니다. 하지만 점점 완전 독립형 오픈소스 Project로 발전하였습니다. 쿠버네티스에 종속적이지 않고, binary 혹은 docker container 형태로도 사용하고 배포 가능합니다. 쿠버네티스 생태계의 오픈소스 중에서는 사실상의 표준격이며 구조가 쿠버네티스와 궁합이 맞고, 다양한 플러그인이 오픈소스로 제공되어 연동성이 좋습니다. (작성일 기준 9일 전에 Releases가 된 것을 알 수 있습니다) https://github.com/prometheus/prometheus GitHub - prometheus/prometheus: The Prometheus monito..