호돌찌의 AI 연구소
728x90
article thumbnail
[패스트캠퍼스 챌린지 20일차] Seldon Core
AI/MLOps 2022. 2. 12. 17:44

우선적으로 appendix, prerequisite 개념으로 쿠버네티스 관련 사전 지식이 필요합니다. 아래 레퍼런스들을 익히고 보는 것이 좋습니다. 익숙하지 않다면 사용 방식에 대해 익히고 넘어가고, 이전 글에서 flask와의 차이 정도만 느끼면 좋을 것 같습니다. 0. Appendix - Custom Resource(CR) : 쿠버네티스에서 default로 관리하지는 않지만, 배포된 Custom Controller에 의해 쿠버네티스에서 관리되고 있는 리소스들이라고 할 수 있습니다. https://kubernetes.io/ko/docs/concepts/extend-kubernetes/api-extension/custom-resources/ 커스텀 리소스 커스텀 리소스 는 쿠버네티스 API의 익스텐션이다...

article thumbnail
[패스트캠퍼스 챌린지 19일차] Flask
AI/MLOps 2022. 2. 11. 20:33

1. Flask 정의 The python micro framework for building web applications - https://github.com/pallets/flask Micro Service Architecture(MSA)를 위한 Web App Framework입니다. 웹 앱 프레임워크는 말 그대로 웹 서비스 개발을 위한 프레임워크라고 생각하면 됩니다. Django 등 다른 framework에 비해 가볍고 확장성, 유연성이 뛰어난 프레임워크가 Flask입니다. 여기서는 간단한 기능을 가볍게 구현하기에 적합하기 때문에 대부분의 ML Model의 첫 배포 Step으로 Flask를 애용합니다. 2. Flask Install python 3.6이상, pip3가 갖춰진 가상환경에서 수행하였습니..

article thumbnail
[패스트캠퍼스 챌린지 18일차] Model Serving 개념
AI/MLOps 2022. 2. 10. 19:05

AI를 도입하는 회사는 문제 정의부터 모델 학습까지는 무탈하게 진행할 수 있지만, 돈을 벌기 위한 서비스화하는 부분에서 큰 장벽에 부딪히게 됩니다. 여기에 대해서 논의를 해보겠습니다. 1. ML Model 서비스화 = Model Serving "서비스화"는 serving, deployment 등과 같은 의미로 생각하면 됩니다. 사용자가 코드를 직접 보거나 돌려보는 것이 아닌, 사용자가 특정 방식으로 인풋 데이터를 전달해주면 서버에서 Inference를 수행해 Input data의 결과를 "어떠한 방식"으로 전달해주는 것 입니다. 2. 서비스 제공 방식 "어떠한 방식"으로 전달하느냐에 대한 것은 무궁무진한 형태를 뜻합니다. 예시를 적어보면 아래와 같습니다. - 챗봇과의 대화 - HTTP API Reques..

article thumbnail
[패스트캠퍼스 챌린지 17일차] MLflow 튜토리얼 (2)
AI/MLOps 2022. 2. 9. 18:59

이전 글에서는 모델과 실험 트래킹 기능에 집중을 해보았습니다. mlflow Tutorial 두 번째 글은 mlflow에 조금 더 친숙해지기 위해 logging 관련된 내용, 그리고 다른 예시 내용입니다. 1. 샘플 코드 살펴보기 - Automatic Logging utils.py, pipeline.py를 wget으로 다운을 받습니다. https://github.com/mlflow/mlflow/tree/master/examples/sklearn_autolog GitHub - mlflow/mlflow: Open source platform for the machine learning lifecycle Open source platform for the machine learning lifecycle - Gi..

article thumbnail
[패스트캠퍼스 챌린지 16일차] MLflow 튜토리얼 (1)
AI/MLOps 2022. 2. 8. 19:14

MLflow를 한번 튜토리얼 개념으로 한번 다루어보도록 하겠습니다. 환경은 이전부터 쓰던 python 가상 환경 그대로 사용할 예정입니다. - ubuntu 20.04 - conda - python 3.8.6 - pip3 1. 설치 설치방법은 상당히 간단합니다. mlflow-tutorial이라는 폴더 생성 후 이용하겠습니다. mkdir mlflow-tutorial cd mlflow-tutorial # conda 가상환경 세팅 # python 버전 확인 python -V pip install mlflow==1.20.2 mlflow --version # mlflow, version 1.20.2 2. MLflow tracking server 띄우기 아래 명령어처럼 help를 이용하면 여러 옵션이 있습니다. UI..

article thumbnail
[패스트캠퍼스 챌린지 15일차] Model Management 개념
AI/MLOps 2022. 2. 7. 21:40

