본문 바로가기

부스트캠프 AI Tech 3기/이론 : U-stage

[Day21] AI 서비스 기초 5. MLflow

MLflow가 없을 때

각각 코드를 돌리고, 모델 학습시 사용했던 파라미터나 metric을 따로 기록한다.

학습하며 생긴 weight file을 공유해야하는 상황도 있고,

versioning을 귀찮아서 하지 않게 되는 경우도 많다.

또한, 메모리 초과로 학습이 중단되니까 중간에 기록을 하면 좀 더 상황이 좋아질 수 있다.

 

MLflow

: 머신러닝 실험, 배포를 쉽게 관리하는 오픈소스

 

MLflow는

  • 실험 재현
  • 코드 재현
  • 모델 패키징 & 배포
  • 모델 관리를 위한 중앙 저장소

을 위해서 만들어졌다.

해당 기능을 제공하며 머신러닝 라이프 사이클을 관리한다.

모델의 파라미터와 결과를 기록을 해야한다. MLflow에서 자동으로 기록된 기록들을 보고 best 성능을 가져와서 사용하면 된다. MLflow는 모델 메타 정보도 저장되고, 여러 다른 모델을 관리하기도 한다.

 

상용 소프트웨어는 많지만 오픈소스 중에서는 가장 성장세가 빠르다.

mlflow 세션 안에서 model을 fit하게 되면 자동으로 기록된다. 코드상에서도 짧고 간단하게 구현할 수 있다.

CLI, GUI를 둘 다 지원하고 5000 포트로 들어가면 된다.

 

MLflow 핵심기능

  • Experiment Management & Tracking
    머신러닝 실험을 관리하고 그 실험 내용을 기록할 수 있다.
    여러 사람이 파일 공유를 통해서가 아니라, 하나의 MLflow 서버에서 실험하고 바로 공유할 수 있다.
    각 실험의 코드, 하이퍼 파라미터, artifact, metric 등을 저장한다.
  • Model Registry
    모델을 Model Registry에 저장해서, image registry 처럼 다른 사람에게 쉽게 공유하고 다운받을 수 있다.
    또한 version 관리도 올라갈 때마다 된다.
    git이나 docker image와 비슷하다.
  • Model serving
    model registry에 등록한 모델을 서버로 serving할 수 있다.
    직접 Docker Image를 만들지 않아도 생성할 수 있다.

MLflow Component

  1. MLflow Tracking
    머신러닝 코드 실행, 실행결과를 기록해 비교
  2. MLflow Project
    머신러닝 코드를 packaging하기 위한 표준
    소스코드, requirements, 모델을 표준화해서 template으로 의존성과 어떻게 실행해야 하는지를 저장한다.
    MLflow Tracking을 사용하면 MLflow Project 버전을 자동으로 로깅해준다.
  3. MLflow Model
    재현가능하도록 모델파일과 코드를 저장하고, pickle파일도 저장한다.
    다양한 플랫폼에 배포할 수 있는 도구도 제공한다.
  4. MLflow Registry
    MLflow Model의 전반에서 사용할 수 있는 중앙 모델 저장소