즉, 고객들도 안심하고 먹게 할려고
모델 관리는 모델의 성능에 직접적인 영향을 주지는 않습니다.
모델 관리는 모델의 버전 관리, 협업, 업데이트 관리 등을 통해 모델의 효율적인 운영을 지원합니다. 모델의 성능을 개선하기 위해서는 모델 개발 및 튜닝, 데이터 수집 및 전처리 등 다양한 단계에서 작업이 필요합니다
(1) 모델 메타 데이터
모델 메타 데이터는 모델이 언제 만들어졌고,어떤 데이터를 사용해서 만들어 졌는지를 저장한 데이터. 성능도 같이 저장
(2) 모델아티팩트
모델 아티팩트=모델의 학습된 결과물.모델 파일(pickle,joblib등)
(3)Feature/Data
모델을 위한 Feature,Data
Data도 버전에 따라 업데이트가 될 수 있음(레이블링변경등)
MLflow은 모델 개발 생명주기를 관리하는 플랫폼으로, 실험들을 관리하고 각 실험의 내용들을 기록하며, 이러한 기록을 바탕으로 모델을 배포할 수 있습니다. MLflow은 모델 트래킹, 모델 레지스트리, 모델 서빙 등의 기능을 제공하여 엔드 투 엔드로 모델 관리를 지원합니다
머신러닝 관련 “실험”들을 관리하고,각 실험의 내용들을 기록할 수 있음
실험을 정의하고,실험을 실행할 수 있음.이 실행은 머신러닝 훈련코드를 실행한 기록
MLflow로 실행한 머신러닝 모델을 ModelRegistry(모델저장소)에 등록할수있음
ModelRegistry에 등록한 모델을 RESTAPI형태의 서버로 Serving할 수 있음
pip install mlflow==2.10.0
mlflow server --host 127.0.0.1 --port 8080
localhost:8080로 MLflow UI접속
Experiment(실험)
mlflow experiments create --experiment-name my-first-experiment
ls-al
을 사용해 폴더확인하면 mlruns라는 폴더가 생김
Experiment리스트확인
mlflow experiments search
모델에 필요한 라이브러리 설치 후 폴더 생성
pip3 install numpy scikit-learn
mkdir logistic_regression
cd logistic_regression
프로젝트(MLProject)
ML Project,python_env.yaml정의
Run(실행)
Run에서로깅하는것들
Source
: 실행한 Project의 이름Version
: 실행HashStart & end time
Parameters
: 모델파라미터Metrics
: 모델의 평가지표,Metric을 시각화 할 수 있음Tags
: 관련된 TagArtifacts
:실행과정에서 생기는 다양한 파일들(이미지,모델Pickle등)Run으로실행
mlflow run logistic_regression --experiment-name my-first-experiment
-> python_env.yaml에 정의된 가상환경을 생성하고 실행
만약 현재 Local에서 실행하고 싶다면(가상환경추가로생성하지않음)
mlflow run logistic_regression--experiment-name my-first-experiment --env-manager=local
로깅을 더 편하게 하는 방법은 없을까? => mlflow.autolog()
단, autolog는 모든 프레임워크에서 사용가능한 것은 아님
자세한거는 밑의 홈페이지에!
https://mlflow.org/docs/latest/tracking/autolog.html#automatic-logging
MLProject에서 Parameter지정(train.py)
Run: -P 옵션으로 파라미터 미정
mlflow run logistic_regression_with_autolog_and_params-P solver="saga" -P penalty="elasticnet" -P l1_ratio=0.03--experiment-namemy-first-experiment --env-manager=local
MLFlow를사용해 DataScientist와 MLOpsEngineer가 협업가능
특정 Run을 찾고 싶은 경우
query문법을 넣을 수 도있고,특정 metric기준으로 확인할 수 있음
search후 download까지 하고 싶다면,
단순함 / 과거 데이터를 기반/주기성 혹은 배치/훈련후 정적인 모델평가
복잡함/실시간 데이터에 기반/즉각적인 성능평가/모델의 동적인 변화에 빠르게대응
데이터를 훈련세트와 테스트세트로 나누어 모델을 훈련하고 평가
일정비율의 데이터를 테스트에 예약하여 모델의 일반적인성능을평가
데이터를 K개로 나누고 각 폴드를 한번씩 테스트 세트로 사용
-> 나머지를 훈련세트로 사용하여 모델을 K번 평가하는 기술
중복을 허용하여 원본데이터셋에서 샘플을 랜덤하게 추출하여 여러 개의 부분집합을 생성
모델을 반복적으로 훈련및평가하여 일반화성능을 추정
같은 양의 트래픽을 두 개 이상의 버전에 전송하고 예측.예측결과를 비교 및 분석
새로운 버전의 모델로 트래픽이 들어가도 문제가 없는지 체크
프로덕션(=운영)과 같은 트래픽을 새로운 버전의 모델에 적용
Offline과 Online평가를 반복하면서 최적의 모델을 서빙할 수 있도록 지속적으로 개선