Data Management에 대한 개념과 실습을 짚어보았습니다. 이제는 모델입니다. 1. Motivation 보통 분석가들, ML Engineer, DS 분들은 특정 데이터에 대해 어떤 모델을 계속 발전시키면서 prediction 값을 얻는 과정들을 반복합니다. 시계열 데이터를 예를 들면, rawdata에 맞는 가장 좋은 모델을 만들기 위해 rawdata를 여러 전처리 방법을 적용해 바꾸어보고, 모델(선형회귀, rnn, lstm, gru 등)도 바꾸어도 보고, 각각의 모델에 대한 hidden layer 수나 window등을 바꾸어가면서 학습을 해보고, 가장 좋은 성능을 내는 모델을 최종 선택을 합니다. 이러한 cycle을 수십수백 번 반복을 하는데 그 과정에서 코드와 metric만 가지고 있을 수 없습..

article thumbnail
[패스트캠퍼스 챌린지 14일차] DVC Tutorial
AI/MLOps 2022. 2. 6. 17:58

이번 글은 DVC를 한번 해볼 생각입니다. Git이랑 상당히 유사하기 때문에 편하게 이해하실 수 있을 것 같습니다. 환경과 확인 명령어은 다음과 같습니다. - python 3.9.7 (python -V) - git version 2.25.1 (sudo apt install git 후 git --version) - dvc 2.6.4 (pip install dvc[all]==2.6.4 후 dvc --version) [all]은 dvc 의 remote storage로 s3, gs, azure, ssh 모두를 사용할 수 있도록 관련 패키지를 함께 설치하는 옵션입니다. 그럼 시작해보겠습니다. 1. dvc 저장소 세팅 - dv-tutorial이라는 폴더를 생성합니다. 그 후 이동합니다. - 해당 디렉토리를 git ..

article thumbnail
[패스트캠퍼스 챌린지 13일차] DataManagement 개념
AI/MLOps 2022. 2. 5. 20:39

쿠버네티스의 리소스 시리즈가 끝나고 이제부터 MLOps에서 데이터 관리, 모델 관리, 모델 서빙, 모델 모니터링 관련 오픈소스들을 소개하고자 합니다. 간단히 개념을 짚고 그것과 관련된 오픈소스들 소개 및 실습하는 글로 당분간 이어갈 생각입니다. 1. 데이터 관리 필요성 보통 Rawdata를 기점으로 해서 모델링을 하기 까지 많은 버전의 데이터가 생성됩니다. 만약에 시계열 데이터가 Rawdata라고 가정을 해보겠습니다. 일정 시간의 Moving average를 적용하는 경우가 상당히 많습니다. 예를 들면 15분, 30분, 1시간, 4시간, 12시간, 1일, 1주, 1개월 등등에 해당될 것 입니다. 그렇다면 이러한 이동평균 데이터들을 만들어서 실험을 하게 될 것입니다. 여기에 Feature Engineeri..

article thumbnail
[패스트캠퍼스 챌린지 12일차] Service & PVC
AI/MLOps 2022. 2. 4. 19:03

쿠버네티스 리소스 마지막으로 다룰 예정입니다. Service와 PVC인데요. 각각 다루어보겠습니다. 1. Service의 정의 Service는 쿠버네티스에 배포한 application(Pod)를 외부에서 접근하기 쉽게 추상화한 리소스입니다. Pod는 IP를 할당받고 생성되지만, 언제든지 죽었다가 살아날 수 있으며, 그 과정에서 IP는 항상 재할당을 받게 됩니다. 여기서 문제는 고정된 IP로 원하는 Pod에 접근을 할 수 없다는 점입니다. 따라서 클러스터 외부 혹은 내부에서 Pod에 접근할 때, Pod의 IP가 아닌 Service를 통해 접근하는 방식을 거칩니다. Service는 고정된 IP를 가지며, 하나 혹은 여러 개의 Pod와 매칭 하게 되며 클라이언트가 Service의 주소로 접근하면, 실제로는 S..

article thumbnail
[패스트캠퍼스 챌린지 11일차] Deployment
AI/MLOps 2022. 2. 3. 20:56

1. 정의 Deployment는 Pod와 Replicaset(복제본)에 대한 관리를 제공하는 단위로 정의 합니다. 여기서 관리의 의미는 self-healing, scaling(뒤에 소개할 예정), Rollout(무중단 업데이트)와 같은 기능을 포함하며, Pod를 Deployment로 배포함으로써 여러 개로 복제된 Pod와 여러 버전의 Pod를 안전하게 관리를 할 수 있습니다. 2. Deployment 생성하기 YAML을 살펴보면 Pod의 틀과 비슷하지만 조금의 차이점을 볼 수 있습니다.(api version, kind, spec의 replica 등) apiVersion: apps/v1 # kubernetes resource 의 API Version kind: Deployment # kubernetes r..