MLflow

1. MLflow의 등장 배경
머신러닝 프로젝트를 진행하다 보면, 여러 번 반복적인 모델 훈련을 수행하게 된다. 데이터셋도 바꿔보고, 피처도 변경하고, 전처리 방법도 바꾸고, 하이퍼 파라미터도 바꾸게 된다. 그러다가 어떤 파라미터로 학습했는지 기억나지 않거나, 또는 어떤 실험이 가장 성능이 좋았는지 찾아야할 때도 있다. 그리고, 학습된 모델 파일이 어디에 저장됐는지 찾아야 할 때도 있다.
소규모 프로젝트나, 실험 횟수가 적은 머신러닝 프로젝트인 경우에는 메모를 통해서 기억을 되살릴 수 있지만, 다루는 모델이 여러개거나 피처가 수십개 이상인 경우, 실험 횟수가 100회를 넘어간다면 메모로는 감당하기 힘든 시점이 오게 된다.
MLflow가 바로 이 때 필요하다.
MLflow는 머신러닝 실험 과정에서 발생하는 정보들, 실험 환경과 조건들, 그리고 결과물을 기록하고 관리하며, 각 실험간 비교할 수 있게 도와주는 플랫폼이다. MLflow에서는 훈련 파라미터, 평가 지표, 모델 파일과 같은 요소를 한 군데에서 추적할 수 있기 때문에, 실험의 재현성과 협업 효율을 크게 높일 수 있다.
2. MLflow에서 관리하는 것들
- 파라미터(Parameter) : learning rate, batch size, node number와 같은 훈련 파라미터
- 평가지표(Metric) : accuracy, loss, F1 Score 및 사용자 정의 평가 지표 기록
- 실행(Run) : 모델 훈련 또는 실행 1회의 단위로, 실행 시점과 같은 메타데이터 기록, 관리 가능
- 아티팩트(Artifact) : 훈련된 모델 파일이나 이미지, 로그, 데이터셋 등 실행의 결과물
3. MLflow가 필요한 이유
- 실험 기록 자동화 : 실험때마다 사용한 파라미터, 결과로 나온 평가지표가 자동으로 기록됨
- 표준화된 기록으로 비교 용이 : 파라미터, 평가지표 등을 표준화하고 비교하기 쉽게 도움
- 재현성 확보 : 실험의 조건과 결과를 기록으로 남겨 실험 재현성 확보
- 모델 결과물 통합 관리 : 훈련된 모델, 이미지, 로그 등 결과물(Artifact)를 함께 관리 가능
- 협업 : 다양한 이해관계자(e.g. 모델러, MLOps, 서빙담당자)들이 공유하고 협업하기 쉬움
4. MLflow의 구조
| 구성 요소 | 역할 | 구분 |
|---|---|---|
| MLflow Tracking Server | • 실험(실행) 정보나 결과물을 수신하고, 이를 각 저장소에 저장 • 실험(실행)에 대한 정보 조회 요청을 받고, 응답을 제공 • MLflow 의 여러 기능에 대한 API 담당 • Web UI 제공 |
Server |
| Backend Store | • 각 실험이나 실행에 대한 정보를 저장하는 RDB 형태 | Server |
| Artifact Store | • 훈련된 모델 파일, 이미지, 데이터셋과 같은 결과물 저장 • 보통 크기가 큰 파일들이 저장된다. |
Server |
| MLflow Client | • 실제 모델을 훈련하고, 실험 정보를 송신하는 코드 사이드 | Client |
- Tracking Server: 요청을 받고 관리하는 서버
- Backend Store: 실험 메타데이터 저장소
- Artifact Store: 모델 및 결과 파일 저장소
- Client: 모델 훈련(실험) 및 실험 정보 송신 주체
마치며
이어서 MLflow에 대해 공부한 내용을 포스팅하려고 한다. MLflow 의 Server Side부터 시작해서, MLflow 의 메인 컨셉과 Client 사이드의 사용 방식까지 다뤄보도록 하겠다.
Comments