본문 바로가기
네이버 부스트캠프 AI Tech/Deep Learning Basics

[부스트캠프 AI Tech] MLflow

by 중앙백 2022. 2. 16.

MLflow

  • 머신러닝 실험, 배포를 쉽게 관리할 수 있는 오픈소스
  • pip install mlflow
  • MLflow가 해결하려 했던 점
    1) 실험 추적이 어려움
    2) 코드 재현하기 어려움
    3) 모델을 패키징하고 배포하는 방법이 어려움
    4) 모델을 관리하기 위한 중앙 저장소가 없음
  • 핵심 기능
    1) Experiment Management & Tracking
    머신러닝 관련 "실험들"을 관리하고 각 실험 내용(소스 코드, 하이퍼 파라미터, Metric, 모델 artifact, chart image 등)을 기록할 수 있음
    2) Model Registry
    MLflow로 실행한 머신러닝 모델을 Model Registry(모델 저장소)에 등록 가능
    모델 저장소에 모델이 저장될 때마다 버전이 자동으로 올라감
    model registry에 등록된 모델은 타인이 쉽게 공유/활용 가능
    3) Model Serving
    Model Registry에 등록한 모델을 REST API 형태의 서버로 Serving 가능
    Input = Model input
    Output = Model output
    직접 Docker image를 만들지 않아도 생성 가능


MLflow Component
  1. MLflow Tracking
    머신러닝 코드 실행, 로깅을 위한 API, UI
    결과를 local, server에 기록해 여러 실행과 비교도 할수 있고, 팀에선 다른 사용자와 결과를 비교하며 협업가능

    * MLflow Tracking - Experiment
    하나의 Experiment는 진행하고 있는 머신러닝 프로젝트 단위로 구성되고 여러 Run(실행)을 가짐
    생성 : mlflow experiments create --experiment-name [Experiment_name]
    Experiment list 확인 : mlflow experiments list

    * MLflow Tracking - Run
    한 번의 코드 실행 = 하나의 Run 생성
    Run하면 여러가지 내용이 기록됨
    ⊙ Run에서 로깅하는 것들 
    - Source : 실행한 project의 이름
    - Version : 실행 Hash
    - Start & end time
    - Parameters : 모델 파라미터
    - Metrics : 모델의 평가 지표, 시각화 가능
    - Tags : 관련된 Tag
    - Artifacts : 실행 과정에서 생기는 다양한 파일들(이미지, 모델 Pickle 등)

    * MLflow Tracking - UI
    UI 실행 : mlflow ui  → localhost:5000으로 MLflow UI접속
    Experiment와 Run의 관계


    * MLflow autolog
    파라미터를 매번 명시해야 할까 → autolog를 사용하자
    하지만 모든 프레임워크에서 사용가능한 것은 아니므로 주의

    * MLflow Parameter
    * MLflow Hyper Parameter Tuning


  2. MLflow Project
    머신러닝 프로젝트 코드를 패키징하기 위한 표준
    Project : 소스 코드가 저장된 폴더. 어떤 환경에서 어떻게 실행해야 하는지 저장.
    MLflow를 사용한 코드의 프로젝트 메타 정보 저장
    MLflow tracking API를 사용하면 프로젝트 버전을 모든 파라미터와 자동으로 로깅

  3. MLflow Model
    모델은 모델 파일과 코드로 저장
    MLflow tracking API를 사용하면 자동으로 해당 프로젝트에 대한 내용을 사용함

  4. MLflow Registry
    MLflow model의 life-cycle에서 사용할 수 있는 중앙 모델 저장소

 

 

MLflow 서버로 배포하기
  • MLflow architecture
  • mlflow server 명령어로 Backend Store URI 지정
    mlflow server --backend-store-uri sqlite:///mlflow.db --default-artifact-root $(pwd)/artifacts

댓글