[Boostcamp AI Tech] 8주차

류지수·2022년 11월 13일
0

Boostcamp AI Tech

목록 보기
7/12
post-thumbnail

MLOps란?

MLOps = ML(Machine Learning) + Ops(operations)

  • 머신러닝 모델을 운영하면서 반복적으로 필요한 업무를 자동화시키는 과정
  • 머신러닝 엔지니어링 + 데이터 엔지니어링 + 클라우드 + 인프라

-> 머신러닝 모델 개발(ML Dev)과 머신러닝 모델 운영(Ops)에서 사용되는 문제, 반복을 최소화하고 비즈니스 가치를 창출하는 것이 목표

  • 최근에는 비즈니스 문제에 ML/DL을 적용하는 Case가 많아졌기 때문에 Production 환경에 배포하는 과정엔 Research의 모델이 재현 가능해야하고 현실 Risk를 잘 버틸 수 있어야함.

-> MLOps의 목표는 빠른 시간 내에 가장 적은 위험을 부담하여 아이디어 단계부터 Production 단계까지 ML 프로젝트를 진행할 수 있도록 기술적 마찰을 줄이는 것

Serving Basic

Serving

  • Production(Real World) 환경에 모델을 사용할 수 있도록 배포
  • 머신러닝 모델을 개발하고, 현실 세계(앱, 웹)에서 사용할 수 있게 만드는 행위
  • Input이 제공되면 모델이 예측 값(Output)을 반환

2가지 방식 존재

  • Online Serving
  • Batch Serving

Online Serving

API(Application Programming Interface) : 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
ex) 라이브러리의 함수 : Pandas, Tensorflow, Pytorch
특정 서비스에서 해당 기능을 사용할 수 있도록 외부에 노출 : 기상청 API, 지도 API

Online Serving

  • 요청(Request)이 올 때마다 실시간으로 예측
  • 클라이언트(application)에서 ML모델 서버에 HTTP 요청(Request)하고
  • 머신러닝 모델 서버에서 예측한 후, 예측 값(응답)을 반환(Response)

Online Serving에서 고려할 부분

실시간 예측을 하기 때문에 예측할 때 지연 시간(Latency)를 최소화해야 함
Latency : 하나의 예측을 요청하고 반환값을 받는데까지 걸리는 시간
(짧을 수록 좋고, Latency가 길다는 것은 Loading이 긴 것과 유사한 상황)
ex) 배달 음식 앱에서 음식 추천을 받기 위해 1분을 기다릴 수 있을까?

  1. Input 데이터를 기반으로 DB에 있는 데이터를 추출해서 모델을 예측해야 하는 경우
    데이터를 추출하기 위해 쿼리를 실행하고, 결과를 받는 시간이 소요
  2. 모델이 수행하는 연산
    RNN, LSTM 등은 회귀 분석보다 많은 연산을 요구하고, 더 오래 걸리기 때문에 이를 위해 모델을 경량화하는 작업이 필요할 수 있으며, 복잡한 모델보다 간단한 모델을 사용하는 경우도 존재
  3. 결과 값에 대한 보정이 필요한 경우
    머신러닝 알고리즘에서 유효하지 않은 예측값이 반환될 수 있기 때무에 결과를 보정하는 코드가 필요할 수 있음
    ex) 집 값을 예측하는데, 0 이하의 마이너스 값이 나올 수 있음 -> 0으로 표시하는 후처리를 해줌

Batch Serving

주기적으로 학습을 하거나 예측을 하는 경우'

  • 30분에 1번씩 최근 데이터를 가지고 예측

  • Batch 묶음(30분의 데이터)를 한번에 예측

  • 모델의 활용 방식에 따라 30분일 수도 있고, 1주일, 하루 단위일 수 있음

  • 한번에 많은 예측을 실행

  • Batch Serving 관련한 라이브러리가 따로 존재하지 않기 때문에 함수 단위를 주기적으로 실행함.
    (Airflow, Cron job 등으로 스케쥴링 작업(Workflow Scheduler)

ex) 스포티파이의 예측 알고리즘 - Discover Weekly

Batch Serving 단점

  • 실시간으로 활용할 수 없음
  • Cold start 문제 발생 :오늘 새로 생긴 컨텐츠는 추천할 수 없음

Online Serving vs Batch Serving

Input 관점에서 선택

  • 데이터를 하나씩 요청하는 경우 : Onlie
  • 여러가지 데이터가 한꺼번에 처리되는 경우 : Batch

Ouput 관점

  • API 형태로 바로 결과를 반환해야 하는 경우 : Online
  • 서버와 통신이 필요한 경우 : Online
  • 1시간에 1번씩 예측해도 괜찮은 경우 : Batch

Volia

모델을 개발한 후, 사람들과 테스트할 수 있는 프로토타입을 먼저 만들어보고 이 모델이 어떤 결과를 반환하는가?를 테스트할 수 있음
but, 웹 서비스를 만드는 것은 시간이 많이 소요됨
ipywidget과 같이 사용할 경우 대시보드를 구축할 수 있음

-> 이때 활용할 수 있는 도구 Volia

Volia 장점

  1. Jupyter Notebook 결과를 쉽게 웹 형태로 띄울 수 있음
  2. Ipywidget, Ipyleaflet 등 사용가능
  3. 노트북에서 바로 대시보드로 변환 가능
  4. PYthon, Julia, C++ 코드 지원
  5. 고유한 템플릿 생성 가능
  6. 너무 쉬운 러닝커브

Streamlit

웹 서비스를 다른 조직의 도움 없이 빠르게 웹 서비스를 만들 수 있는 방법이 무엇일까?
=> Streamlit

Streamlit 장점

  • 파이썬 스크립트 코드를 조금만 수정하면 웹을 띄울 수 있음
  • 백엔드 개발이나 HTTP 요청을 구현하지 않아도 됨
  • 다양한 Component 제공해 대시보드 UI 구성할 수 있음
  • 화면 녹화 기능 존재

Python 프로토타입 도구 비교

회고

논문 리뷰를 처음으로 해보았다. NGCF를 했는데 강의에서 배웠던 것임에도 불구하고 다시보니 또 새루웠고, 알고 있다고 생각했던 것을 남에게 설명하려니 또 새로웠다. 많이 반복해서 익숙해질 수 없겠다는 결론을 내렸고, 강의든 강의자료든 다시 봐야겠다고 다짐했다.
Streamlit으로 저번대회에 만들었던 모델을 연결시키는 거였는데, 버전 에러를 많이 겪었다. 변성윤 마스터님 말씀으로 과제를 내줄때 버전 에러가 안나게 내주는 것보다 버전 에러가 많이 나게끔? 내주는 과제가 더 좋다는 것을 깨달았다고 말씀해주셨다. 처음 이 소리를 들었을 때 무슨소리지 했는데 겪어보니 정말 7할이 버전 문제를 해결하는데 시간을 쏟았다고 할 정도로 버전 에러를 많이 겪고 고치는데에 많은 경험을 할 수 있었다. 이를 통해서 가상환경을 몇번이나 만들었다 지웠고, 파이썬 버전도 다운그레이드 해보았고, 모든 버전을 서로 맞도록 설치해주었다. 비록 streamlit 과제는 마음에 들게 제출하지 못했지만, 다시 시도해봐야할 과제로 남았다.

해야할 일

  • 선대 스터디 공부
  • Lv2 팀원들 만나기 (다음주 월요일부터 Lv2 시작)
profile
AI Engineer가 될테야

0개의 댓글