Used Memory Prediction
시작하기에 앞서
- 이번 포스팅은 2022년 2월 23일 당시 참가한 해커톤
Hello, Megabyte Hackathon
에 제출한 프로젝트 입니다. -
사용된 데이터는 해커톤 참여기업인
OKESTRO
에서 실제 기업 데이터인메모리 사용로그
와CPU 사용로그
를 제공해 주었습니다. -
또한 데이터는 실제 기업 데이터이기 때문에 공개하지 않겠습니다.
- 사용된 노트북은 아래 공개해 두었습니다.
https://github.com/nanoteyep/ToyProject/blob/main/MemoryPredict/UsedMemoryPredict.ipynb
문제 정의
주어진 과제는 주어진 모든 column을 사용하여 주요 metric인 cpu사용량(system.cpu.idle.pct)
, memory 사용량(system.memory.used.pct)
을 예측하는 모델을 작성하는 것 입니다.
해커톤의 특성상 주어진 시간이 2일이라는 점, 모델 학습을 위한 별다른 장비지원이 존재하지 않았기 때문에 저희 팀은 이 중 memory 사용량만을 예측하는 모델을 작성하기로 하였습니다.
데이터 관측
기업 데이터이기 때문에 데이터를 공개할 수는 없지만 총 58개의 column으로 구성된 데이터 입니다.
이 중, target인 system.memory.used.pct
또한 포함되어 있습니다.
또한 9월, 10월 날자별로 구성된 데이터 이며 9월을 학습에, 10월 데이터를 검증용으로 사용하는 것을 권장하고 있습니다.
설명
노트북 전문은 위 깃헙 링크에 공유해 두었습니다.
가장 먼저 진행 한 것은 데이터 분석 입니다.
분석 결과 57개의 컬럼이 메모리 사용량과 동시에 측정되는, 즉 예측에 사용할 수 있는 column이 아닌 것을 확인하였습니다.
그렇기에 저희가 사용한 column은 바로 datetime
입니다.
저희는 이 데이터를 시계열 데이터로 판단하고 시간 과 인스턴스 id, 메모리 사용량을 제외한 모든 columns을 지워버렸습니다.
시간은 저희가 예측을 위해 사용한 주 column이며 인스턴스 id는 각 인스턴스 별로 시계열 패턴이 다를 것이라 예상하였기에 고려해 주었습니다.
하지만 Collab에서 작업하는 환경상 메모리 사용에 제한이 있었기 때문에 모든 인스턴스 id에 관해 학습을 진행하지 않고 특정 id를 선택해 학습을 진행해 주었습니다.
사용된 모델은 ML의 Prophet입니다.
시계열 데이터로 판단하였기 때문에 시계열 패턴을 학습 할 수 있는 모델이면서 한정된 하드웨어 자원과 시간속에서 효율적으로 학습 하기 위해 선택하였습니다.
성능을 높이기 위해 Holiday나 changepoint_prior_scale과 같은 파라미터를 조정해주기도 하였으나 결과적으로 아무 조정을 하지 않은 상태가 가장 성능이 좋게 나왔습니다.
마치며
최종적으로 MAPE 12.39%의 성능을 기록하며 마무리 되었습니다.
Prophet이라는 모델을 처음 써보았지만 생각보다 가벼우며 성능도 그럭저럭 괜찬게 나오는 모델이 아닌가 싶습니다.
시계열데이터를 사용하고자 할 때 고려해 보아야 할 모델이 늘어난 것 같아 충분히 가치있는 해커톤이었다고 생각합니다.