본 글은 Coursera의 Machine Learning Engineering for Production (MLOps) 특화 과정의 일부인 Introduction to Machine Learning in Production 강좌의 내용을 개인적인 의견과 함께 정리한 글이다. 원 강좌 내용에 관심이 생긴다면 한번 수강해 보도록 하자!
Class Overview
머신 러닝 학계를 들여다 보면, 실제 세계의 문제를 해결하고자 하는 머신 러닝 알고리즘 논문이 하루에도 수십, 수백 편 씩 아카이브에 게재된다. 이렇게 계속 새롭게 등장하는 ML 알고리즘들은 성능의 정량적 비교를 위해 고정된 데이터셋 하에서 통제된 학습/테스트 셋 조건을 이용해 평가되고, 한 시점에서 가장 높은 성능을 내는 알고리즘이 SOTA (State of the art) 알고리즘으로 분류된다.
그럼 이제, 우리에게 머신 러닝 알고리즘을 이용해 실제 세계의 문제를 해결해야 할 일이 생겼다고 상상해 보자. 먼저 문제 상황과 샘플 데이터를 통해 풀어야 하는 문제가 정확히 어떤 종류인지 판단을 내릴 것이다 (Object detection, Semantic segmentation, Anomaly detection...). 그 후에는, 데이터를 수집함과 동시에 학습과 성능 검증에 필요한 라벨 정보를 모으고, 데이터 준비가 완료되면 해당 문제의 각종 SOTA 알고리즘들을 순차적으로 벤치마크 해 현재 문제 세팅에서 최적의 성능을 보이는 알고리즘을 선정할 것이다. 필요하다면 그 동안 얻은 직관을 이용해 문제에 적합한 새로운 모델을 구현할 수도 있다.
성능 검증을 통해 최적의 알고리즘을 골라내고, 가지고 있는 데이터셋에서 최상의 성능을 보이는 모델 웨이트도 얻었다. 여기까지가 학계나 연구 프로젝트에서 일반적으로 볼 수 있는 머신 러닝 문제 해결 과정이다.
그럼 정말 여기서 끝인 걸까? 실제 세계에 적용되어서 지속적으로 생성되는 데이터를 inference 할 준비가 된 걸까? 당연히 아니다. 단순히 모델을 학습시킨 후 주어진 데이터 상에서 좋은 성능을 내는 것을 확인했다고 바로 공장 생산 라인 등에 적용할 수 있는 것이 아니고, 모델을 실질적으로 쓸모 있게 만들기 위해서는 첫 모델 학습 이후에 훨씬 더 많은 단계들을 거쳐야 한다.
이 강의는 실제 세계의 문제에 적용할 수 있는, 지속적인 운영이 가능한 ML 시스템을 구축하고 배포하기 위해서는 어떤 스킬과 직관이 필요한지를 전반적으로 다룬다. Coursera의 MLOps 특화 과정은 아래와 같은 내용으로 이루어져 있고, 본 강의인 Introduction to Machine Learning in Production 은 첫 번째 라인에 해당한다.
- Class 1: Production ML 시스템의 전체적인 라이프사이클 ← 현재 강좌
- Class 2: Data 파이프라인
- Class 3: ML modeling 파이프라인
- Class 4: Deployment 파이프라인
블로그 글에서는 강의에서 다루는 내용을 순차적으로, 개인적으로 떠오르는 생각과 함께 자유롭게 정리해 볼 생각이다. 뭔가 이상하다 싶은 내용들도 분명히 있을 것이다. 그럴 때는 언제든지 댓글로 이야기를 해 주면 좋겠다.
아래는 참고할 만한 사이트이다.
References
Papers with code
Machine Learning Engineering for Production (MLOps) 강좌 링크
https://www.coursera.org/specializations/machine-learning-engineering-for-production-mlops