시스템 개발 및 관리/MLflow를 활용한 머신러닝 실험 관리

GridSearchCV와 MLflow로 머신러닝 실험 자동화하기

Data Jun 2025. 1. 31. 13:33

머신러닝 모델을 개발할 때 하이퍼파라미터 튜닝과 실험 결과를 효율적으로 관리하는 것이 중요합니다. 이번 포스트에서는 GridSearchCV를 활용하여 랜덤 포레스트(RandomForestClassifier)의 하이퍼파라미터를 최적화하고, MLflow를 통해 실험을 기록하고 분석하는 방법을 설명하겠습니다. 아래 코드에서는 MLflow의 autologging 기능을 활용하여 각 실험(run)의 모델, 하이퍼파라미터, 평가 지표(precision, recall, f1-score, accuracy)를 자동으로 기록합니다.

 

mlflow.sklearn.autolog()

'''
	To do
	run GridSearchCV with mlflow 
'''
with mlflow.start_run():
    model_grid = GridSearchCV(RandomForestClassifier(), {"n_estimators":[100,200], "max_depth":[20,25]})
    model_grid.fit(X_train, y_train)
    y_pred = model_grid.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
    prf = precision_recall_fscore_support(y_test, y_pred, average="binary")
    mlflow.log_metric("precision_on_test", prf[0])
    mlflow.log_metric("recall_on_test", prf[1])
    mlflow.log_metric("f1score_on_test", prf[2])
    mlflow.log_metric("accuracy_on_test", accuracy)

위 코드를 실행한 후, MLflow UI를 열면 다음과 같은 화면을 볼 수 있습니다.

UI 설명

  • 왼쪽 Experiments 패널에서 hellomlflow!! 실험을 확인할 수 있습니다.
  • 여러 개의 Run Name이 자동 생성되었으며, 각각의 실행(run)마다 하이퍼파라미터와 평가 지표가 기록되었습니다.
  • metrics.rmse < 1 and params.model = "tree" 와 같은 필터를 사용하여 특정 조건의 실험을 검색할 수도 있습니다.
  • Show more columns (53 total)을 클릭하면 더 많은 매개변수를 확인할 수 있습니다.

MLflow의 UI를 활용하면 다음과 같은 작업을 쉽게 할 수 있습니다.

  • 하이퍼파라미터 조합별 성능 비교
  • 여러 번의 실험 결과를 저장하고 재현 가능하게 관리
  • 최적 모델 선택 후 배포 가능