데이터 사이언스가 작동하는 시스템에 대한 간략한 소개
다른글 (데이터 사이언스란 무엇인가: https://brunch.co.kr/@5dinary/9) 에서 데이터 사이언스는 데이터를 가지고 다른 데이터를 예측하는 방법을 찾아내는 과정이라고 하였다.
그리고 결국은 그건 데이터 사이언스 모델을 만드는 일이라고 짧게 정의하였다.
그렇다면 데이터 사이언스 모델을 실제로 사용하려면 어떻게 해야 할까?
예를 들어, 최근 12개월의 날씨를 가지고 다음 1달간의 날씨를 예측하는 모델을 만들어냈다고 하자.
예) 2020년 6월 ~ 2021년 5월까지의 날씨가 있으면 6월의 일일 날씨 예측
데이터 사이언스 모델이 사용되는 방법에는 사용 빈도에 따라 크게 2가지가 있을 것이다.
1. 한번만 사용되는 것
- 예를 들어 다음 달 야외 행사를 준비하는 사람으로부터 앞으로 한달 뒤의 날씨를 예측해 달라는 요청을 받았으면, 위의 모델을 사용해서 1달간의 날씨를 예측해서, 결과를 요청자에게 보내 주면 된다.
- 그 사람이 다시 야외 행사를 준비하지 않는다면, 이후에는 다시 날씨를 예측할 일은 없는 것이다.
2. 반복적으로 사용되는 것
- 내가 버스 회사에서 일하고 있고, 매달 다음 달의 날씨를 기준으로 운행 계획을 세운다고 해 보자. 그럼 나는 매달 새로 날씨를 예측해야 한다.
- 즉, 나는 위의 모델을 반복적으로 사용해서 날씨를 예측해야 하는 것이다.
한번만 사용되는 경우는 상대적으로 단순하다고 할 수 있을 것이다.
하지만 여러 번 사용해야 할 경우에는 고민할 부분이 생긴다.
데이터 사이언스 모델을 매달 사용해야 한다. 그러면 다음과 같은 것들을 생각해야 한다.
Data의 준비
- '최근 12개월의 Data를 사용한다' 라고 했다. 이 말은 10월 날씨를 예측하는 데 사용한 Data를 11월 날씨를 예측하는 데 사용할 수 없다는 것이다. 즉 매달 새로 Data를 준비해야 한다. 이 부분을 간과하게 되면 허둥지둥대다가 Data 예측을 하지 못하거나, 오류가 섞인 Data로 작업을 하게 될 수 있다.
업무 Process의 준비
- 한번 할 일이라면 Process를 만들 필요가 없지만, 반복적으로 할 경우에는 업무를 요청하는 절차와 처리하는 절차, 그리고 그 결과를 반환하는 절차를 Process로 정규화 해두어야 한다.
시간에 따른 모델의 성능 변화
- 기후도 시간에 따라 바뀐다던데, 이 모델도 1년~2년이 지나도 계속 잘 예측한다고 보장할 수 있을까?
- 만약 예측을 제대로 하지 못한다면 어떻게 대응해야 하지?
자, 여기까지는 모델링을 실행할 PC 혹은 Server 한 대와, 잘 정리된 Process, 담당자 한 명이면 해결이 가능하다. 하지만 만약 한 달이 아닌 1주일에 한번, 혹은 하루에 한 번 처리해야 한다면, 그리고 유사한 일 수십 가지를 처리해야 한다면? 이렇게 된다면 우리에게는 시스템이 필요하다.
데이터 사이언스 시스템은 다음과 같은 역할을 수행해야 한다.
- 모델링에 필요한 새로운 Data를 필요한 시점에 가져오거나, 미리 저장해 두어야 한다.
- 데이터 처리 업무 Process를 실행할 수 있어야 한다. (즉 Data를 받고, 예측 결과를 만들고, 그 결과를 다른 시스템에 전달해야 한다.)
- 데이터 모델의 성능 변화를 추적하고, 그 변화에 대응할 수 있어야 한다.
그러면 아래와 같은 시스템을 만들면 될까?
조금 더 자세히, Data를 가져올 시스템과, 결과를 받아야 할 시스템도 그림에 넣어 보자.
만약에 예측 시스템이 사용하는 모델의 성능이 항상 일정하다면, 이대로 유지해도 된다.
하지만, 그렇게 되지 않을 수 있기 때문에, 예측이 잘 되고 있는지 항상 측정할 수 있는 시스템을 넣어야 한다.
그런데, 그럼 모델의 성능이 문제가 생겼을 때 어떻게 대처해야 할까?
가장 확실한 방법은, 모델을 새로 만드는 것이다.
그럼 모델을 생성하는 시스템 (흔히 학습 시스템이라 한다.)도 만들어야 한다.
그리고 그 생성된 모델을 예측 시스템에 넣어줘야 한다. 결국 아까 이야기한 결과 검증/모델 교체 등을 할 수 있는 관리 시스템을 하나 만들어야 한다.
그 모든 기능을 반영한 시스템의 구조는 다음과 같다.
이 상태에서의 Data의 종류, 연결되는 시스템만 목적에 맞게 바꾸어 주면 일반적인 Data Science 시스템 설계에 사용할 수 있는 범용적인 구조가 된다.
실제 운용하기 위한 Data Science 시스템은 아래와 같은 구성 요소로 이루어져 있다.
새로운 모델을 만드는 부분
모델을 이용해서 결과를 예측하는 부분
예측된 결과를 검증하고, 필요에 따라 모델을 교체하는 관리 부분
P.S. 구체적인 용어와 내용이 궁금하다면 아래의 글을 보는 것을 추천한다.
https://blogs.nvidia.co.kr/2020/09/11/what-is-mlops/