AI_Tech부스트캠프 week15...[9] 모델관리

Leejaegun·2024년 12월 19일
0

AI_tech_CV트랙 여정

목록 보기
58/74

1.모델관리

1.1 왜 모델관리가 필요할까?


즉, 고객들도 안심하고 먹게 할려고
모델 관리는 모델의 성능에 직접적인 영향을 주지는 않습니다.

모델 관리는 모델의 버전 관리, 협업, 업데이트 관리 등을 통해 모델의 효율적인 운영을 지원합니다. 모델의 성능을 개선하기 위해서는 모델 개발 및 튜닝, 데이터 수집 및 전처리 등 다양한 단계에서 작업이 필요합니다

1.2 모델 관리 기본

(1) 모델 메타 데이터
모델 메타 데이터는 모델이 언제 만들어졌고,어떤 데이터를 사용해서 만들어 졌는지를 저장한 데이터. 성능도 같이 저장

(2) 모델아티팩트

모델 아티팩트=모델의 학습된 결과물.모델 파일(pickle,joblib등)

(3)Feature/Data
모델을 위한 Feature,Data
Data도 버전에 따라 업데이트가 될 수 있음(레이블링변경등)

1.3 MLflow 소개

MLflow은 모델 개발 생명주기를 관리하는 플랫폼으로, 실험들을 관리하고 각 실험의 내용들을 기록하며, 이러한 기록을 바탕으로 모델을 배포할 수 있습니다. MLflow은 모델 트래킹, 모델 레지스트리, 모델 서빙 등의 기능을 제공하여 엔드 투 엔드로 모델 관리를 지원합니다

Experiment Management & Tracking

머신러닝 관련 “실험”들을 관리하고,각 실험의 내용들을 기록할 수 있음
실험을 정의하고,실험을 실행할 수 있음.이 실행은 머신러닝 훈련코드를 실행한 기록

Model Registry

MLflow로 실행한 머신러닝 모델을 ModelRegistry(모델저장소)에 등록할수있음

Model Serving

ModelRegistry에 등록한 모델을 RESTAPI형태의 서버로 Serving할 수 있음

1.4 MLflow Core Component

Tracking

  • 머신러닝 코드실행,로깅을 위한 API
  • 파라미터,코드버전,Metric,Artifact로깅
  • 웹UI도 제공
  • MLflow Tracking을 사용해 여러실험결과를 쉽게 기록하고 비교할 수 있음
  • 팀에선 다른사용자의 결과와 비교하며 협업

Model Registry

  • 모델관리를 위한 체계적인 접근방식을 제공
  • 모델의 버전관리

Projects

  • 머신러닝코드,Workflow,Artifact의 패키징을 표준화
  • 재현이 가능하도록 관련된 내용을 모두 포함하는 개념

1.5 MLflow HelloWorld

pip install mlflow==2.10.0

mlflow server --host 127.0.0.1 --port 8080

localhost:8080로 MLflow UI접속

Experiment(실험)

  • MLflow에서 제일먼저 Experiment를 생성
  • 하나의Experiment는 진행하고 있는 머신러닝 프로젝트 단위로 구성
  • 하나의Experiment는 여러Run(실행)을가짐
  • 정해진Metric으로 모델을평가
    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)

  • MLflow를 사용한 코드의 프로젝트 메타정보저장
  • 프로젝트를 어떤 환경에서 어떻게 실행시킬지 정의
    -패키지모듈의 상단에위치

ML Project,python_env.yaml정의

Run(실행)

  • 하나의Run은 코드를 1번 실행한 것을 의미
  • 보통Run은 모델학습코드를 실행
  • 즉,한번의 코드실행 = 하나의Run생성
  • Run을하면 여러가지내용이 기록됨

Run에서로깅하는것들

  • Source: 실행한 Project의 이름
  • Version: 실행Hash
  • Start & end time
  • Parameters: 모델파라미터
  • Metrics: 모델의 평가지표,Metric을 시각화 할 수 있음
  • Tags: 관련된 Tag
  • Artifacts:실행과정에서 생기는 다양한 파일들(이미지,모델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

1.6 MLflow Autolog

로깅을 더 편하게 하는 방법은 없을까? => mlflow.autolog()

단, autolog는 모든 프레임워크에서 사용가능한 것은 아님

  • MLflow에서 지원해주는 프레임워크들이 존재

자세한거는 밑의 홈페이지에!
https://mlflow.org/docs/latest/tracking/autolog.html#automatic-logging

1.7 MLflow Parameter

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

1.8 MLflow를 통한 작업

MLFlow를사용해 DataScientist와 MLOpsEngineer가 협업가능

특정 Run을 찾고 싶은 경우
query문법을 넣을 수 도있고,특정 metric기준으로 확인할 수 있음

search후 download까지 하고 싶다면,

2.모델평가

2.1 OFFLINE vs ONLINE

OFFLINE

단순함 / 과거 데이터를 기반/주기성 혹은 배치/훈련후 정적인 모델평가

ONLINE

복잡함/실시간 데이터에 기반/즉각적인 성능평가/모델의 동적인 변화에 빠르게대응

2.2 Offline 모델평가

Hold-out Validation

데이터를 훈련세트와 테스트세트로 나누어 모델을 훈련하고 평가
일정비율의 데이터를 테스트에 예약하여 모델의 일반적인성능을평가

K-fold cross validation

데이터를 K개로 나누고 각 폴드를 한번씩 테스트 세트로 사용
-> 나머지를 훈련세트로 사용하여 모델을 K번 평가하는 기술

Bootstrap resampling

중복을 허용하여 원본데이터셋에서 샘플을 랜덤하게 추출하여 여러 개의 부분집합을 생성
모델을 반복적으로 훈련및평가하여 일반화성능을 추정

2.3 Online 모델평가

AB Test

같은 양의 트래픽을 두 개 이상의 버전에 전송하고 예측.예측결과를 비교 및 분석

Canary Test

새로운 버전의 모델로 트래픽이 들어가도 문제가 없는지 체크

Shadow Test

프로덕션(=운영)과 같은 트래픽을 새로운 버전의 모델에 적용

  • 모든 트래픽은 현재 시스템에 전송
  • 그림자처럼같은 트래픽을 새로운버전에 복제해서 전송
  • 유저에게 직접 결과물이 전달되지않음(=서빙되지않음)=>새모델이 이슈가 있어도 안전
  • 하지만 트래픽 복제전송을 위한 인프라 구성필요
    업로드중..

2.4 End to End

Offline과 Online평가를 반복하면서 최적의 모델을 서빙할 수 있도록 지속적으로 개선
업로드중..
업로드중..

profile
Lee_AA

0개의 댓글

관련 채용 정보