모델 배포, 관리 MLflow

syEON·2023년 12월 4일
0

공식문서: https://mlflow.org/docs/latest/index.html

로컬 환경

django sqlight 사용

▪ mlflow server --backend-store-uri sqlite:///mlflow.db --default-artifact-root ./artifacts

http://127.0.0.1:5000

중요

같은 실험, 같은 모델일 때 버전관리가 가능하다.

autolog 생성 코드

run_name : 지정안하면 자동 할당
registered_model_name: 지정안하면 UI로 웹에서 수행

with mlflow.start_run(experiment_id = exp_id, run_name = '원하는 실행명'):

    mlflow.keras.autolog()
    model = Sequential([Conv2D(8, kernel_size=3, input_shape=(28, 28, 1), padding='same', strides = 1, activation='relu'),
                    MaxPooling2D(pool_size=2, strides=2),
                    Flatten(),
                    Dense(26, activation='softmax') ])

    model.compile(optimizer= 'adam', loss='sparse_categorical_crossentropy', metrics='accuracy')
    history = model.fit(x_train, y_train, epochs=10, validation_split=.2)
    
    mlflow.keras.log_model(model, "model",  registered_model_name="원하는 모델 이름")
    
    mlflow.keras.autolog(disable = True)
    

MLflow UI 화면

  • mlflow.log_param 하이퍼파라미터 값
  • mlflow.log_metric 성능 지표 값
  • mlflow.log_tag 관리를 위해 필요한 정보
  • mlflow.sklearn.log_model 모델 등록
  • mlflow.log_artifact 그 외 산출물(그래프, csv 등)

🥽 모델 자세히 살펴보기
RunName이나 Model을 클릭해서 들어오면

Autolog임으로 Parameters에는 별도로 지정하지 않아도 존재한다.
Metris(4) : 위 코드를 보면 validaton_split을 지정하였고 metrics는 accuracy로 지정하였다. 기본적인 loss와 accuracy가 tran, validaton 데이터별로 나온다.


🥽 모델만 모아 놓은 Models 탭

🥽 모델 라이프 사이클 관리, 4단계

  • None: 모델을 처음 등록했을 때
  • Staging : 개발 중인 모델이나 실험을 진행 중인 모델을 의미. 아직 운영 모델로 사용하기 전
  • Production: 실제 운영 환경에서 사용할 수 있는 모델 저장. 모델 성능이 검증되고 품질이 우수하며 모델의 예측 결과가 안정적인 상태
  • Archived : 운영 환경에서 더 이상 사용하지 않는 모델 지정, production의 이전 버전을 저장하고 추적 검토. 문제가 발생시 복구로 사용될 수 있다.

모델 불러와서 사용하기

코드에서 아래와 같이 uri를 지정하고 버전이나 라이프사이클 단계로 특정 모델을 불러온다.

mlflow_uri = "sqlite:///mlflow.db"
mlflow.set_tracking_uri(mlflow_uri)

#model_uri = "models:/CNN1/latest" 
model_uri = "models:/CNN1/production" 
model_uri = "models:/CNN1/1"  #버전 

model2 = mlflow.sklearn.load_model(model_uri)

0개의 댓글