AI를 처음 도입하는 많은 회사들은 보통 ML모델을 공부한 다음에 원하는 문제와 문제를 정의하고 데이터를 구했다면 모델 학습 단계까지는 어렵지 않게 수행하게 된다.
하지만 서비스 화에 있어서 큰 벽을 만나게 된다.
ML 모델을 서비스화 하는 것을 배포,서빙이라고 한다. 서비스화의 의미는 사용자가 직접 코드를 보거나 돌려보는 형태가 아니라 사용자는 특정 방식으로 input 데이터를 전달 해주면 서버에서 모델의 inference 수행한 다음에 사용자에게는 해당 input 데이터에 대한 결과 데이터를 어떤 방식으로든 전달을 해준다. 사용자가 input 을 전달해주는 형식도 다양하다. http api request , 슬랙 챗봇 , 넷플릭스 좋아요 버튼 , 유튜브 구독 버튼, 네이버 길찾기 버튼 등. 사용자가 input 데이터를 전달해주는 주기와 방식도 다양하다.
대표적으로는 일정 크기, 기간 동안의 데이터를 모았다가 한 번에 보낼 수도 있고 아니면 실시간으로 계속해서 보낼 수 있다.
서버에서 사용자가 전달해주는 input 을 바탕으로 inference 수행을 해서 결과를 다시 사용자에게 전달해주는 방식 또한 매우 다양하다. http api 반환, 넷플릭스 영상의 추천 순위가 바뀌는 형태로 제공. 최적의 경로를 지도에 보여준다. DB에 정해진 포맷으로 쌓아두는 경우도 있다.
ML모델을 적용할 때 서빙 단계에서 막히는 이유
서빙은 ML모델에 예측 함수를 콜하는 로직이 들어간 소프트웨어를 개발하는 것이기 때문이다.
하지만 ML모델을 개발하고 연구하시는 분들은 소프트웨어 개발보다는 이론이나 연구에 더 익숙한 경우가 훨씬 더 많기 때문에 이 단계에서 어려움을 경우가 많다
그래서 대부분의 회사에서는 ML모델 개발하는 사람, 학습이 끝난 모델을 서비스화 하는 사람이 분리되어있다. 그 사이의 커뮤니케이션 과정에서 어려움을 겪는 경우가 정말 많다.
커뮤니케이션 과정 어려움을 해결하는 부문에서 여러가지 미봉책으로 타협하는 경우가 많다.
예를 들면, 모델 개발 당시에 연구를 진행했던 모델이 일정한 포맷으로 패키징되어 있지 않다면 서비스화 할 때, 서비스화를 담당하는 개발자는 여러가지 의존성 문제로 많은 문제로 고생을 하게 되고 스케일링을 고려하지 않고 개발된 모델을 서비스화 하다 보면 모델 코드를 포함한 도커 이미지도 감당할 수 없이 커지게 되고
그러다보면 서빙할 때 inference 속도가 느려질 수 밖에 없어서 대용량 트래픽을 감당할 수 없는 경우도 발생하게 된다.
또 서빙환경에서 모델이 정상적으로 작동하고 있는 지에 대한 리벨리에이션 메트릭과 모니터링 시스템이 구축되지 않은 경우가 많기도 하고 보통 서비스화 개발자는 모델 개발자에 비해서 모델 자체의 지식은 상대적으로 부족하기 때문에 서비스화를 담당했더라도
이제 실제 서비스되고 있는 모델이 테스트 데이터에 대해서 정상 작동하고 있는 것인지 아니면 어떤 테스트 데이터에 분포해 변화가 생겼기 때문에 모델을 다시 재 학습해야되는 상황인거지 판단할 수 없는 어려움이 발생하게 됩니다.
소프트웨어에 익숙하지 않은 모델 개발자,연구자가 모델 서빙을 조금 더 쉽고 효율적으로 할 수 있도록 도와주는 도구들이 등장하게 되었다. 기존에는 ML 모델을 서비스화 하기 위해서 모델 전체 코드를 포함한 다음 그 위에서 Flask or Fast API 등에 웹 프레임워크를 사용을 해서 API를 열어주는 코드가 덧 붙여지는 형태로 개발이 진행되었다면
ML모델의 서빙만을 위한 프레임워크,플랫폼이 등장하게 되면서 이제는 모델 개발자가 모델 개발만 정해진 형식에 맞춰서 개발을 하였다면 간단하게 서비스화 수행하게 되었다.
배포 이후에 A /B Test 를 수행하거나 혹은 여러 모델의 배포 방식을 쉐도우 방식, 그린 블루 방식,카나리오 배포 방식 등으로 전략을 달리하면서 배포하기 위해서 추가적인 아키텍쳐를 구축할 필요도 없이 이러한 프레임워크 내에서 지원해주는 기능을 통해서 간단히 수행할 수 있다.
프로덕션 레벨에서 안정된 서비스를 운영하기 위해서는 추가적으로 고려할 게 많다.
베이스 라인 서비스 정도에서는 쉽게 구축할 수 있게되었다.
처음 배포를 고려하는 사람 ,간단한 POC레벨 정도의 배포를 고려하는 회사에서는 플라스크 ,FAST API,Django 와 같은 파이썬 기반의 REST API를 사용을 해서 머신러닝 코드를 감싼 API서버를 개발을 하고 해당 API서버를 도커rize 한 다음에 배포하고 그 앞단에 노드밸러션 붙이는 형태로 시작하게 된다.
#직장인인강 #직장인자기계발 #패스트캠퍼스후기#온라인패키지:머신러닝서비스구축을위한실전MLOps#머신러닝서비스구축을위한실전MLOps온라인패키지Online.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'MLops' 카테고리의 다른 글
패스트캠퍼스 챌린지 23일차 (0) | 2022.02.15 |
---|---|
패스트캠퍼스 챌린지 22일차 (0) | 2022.02.14 |
패스트캠퍼스 챌린지 20일차 (0) | 2022.02.12 |
패스트캠퍼스 챌린지 19일차 (0) | 2022.02.11 |
패스트캠퍼스 챌린지 18일차 (0) | 2022.02.10 |