My Data Story

[개요] 머신러닝 프로젝트 절차(7) - 시스템 론칭 본문

Machine Learning/1. 머신러닝 프로젝트 절차

[개요] 머신러닝 프로젝트 절차(7) - 시스템 론칭

Hwasss 2021. 8. 12. 15:14
728x90

◈  '머신러닝 프로젝트 절차' 목차 

1. 머신러닝 프로젝트 절차(1) - 큰 그림 보기

2. 머신러닝 프로젝트 절차(2) - 데이터 샘플링 및 훈련/테스트 세트 만들기

3. 머신러닝 프로젝트 절차(3) - 데이터 이해를 위한 탐색

4. 머신러닝 프로젝트 절차(4) - 머신러닝 알고리즘을 위한 데이터 준비

5. 머신러닝 프로젝트 절차(5) - 모델 훈련 및 검증

6. 머신러닝 프로젝트 절차(6) - 모델 세부 튜닝

7. 머신러닝 프로젝트 절차(7) - 시스템 론칭

    구현한 머신러닝 모델 론칭 시 고려해해야 항목들에 대해 살펴보자


1. 론칭

모델을 상용환경에 배포하는 방법은 크게 2가지가 있다. 

첫 번째, 전체 전처리 파이프 라인과 예측 파이프 라인이 포함된 사이킷런 모델을 joblib 등을 사용하여 저장하는 것이다. 그 다음 이 훈련된 모델을 상용환경에서 로드하고 predict() 메서드를 호출해 예측을 만든다. 

 

 

 

 

또는 웹 애플리케이션이 REST API를 통해 질의할 수 있는 전용 웹 서비스로 모델을 감쌀 수 있다. 이렇게 하면 주 애플리케이션을 건드리지 않고 모델을 새 버전으로 업그레이드 하기 쉽다. 필요한 만큼 웹 서비스를 시작하고 웹 애플리케이션에서 웹 서비스로 오는 요청을 로드 밸런싱할 수 있기 때문에 규모 확장하기도 쉽다. 또한 웹 애플리케이션을 파이썬이 아닌 다른 언어로도 작성할 수 있다. 

 

 

 

 

인기 많은 또 다른 전략은 모델을 구글 클라우드 AI 플랫폼과 같은 클라이드에 배포하는 것이다. 이를 사용해 모델을 저장하고 구글 클라우드 스토리지(GCS)에 업로드 한다. 그 다음 구글 클라우드 AI 플랫폼으로 이동하여 새로운 모델 버전을 만들고 GCS  파일을 저장한다. 로드 밸런싱과 자동 확장을 처리하는 간단한 웹 서비스를 만들어준다.

 

 

2. 모니터링 및 시스템 유지 보수

배포 이후, 일정 간격으로 시스템의 실시간 성능을 체크하고 성능이 떨어졌을 때 알람을 통지할 수 있는 모니터링 코드를 작성해야 한다.  시스템의 고장난 컴포너트 때문에 일어날 수 있는 갑작스런 성능 감소 뿐 아니라, 긴 시간 동안 눈에 띄지 않게 성능이 서서히 감소하는 상황도 감지해야 한다. 시간이 지나면서 모델이 낙후되는 경향이 있으니 이런 현상은 일반적이다. 실제 세상은 변하기에 작년 데이터로 훈련된 모델이라면 오늘 데이터에는 적용할 수 없을 것이다. 

 

따라서 모델의 실전 성능에 대해 모니터링해야 한다. 상황에 따라서 하위 시스템의 지표로 모델의 성능 추정하거나 사용자가 직접 설문이나 캡쳐에 응답하며 모델 성능을 평가해야 할 수 있다. 

 

모니터링 시스템과 더불어 모델이 실패했을 때 무엇을 할 지 정의하고 어떻게 대비할 지 프로세스를 준비해야 한다. 

 

데이터가 계속 변화하면 데이터 셋을 업데이트하고 모델을 정기적으로 다시 훈련해야 한다. 

 

이때 전체 과정에서 많은 부분을 자동화해두면 수월하다. 

 

다음은 자동화할 수 있는 일부 작업이다.

º 조사원 통해서 정기적으로 새로운 데이터 수집하고 레이블 달기

º 주기적으로 실행 가능하도록 모델 훈련하고 하이퍼파라미터 세뷰 튜닝하는 스크립트 작성

º 업데이트된 테스트 세트에서 이전의 모델과 새로운 모델을 평가하는 스크립트 작성

 

모델의 입력 데이터에 대해 품질 평가도 진행해야 한다. 이따금 나쁜 품질의 신호 때문에 성능 감소가 조금 일어난다. 하지만 알람이 울릴 정도로 성능이 감소되기까지 시간이 걸릴 수 있다. 모델의 입력을 모니터링하면 이런 문제를 일찍 알 수 있다. 

 

마지막으로 만든 모델을 백업해둬, 문제 발생 시 원복이 가능할 수 있도록 한다. 새로운 모델이 어떤 이유로 올바르지 않게 작동하는 경우 이전 모델로 빠르게 롤백하기 위한 절차와 도구를 주니뱋야 한다. 백업을 가지고 있으면 새로운 모델과 이전 모델을 쉽게 비교할 수 있다. 비슷하게 새로운 버전의 데이터셋이 오염되었다면 롤백할 수 있도록 모든 버전의 데이터셋을 백업해야 한다.