MLOps = ML(Machine Learning) + Ops(operations)
-> 머신러닝 모델 개발(ML Dev)과 머신러닝 모델 운영(Ops)에서 사용되는 문제, 반복을 최소화하고 비즈니스 가치를 창출하는 것이 목표
-> MLOps의 목표는 빠른 시간 내에 가장 적은 위험을 부담하여 아이디어 단계부터 Production 단계까지 ML 프로젝트를 진행할 수 있도록 기술적 마찰을 줄이는 것
Serving
2가지 방식 존재
API(Application Programming Interface) : 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
ex) 라이브러리의 함수 : Pandas, Tensorflow, Pytorch
특정 서비스에서 해당 기능을 사용할 수 있도록 외부에 노출 : 기상청 API, 지도 API
실시간 예측을 하기 때문에 예측할 때 지연 시간(Latency)를 최소화해야 함
Latency : 하나의 예측을 요청하고 반환값을 받는데까지 걸리는 시간
(짧을 수록 좋고, Latency가 길다는 것은 Loading이 긴 것과 유사한 상황)
ex) 배달 음식 앱에서 음식 추천을 받기 위해 1분을 기다릴 수 있을까?
주기적으로 학습을 하거나 예측을 하는 경우'
30분에 1번씩 최근 데이터를 가지고 예측
Batch 묶음(30분의 데이터)를 한번에 예측
모델의 활용 방식에 따라 30분일 수도 있고, 1주일, 하루 단위일 수 있음
한번에 많은 예측을 실행
Batch Serving 관련한 라이브러리가 따로 존재하지 않기 때문에 함수 단위를 주기적으로 실행함.
(Airflow, Cron job 등으로 스케쥴링 작업(Workflow Scheduler)
ex) 스포티파이의 예측 알고리즘 - Discover Weekly
Input 관점에서 선택
Ouput 관점
모델을 개발한 후, 사람들과 테스트할 수 있는 프로토타입을 먼저 만들어보고 이 모델이 어떤 결과를 반환하는가?를 테스트할 수 있음
but, 웹 서비스를 만드는 것은 시간이 많이 소요됨
ipywidget과 같이 사용할 경우 대시보드를 구축할 수 있음
-> 이때 활용할 수 있는 도구 Volia
웹 서비스를 다른 조직의 도움 없이 빠르게 웹 서비스를 만들 수 있는 방법이 무엇일까?
=> Streamlit
논문 리뷰를 처음으로 해보았다. NGCF를 했는데 강의에서 배웠던 것임에도 불구하고 다시보니 또 새루웠고, 알고 있다고 생각했던 것을 남에게 설명하려니 또 새로웠다. 많이 반복해서 익숙해질 수 없겠다는 결론을 내렸고, 강의든 강의자료든 다시 봐야겠다고 다짐했다.
Streamlit으로 저번대회에 만들었던 모델을 연결시키는 거였는데, 버전 에러를 많이 겪었다. 변성윤 마스터님 말씀으로 과제를 내줄때 버전 에러가 안나게 내주는 것보다 버전 에러가 많이 나게끔? 내주는 과제가 더 좋다는 것을 깨달았다고 말씀해주셨다. 처음 이 소리를 들었을 때 무슨소리지 했는데 겪어보니 정말 7할이 버전 문제를 해결하는데 시간을 쏟았다고 할 정도로 버전 에러를 많이 겪고 고치는데에 많은 경험을 할 수 있었다. 이를 통해서 가상환경을 몇번이나 만들었다 지웠고, 파이썬 버전도 다운그레이드 해보았고, 모든 버전을 서로 맞도록 설치해주었다. 비록 streamlit 과제는 마음에 들게 제출하지 못했지만, 다시 시도해봐야할 과제로 남았다.