MLflow가 없던 시절
- 사람들이 각자 자신의 코드를 Local에서 작성
- 머신러닝 모델 학습시 사용한 Parameter, Metric을 따로 기록
- 학습하며 생긴 Weight file을 저장해서 다른 동료들에게 공유
- Weight file이름으로 Model Versioning을 하거나 아예 Versioning을 하지 않음.
MLflow가 해결하려고 했던 Pain Point
- 실험을 추적하기 어렵다
- 코드를 재현하기 어렵다
- 모델을 패키징하고 배포하는 방법이 어렵다
- 모델을 관리하기 위한 중안 저장소가 없다.
MLflow
코드 예시
# train.py
import numpy as np
from sklearn.linear_model import LogisticRegression
import mlflow
import mlflow.sklearn
if __name__ == "__main__":
X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
y = np.array([0, 0, 1, 1, 1, 0])
lr = LogisticRegression()
lr.fit(X, y)
score = lr.score(X, y)
print("Score: %s" % score)
mlflow.log_metric("score", score)
mlflow.sklearn.log_model(lr, "model")
print("Model saved in run %s" % mlflow.active_run().info.run_uuid)
핵심기능
- Experiment Management & Tracking
- 머신러닝 관련 실험들을 관리하고, 각 실험의 내용들을 기록할 수 있음.
- 실험을 정의하고 실험을 실행할 수 있음. 이 실행은 머신러닝 훈련 코드를 실행한 기록
- 각 실행에 사용한 소스코드, 하이퍼파라미터, metric 등이 저장됨.