이전 글에서는 console, 그리고 오픈소스 CML을 활용하여 모델 metric을 markdown으로 report 형태로 떨구어주는 것을 다루었습니다. 하지만 이부분의 단점으로는 각 commit마다 report가 달리는데 이를 비교하는 것에 대해서는 부족함을 느낄 수 있습니다. DVC를 이용해서 같은 공간에서 비교 및 tracking이 되는지 확인해보고자 합니다. 이번에는 다른 데이터를 바탕으로 Tracking하는 내용을 다루어보도록 하겠습니다.(데이터는 그렇게 중요한 부분은 아닙니다.) 이 Github을 Fork를 수행합니다. 먼저 간단한 처리를 위해 fork 이후에 저장되어있는 process_data.py를 실행하면 전처리된 데이터가 떨어집니다. 이제 train.py 를 수행합니다. (만약에 "##..
간단한 ML 모델을 수행하고 Metric을 뽑는 python 코드를 Github Actions을 활용해 성능지표를 출력하고 CML을 이용해 Report 형태로 출력하는 내용을 한번 다루어보고자 합니다. 우선 github-actions-cml 새 repo를 준비해둡니다. 여기에서 fork를 수행하셔도 되고 zip 파일을 다운로드를 하여 압축을 풉니다. 그다음 아래 코드를 터미널에서 수행합니다. 자신의 Github Repo에 Push 해도 됩니다. # 실습 Repo 데이터 다운로드 # 로컬에 새 폴더 생성 git init git remote add origin git pull origin main git checkout -b main git config --global user.email git config..
이전 글에서 CI 관련된 내용을 알려드렸습니다. Docker Image를 Build 하고, 생성한 Image를 Docker Hub에 Push 하는 내용을 다루겠습니다. 그전에 Dockerhub에 먼저 가입을 따로 하셔서 계정을 생성을 해두시길 바랍니다. Push를 하기 위한 Workflow를 설명하면 다음과 같습니다. 작성한 App을 빌드한다 Docker 이미지로 생성한다 Docker Repository로 추가한다 우선 app을 빌드하는 내용부터 시작하겠습니다. Dockerfile 예제는 여기에서 들고 옵니다. app.py라고 만듭니다. from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello..
이번 글에서는 Github Actions를 활용하여 Docker Image를 Build 하는 내용을 다루겠습니다. 본인 계정의 Github을 이용하면 되겠습니다. 우선 아래처럼 github new repository를 만듭니다. actions Tab을 가보면 수많은 Workflow들이 있습니다. 매우 다양한 툴들을 통합하기 쉽게 되어 있습니다. Python Application을 활용하겠습니다. 검색을 하시면 됩니다. Configure를 누르면, workflows 하위 폴더에 yml 파일이 생성됩니다. 코드 내용을 아래에 첨부하겠습니다. 코드를 붙이지 말고 한번 보기만 하겠습니다. # This workflow will install Python dependencies, run tests and lint ..
이번 글은 github을 예를 들어서 Workflow에 대한 개념을 알아보고자 합니다. 1. Github Actions Github Actions는 일반적으로 CI/CD 툴로 인식이 되어있지만 엄밀히 말하자면 개발자들의 Workflow를 자동화하기 위한 플랫폼으로 부를 수 있습니다. 내 코드를 build, deploy 하는 것을 자동화해줍니다. 오픈 소스 프로젝트들을 위한 플랫폼인 Github을 예로 들어 설명을 해보겠습니다. 아래는 pytorch github입니다. 공식적으로 프로젝트를 사용하고 기여하는 것이 가능합니다. 2. Workflow 내용, 정의 계속해서 Github를 예로 들겠습니다. Github Flow는 아래와 같습니다. Master Branch에서 개선사항 들이 생겨, Commit들이 ..
Feast 관련 글은 이 글로 정리하며 끝내려고 합니다. 1. Feast가 없는 경우(As-Is) 보통 아래 그림과 같이 각 단계에서 각각 처리되거나 가공이 되는 Feature들이 바로 모델에 소비되는 시스템입니다. 즉, 어떤 Feature들에 대해 '저장'이라는 개념이 없이 데이터가 실시간으로 들어오면 처리와 변형을 통해 Feature들을 생성하며 모델 훈련과 제공이 하나의 Pipeline에서 이루어지는 end-to-end system입니다. 2. Feast를 적용한 경우(To-Be) Feature를 생성하는 부분, 모델을 훈련하는 부분, 모델을 제공하는 부분 총 3가지 영역에 대해서 생각할 수 있습니다. 모델을 훈련하는 부분에서는 Feast에서 Feature들이 소비되고 끝나는 것이 아니라, 저장이 ..
이번 글은 Feast Server를 생성하는데, CLI 환경위에서 진행합니다. 1. Local에서 Feast Server 실행하기 feast를 설치하고, init 후 새 dir을 만들어서 apply를 수행합니다. pip install feast feast init feature_repo cd feature_repo feast apply 마찬가지로 materialize-incremental을 수행합니다. 동작방식의 뜻은 마지막으로 materialize를 시작한 시점부터 최근까지 feature를 online store에 적재한다는 뜻이라고 저번 글에 이야길 했습니다. feast materialize-incremental $(date +%Y-%m-%d) feast serve 그럼 아마 아래와 같은 에러가 나타..
이번 글에서는 Store로 부터 훈련데이터를 추출해보고, Online store를 구축하여 데이터를 적재하고 추론을 위한 Feature Vectore를 가져오는 것을 다루겠습니다. 1. Store로 부터 Train data 추출해보기 보통 추출이라고 하면, 어떤 데이터를 어떠한 기준으로 추출할까? 로 부터 출발합니다. 그 기준점은 보통 key인데, Feature store에서는 그 부분이 entity에 해당됩니다. 코드에서 entity를 보면 판다스 데이터프레임으로 만들어서 추후에 feature store에 밀어 넣습니다. from datetime import datetime, timedelta import pandas as pd from feast import FeatureStore # The enti..
이번 글은 Feast Feature Store를 생성해, 각 Feature들을 정의해 Stoer에 배포하는 것까지 진행해보겠습니다. 1. 준비작업 Feature store 작업 경로를 설정하여 이동부터 하겠습니다. mkdir -p mlops/feature_store && cd mlops/feature_store 그 후, Jupyter Lab Docker Container 실행하겠습니다. 그 후 localhost:8888에 접속하여 'password'를 입력하여 접속합니다. 컨테이너 다운로드한 후 docker ps -a를 실행해 한번 더 확인해줍니다. 도커 명령어에서 $PWD 부분은 주피터 폴더와 마운트 된 경로입니다. 따라서 /jupyter 폴더 가서 새 노트북 만들어서 수행하면 됩니다. jupyter ..
1. 공식 Documents 큰 사상은 아래 그림과 같습니다. Feast(Feature Store)는 ML 기능을 관리하고 Product 중인 모델에 제공하기 위한 운영 데이터 시스템입니다. Feast는 지연 시간이 짧은 online store(Realtime 예측을 위해) 또는 offline store(for scale-out batch scoring or model training)의 모델에 Feature를 제공하는 오픈소스입니다. 하단에 아직 어떤 문제를 못 풀고 있는지에 대해 problems feast Solves에 서술하고 있습니다. 작성일 기준 0.18 버전에서의 로드맵은 아래와 같이 있으며, 통상적으로 제품 개발할 때의 매뉴얼처럼 document에 기능이 제공이 되는 부분과 아닌 부분을 체크..