MLflow 사용기 01

.

최근 팀에서 머신러닝 관련 프로젝트를 다시 진행하게 되어 준비작업을 조금씩 해나가던 와중에, 최근에는 어떤 식으로 파라미터 튜닝을 진행하는지 궁금해졌습니다. 튜닝 자체라기보다는 그 일련의 튜닝과정을 어딘가 기록해놓으면서 진행해야 할텐데 좀 fancy한 방법이 없는지 궁금해졌죠.

그러다 쏘카에서 일하고 계신 변성윤님이 sacred+omniboard 조합에 대한 소개글을 최근에 쓰신걸 보게 되어 이 조합을 써볼까 하다가 팀에서 MLFlow를 써보신 분이 MLFlow가 장점이 더 많다는 의견을 주셔서 먼저 이에 대한 사용기를 먼저 적어보려 합니다.

쉽게 말하면 MLflow는 머신러닝 모델을 개발하는데 있어 그 라이프 사이클을 좀 더 관리하기 쉽게 해주는 툴이라고 합니다. 기존에 각각 다른 오픈소스 라이브러리들로 구성되어 있던 전체적인 플로우를 한 곳에 모아서 관리할 수 있는 툴이 최근에 각광받고 있는 느낌이었는데, MLflow 또한 이 중 하나라고 생각하면 이해하기 쉬울 것 같습니다.

MLflow는 크게 봤을 때, 다음과 같은 세 가지 기능을 제공합니다.

  1. MLflow Tracking

기존 모델 개발 플로우에서 파라미터, 코드 그리고 각 학습 결과를 로깅하여 UI를 통해서 비교할 수 있도록 해주는 기능입니다.

  1. MLflow Projects

MLflow를 사용하게 되면 Conda와 Docker를 이용해서 재현가능한 코드를 다른 사람들과 공유할 수 있게 해줍니다.

  1. MLflow Models

다양한 ML 라이브러리에서 모델을 관리할 수 있게 해주고 배포(serving)을 쉽게 해줍니다.

사실 원하던 부분은 1번만 활용하더라도 채워지지만, 사용하는 김에 오픈소스에 기여할 부분은 없나?하는 생각과 최근 관련 분야에 관심이 많아진 탓에 다른 기능들도 활용해보려 합니다.

일단 오늘은 여기까지.

관련 자료는 아래에서 확인해주세요.

  • https://speakerdeck.com/dongjin/introducing-mlflow
  • https://zzsza.github.io/mlops/2019/01/16/mlflow-basic/