티스토리 뷰
네이버 부스트캠프 AI Tech 3기 강의를 듣는 과정에서 작성된 포스트입니다.
강의 내용을 저만의 언어로 재해석 했습니다.
MLflow를 공부하면서
버전관리, 코드 저장 등의 프로젝트 관리를 해준다는 점에서 머신러닝계의 깃허브 처럼 느껴졌다.
중요한 기능들
1 ) 실험 기록하기
실험을 정의하고, 실험을 실행할 수 있다.
각 실행해서 사용한 소스 코드, 하이퍼 파라미터, 부산물(Chart Image)등을 저장해준다.
seed, num_round, gamma 등의 변수를 기록해준다.
2 ) 모델 저장소에 등록하기
깃헙처럼 모델의 저장 버전을 관리해준다. 공유가 쉬워진다.
3 ) 모델 서빙
모델 저장소에 등록된 모델에 input을 넣었을 때 나오는 output을 REST API 형태로 사용할 수 있다.
Experiment
Experiment == 프로젝트 단위 이다.
하나의 Experiment는 여러 Run(실행)을 가진다.
생성하기
mlflow experiments create --experiment-name my-first-experiment
리스트 확인하기
mlflow experiments list
Project 생성하기
패키지 모듈의 상단에 위치한 파일로, 메타 정보를 저장한다.
실행 파일 등을 지정한다.
사용하기
pip install mlflow
CLI, GUI 둘다 지원중이어서 원하는걸로 쓸 수 있다.
GUI실행 : mlflow ui
Run으로 실행: mlflow run logistic_regression --experiment-name my-first-experiment --no-conda
코드에서 다음과 같이 써주면 된다.
import mlflow
mlflow.autolog(log_input_examples=True)
mlflow.start_run()
한계점
모든 프레임워크에서 아직 지원하지는 않는다.
예제
import os
from random import random, randint
from mlflow import log_metric, log_param, log_artifacts
if __name__ == "__main__":
# Log a parameter (key-value pair)
log_param("param1", randint(0, 100))
# Log a metric; metrics can be updated throughout the run
log_metric("foo", random())
log_metric("foo", random() + 1)
log_metric("foo", random() + 2)
# Log an artifact (output file)
if not os.path.exists("outputs"):
os.makedirs("outputs")
with open("outputs/test.txt", "w") as f:
f.write("hello world!")
log_artifacts("outputs")