StoryCode

'전체 글'에 해당되는 글 570건

  1. MLFlow.6.More about Models
  2. 크롬 자체 기능 개발 활용 ( 네트워크 로그 등 )
  3. MLflow.5.Model Registry

MLFlow.6.More about Models

인공지능,AI,학습,ML,Tensorflow, Cafee2,MLFlow/MLFlow
반응형

# 참고 : https://dailyheumsi.tistory.com/262?category=980484

이번에는 MLflow의 Model에 대해서 좀 더 자세히 알아본다.

 

사전 준비

이전 글을 참고하자.

 

모델 저장하기

mlflow로 코드에서 모델을 저장하는 방법은 다음처럼 크게 2가지가 있다.

  • mlflow.sklearn.save_model()
  • mlflow.sklearn.log_model()

일단 sklearn 등 머신러닝 모델 프레임워크 단위로 함수를 제공한다.
그리고 log_model()  save_model() 를 똑같이 실행하는 것인데, 저장되는 위치가 run 내부라는 것이 다르다. 일단은 간단한 동작을 보기 위해 save_model() 을 사용해보자.

예를 들면 다음과 같다.

import mlflow

model = ... 
mlflow.sklearn.save_model(model, "my_model")

이렇게 저장하고 나면 다음과 같은 결과물이 생긴다.

my_model/
├── MLmodel
└── model.pkl

model.pkl 은 모델 인스턴스가 picklezed 된 파일이라고 보면 된다.
MLmodel 에는 다음처럼 모델에 대한 메타 정보가 담긴다.

# MLmodel

time_created: 2018-05-25T17:28:53.35

flavors:
  sklearn:
    sklearn_version: 0.19.1
    pickled_model: model.pkl
  python_function:
    loader_module: mlflow.sklearn

 

시그니처 추가하기

누군가가 만들어 놓은 MLflow 모델을 보게되면 보통 MLmodel 을 통해 모델에 대한 정보를 먼저 파악하려고 할 것이다. 그런데 위 MLmodel 파일만 봐서는 이 모델이 어떤 입력을 받고 어떤 출력을 뱉는지 알수가 없다. 입출력에 대한 정보는 시그니처라고 말하는데, 이를 쉽게 알 수 있도록 시그니처를 추가해주자.

예시 코드는 다음과 같다.

import pandas as pd
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
import mlflow
import mlflow.sklearn
from mlflow.models.signature import infer_signature

iris = datasets.load_iris()
iris_train = pd.DataFrame(iris.data, columns=iris.feature_names)
clf = RandomForestClassifier(max_depth=7, random_state=0)
clf.fit(iris_train, iris.target)

# 입출력 정보를 정해주는 부분. 이런 정보를 시그니처라고 한다.
signature = infer_signature(iris_train, clf.predict(iris_train))

# 위에서 정한 시그니처 값을 인자로 넘긴다.
mlflow.sklearn.log_model(clf, "iris_rf", signature=signature)

위에서는 infer_signature() 함수를 사용하여 시그니처를 정해주었다. 이 함수는 실제 입력데이터와 출력 데이터를 파라미터로 넘기면, 시그니처를 알아서 추론해준다. 구체적인 모양새는 여기를 참고하자.

위처럼 추론해주는 함수를 쓰지않고 다음처럼 직접 시그니처를 지정할 수도 있다.

from mlflow.models.signature import ModelSignature
from mlflow.types.schema import Schema, ColSpec

input_schema = Schema([
  ColSpec("double", "sepal length (cm)"),
  ColSpec("double", "sepal width (cm)"),
  ColSpec("double", "petal length (cm)"),
  ColSpec("double", "petal width (cm)"),
])
output_schema = Schema([ColSpec("long")])
signature = ModelSignature(inputs=input_schema, outputs=output_schema)

tensorflow를 쓰는 경우 tensor-based 로 시그니처를 잡아줄 수도 있는데, 이는 공식 문서에 확인하자.

여하튼 위 코드를 실행하면 MLmodel 파일에는 다음처럼 시그니처 정보가 추가된다.

artifact_path: iris_rf
flavors:
  python_function:
    env: conda.yaml
    loader_module: mlflow.sklearn
    model_path: model.pkl
    python_version: 3.8.7
  sklearn:
    pickled_model: model.pkl
    serialization_format: cloudpickle
    sklearn_version: 0.24.2
run_id: 8f7e5d6b6e4e4a69a06ad1fd9e1eeafd
signature:
  inputs: '[{"name": "sepal length (cm)", "type": "double"}, {"name": "sepal width
    (cm)", "type": "double"}, {"name": "petal length (cm)", "type": "double"}, {"name":
    "petal width (cm)", "type": "double"}]'
  outputs: '[{"type": "tensor", "tensor-spec": {"dtype": "int64", "shape": [-1]}}]'
utc_time_created: '2021-05-08 05:49:44.141412'

 

입출력 예시 추가하기

이번엔 모델 입출력 예시까지 추가해보자.
위 코드에서 mlflow.sklearn.log_model() 함수에 input_example 인자 값을 다음처럼 추가한다.

input_example = {
  "sepal length (cm)": 5.1,
  "sepal width (cm)": 3.5,
  "petal length (cm)": 1.4,
  "petal width (cm)": 0.2
}
mlflow.sklearn.log_model(clf, "iris_rf", input_example=input_example)

코드를 실행하면 MLmodel 파일이 있는 디렉토리 (artifacts/iris_rf) 내에 input_example.json 이라는 파일이 다음처럼 생기게 된다.

{
    "columns": [
        "sepal length (cm)", 
        "sepal width (cm)",
        "petal length (cm)", 
        "petal width (cm)"
    ], 
    "data": [
        [5.1, 3.5, 1.4, 0.2]
    ]
}

이 정보는 MLflow 웹서버에서 실행(Run) 상세 페이지 하단에 Artifacts 탭에서 볼 수 있다.

 

그 외

공식 홈페이지 문서에는 이 외에도 다음 내용들이 더 있다.

  • Built-In Model Flavor
  • Model Customization
  • Built-In Deployment Tools
  • Deployment to Custom Target

이 내용들은 부가적인 내용이라고 생각한다. 여기서는 그래도 좀 많이 사용되겠다 싶은 것들만 소개해보았다.

 

정리

정리해보자.

  • 모델 저장은 save_model() 혹은 log_model() 로 한다.
    • 근데 내 생각에 대부분의 경우, MLflow 를 실행(Run) 단위로 기록하기 때문에 log_model() 을 쓰지 않을까 싶다.
    • 모델을 저장하면 모델 인스턴스를 Picklized 한 model.pkl 과 메타 정보를 담고 있는 MLmodel 파일이 생긴다.
  • 모델의 시그니처와 입출력 예시를 코드에서 세팅해줄 수가 있다.

최종적으로 코드는 다음과 같은 형태가 될 것이다.

import pandas as pd
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
import mlflow
import mlflow.sklearn
from mlflow.models.signature import infer_signature, ModelSignature
from mlflow.types.schema import Schema, ColSpec

iris = datasets.load_iris()
iris_train = pd.DataFrame(iris.data, columns=iris.feature_names)
clf = RandomForestClassifier(max_depth=7, random_state=0)
clf.fit(iris_train, iris.target)

# 시그니처 정의 방법 1 (직접 입력해줄 수 있다.)
input_schema = Schema([
  ColSpec("double", "sepal length (cm)"),
  ColSpec("double", "sepal width (cm)"),
  ColSpec("double", "petal length (cm)"),
  ColSpec("double", "petal width (cm)"),
])
output_schema = Schema([ColSpec("long")])
signature = ModelSignature(inputs=input_schema, outputs=output_schema)

# 시그니처 정의 방법 2 (입출력 데이터로 자동 추론할 수도 있다.)
# signature = infer_signature(iris_train, clf.predict(iris_train))

# 입출력 예시 정의
input_example = {
  "sepal length (cm)": 5.1,
  "sepal width (cm)": 3.5,
  "petal length (cm)": 1.4,
  "petal width (cm)": 0.2
}

# 모델 저장
mlflow.sklearn.log_model(
    clf,
    "iris_rf", 
    signature=signature, 
    input_example=input_example
)

최종적으로 생성되는 artifacts 는 다음과 같다.

artifacts
└── iris_rf
    ├── MLmodel
    ├── conda.yaml
    ├── input_example.json
    └── model.pkl

참고

반응형

'인공지능,AI,학습,ML,Tensorflow, Cafee2,MLFlow > MLFlow' 카테고리의 다른 글

Docker Compose로 MLflow 배포  (0) 2021.12.30
MLFlow.6.MLflow Projects  (0) 2021.12.28
MLflow.5.Model Registry  (0) 2021.12.27
MLflow.4.Tracking Server  (0) 2021.12.27
MLflow.3.Experiments & Runs  (0) 2021.12.24

크롬 자체 기능 개발 활용 ( 네트워크 로그 등 )

Chrome Browser 활용법
반응형

# 참조 : https://ko.androideity.com/list-chrome-urls

 

 

  • chrome : // about -모든 내부 Chrome URL을 나열합니다.
  • chrome : // accessibility -브라우저에 열려있는 각 탭에 대한 접근성 정보와 기능이 전역 적으로 켜져 있는지 여부를 표시합니다.
  • chrome : // appcache-internals -사용하는 공간을 포함하여 appcached 사이트에 대한 정보.
  • chrome : // apps / -설치된 모든 애플리케이션 (사용자 별 및 Chrome 브라우저와 함께 제공되는 애플리케이션)을 새 페이지에 나열합니다.
  • chrome : // blob-internals / -Binary Large Object (Blob)에 대한 정보
  • chrome : // bluetooth-internals / -연결된 Bluetooth 어댑터 및 장치에 대한 정보를 표시합니다. 장치가 표시되고 검색 가능한지 여부.
  • chrome : // bookmarks -브라우저의 북마크 관리자를 엽니 다.
  • chrome : // chrome / -정보 페이지를 엽니 다.
  • chrome : // chrome-urls -이 목록을 표시합니다. Chrome : // About로로드 할 수도 있습니다.
  • chrome : // components / - '크롬 크래시 서비스'또는 '페퍼 플래시'와 같은 내부 구성 요소 목록 및 각각에 대한 업데이트를 개별적으로 확인하는 옵션.
  • chrome : // conflicts / -로드 된 모든 모듈을 나열하고 충돌이 있는지 여부를 표시합니다.
  • chrome : // crashes / -충돌보고가 활성화 된 경우 최근 충돌에 대한 정보를 표시합니다.
  • chrome : // credits -브라우저에 포함 된 기술, 해당 라이선스 및 제작자
  • chrome : // device-log / -장치 관련 이벤트의 로그를 보여줍니다.
  • chrome : // devices / -Chrome에 연결된 물리적 또는 가상 장치를 나열합니다. Google 클라우드 프린트에 프린터를 추가하는 옵션.
  • chrome : // dino - '인터넷에 연결되어 있지 않습니다'오류 페이지가 표시됩니다.
  • chrome : // discards / -세션 중에 삭제 된 탭에 대한 정보. 페이지에서 개별 탭을 삭제하는 옵션입니다.
  • chrome : // download-internals -다운로드를 시작하고 응답 및 프로세스를 모니터링합니다.
  • chrome : // downloads -과거의 모든 다운로드를 나열하는 브라우저의 다운로드 관리자
  • chrome : // extensions -설치된 확장을 표시합니다.
  • chrome : // flags -브라우저에 한 번에 통합되거나 통합되지 않을 수있는 실험적 기능을 표시합니다.
  • chrome : // gcm-internals / -Google 클라우드 메시징 정보를 표시합니다.
  • chrome : // gpu -비디오 카드 및 지원되는 기능에 대한 정보 (예 : 하드웨어 가속
  • chrome : // help / -정보 페이지를 엽니 다.
  • chrome : // histograms -히스토그램 관련 정보
  • chrome : // history -검색 기록을 지우거나 과거에 열었던 페이지를 찾기 위해 검색하는 옵션이있는 검색 기록 페이지를 엽니 다.
  • chrome : // indexeddb-internals / -사용자 프로필의 IndexedDB 정보.
  • chrome : // inspect -Chrome의 페이지 또는 확장 프로그램과 같은 요소를 검사하는 옵션
  • chrome : // interventions-internals -개입 상태, 플래그, 로그 및 기타 정보를 나열합니다.
  • chrome : // invalidations / -무효화 디버그 정보 나열
  • chrome : // local-state / -기능 및 로컬 브라우저에서 활성화 여부, 상태 정보를 나열합니다.
  • chrome : // media-engagement -브라우저에서 열린 모든 사이트에 대한 미디어 참여 점수와 임계 값을 표시합니다. 점수는 사운드와 함께 비디오 자동 재생을 결정하는 데 사용됩니다.
  • chrome : // media-internals -미디어 재생시 미디어 정보 표시
  • chrome : // nacl -Chrome의 NaCl 플러그인 (Native Client)에 대한 정보
  • chrome : // net-export -네트워크 활동을 캡처하여 디스크의 파일에 저장합니다.
  • chrome : // net-internals -SPDY 연결, 소켓 또는 DNS 조회를 포함한 자세한 네트워크 및 연결 관련 정보를 표시합니다.
  • chrome : // network-error / -네트워크 오류 메시지를 표시합니다.
  • chrome : // network-errors / -Chrome에서 발생할 수있는 네트워크 오류 메시지 목록을 표시합니다.
  • 크롬 : // newtab -새 탭 페이지를 표시합니다.
  • chrome : // ntp-tiles-internals -새 탭 페이지 및 상위 사이트 기능에 타일에 대한 정보를 표시합니다.
  • chrome : // omnibox -이 페이지에 검색 주소창 입력 결과를 표시하며 검색 결과에 검색, 바로 가기 및 기록 정보를 포함합니다.
  • chrome : // password-manager-internals / -비밀번호 관리자 로그가 페이지에 나열됩니다. 페이지를 닫으면 로그가 자동으로 지워집니다.
  • chrome : // policy -현재 브라우저에서 활성화 된 모든 정책
  • chrome : // predictors -과거 활동을 기반으로 한 자동 완성 및 리소스 프리 페치 예측 자 목록
  • chrome : // print -인쇄 미리보기 페이지
  • chrome : // process-internals -프로세스 및 사이트 격리 정보, 프레임 트리.
  • chrome : // quota-internals -Chrome 프로필 디렉토리에 사용할 수있는 디스크 여유 공간, 사용량 및 할당량 세부 정보에 대한 정보
  • chrome : // safe-browsing -현재 공사중입니다. 세이프 브라우징 상태를 표시합니다.
  • chrome : // serviceworker-internals / -브라우저에 등록 된 모든 서비스 워커와 등록 취소 옵션을 나열합니다.
  • chrome : // settings -기본 Chrome 설정 페이지를 엽니 다.
  • chrome : // signin-internals -마지막 로그인 세부 정보 또는 유효성과 같은 로그인 된 계정에 대한 정보를 표시합니다.
  • chrome : // site-engagement -브라우저에서 방문한 모든 사이트에 대한 참여 점수를 표시합니다.
  • chrome : // suggestions / -모든 새 탭 페이지 제안 및 만료시기.
  • chrome : // supervised-user-internals / -활성 사용자에 대한 정보를 나열하고 관리자에게 웹 사이트 필터 및 기타 사항을 테스트 할 수있는 옵션을 제공합니다.
  • chrome : // sync-internals -활성화 된 경우 브라우저의 동기화 기능에 대한 자세한 정보.
  • chrome : // system / -시스템, 동기화, 메모리 사용량 등에 대한 JSON 정보를 나열합니다.
  • chrome : // terms -Google 크롬의 서비스 약관
  • chrome : // thumbnails / -미리보기 이미지가 있거나없는 모든 상위 사이트 URL.
  • chrome : // tracing -페이지가 정보로 채워지기 전에 녹음이 활성화되어야합니다. 그렇게하면 브라우저가 탐색 활동을 기록하기 시작합니다
  • chrome : // translate-internals / -지원되는 언어를 포함하는 번역 정보, 언어가 번역되지 않거나 항상 번역되지 않고 기록됩니다.
  • 크롬; // usb-internals -컴퓨터에 연결된 USB 장치를 추가하고 테스트합니다.
  • chrome : // user-actions / -사용자 작업 로그 (예 : 탭 닫기, 탭 변경 등.
  • chrome : // version -브라우저 버전 및 명령 줄 스위치, 사용자 에이전트, JavaScript, Flash 및 WebKit 버전, 경로 변수를 포함한 다양한 관련 정보를 표시합니다.
  • chrome : // webrtc-internals / -PeerConnection 업데이트 및 통계 데이터를 다운로드하여 덤프를 만듭니다.
  • chrome : // webrtc-logs / -최근 캡처 한 WebRTC 로그를 나열합니다.
반응형

MLflow.5.Model Registry

인공지능,AI,학습,ML,Tensorflow, Cafee2,MLFlow/MLFlow
반응형

이번에는 MLflow의 Model Registry에 대해서 알아본다.


사전 준비

음 이제 매번 쓰기 귀찮다.
어차피 직전 글이랑 이어지므로, 이전 글을 통해 확인하자.


Model Registry

개념

Model Registry는 MLflow 프로젝트 실행을 통해 나온 결과물인 모델을 저장하는 중앙 집중식 모델 저장소다. MLflow로 모델을 기록했다면, 기록한 모델을 Model Registry에 등록할 수 있고, 등록된 모델은 어디서든 불러올 수 있다.

 

모델 등록하기

웹 UI로 등록하기

간단하게 모델을 등록해보자. 직전 글에서 사용한 실습을 그대로 이어간다.
웹 서버 (Tracking Server) 에 들어간 뒤, 실행했던 실행(Run)을 클릭하여 들어간다.

실행 상세페이지 하단에 Artifacts 블록이 있고 이 안에 Model Register 버튼이 있다.

버튼을 클릭하여 다음처럼 LinearRegression 이라는 이름으로 모델을 등록해주자.

이제 상단 메뉴 중에 Model 탭에 들어가보면 다음처럼 등록된 모델을 확인할 수 있다.
모델을 처음 등록하는 경우 Version 1 이 자동으로 추가된다.

등록된 모델 하나를 클릭하면 아래처럼 상세 페이지가 나온다.

모델 버전을 누르면 다음처럼 해당 버전의 상세 페이지로 들어갈 수 있다.

Stage 항목에서는 이 모델의 스테이지 상태를 Staging, Production, Archived 중 하나로 바꿀 수 있다. 아무것도 지정하지 않았을 시 기본 값은 None 이다.

 

코드에서 등록하기

위처럼 웹 UI가 아니라 코드에서 직접 등록하는 방법도 있다.
총 3가지 방법이 있는데 첫 번째 방법은 mlflow.sklearn.log_model()  registered_model_name 의 값을 주는 것이다.

이를 직접 확인하기 위해 이전에 실행했던 sklearn_logistic_regression 예제의 train.py 를 다음처럼 수정한다.

# sklearn_logistic_regression/train.py

import numpy as np
from sklearn.linear_model import LogisticRegression

import mlflow
import mlflow.sklearn

if __name__ == "__main__":
    X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
    y = np.array([0, 0, 1, 1, 1, 0])
    lr = LogisticRegression()
    lr.fit(X, y)
    score = lr.score(X, y)
    print("Score: %s" % score)
    mlflow.log_metric("score", score)
    # mlflow.sklearn.log_model(lr, "model")  # before
    mlflow.sklearn.log_model(lr, "model", registered_model_name="LinearRegression")  # after
    print("Model saved in run %s" % mlflow.active_run().info.run_uuid)

바뀐 부분은 딱 한 줄이다. mlflow.sklearn.log_model 함수에 registered_model_name="LinearRegression" 인자를 추가하였다. (이 함수에 자세한 내용은 여기서 확인할 수 있다.)

이제 다시 이 MLflow 프로젝트를 실행하자.

$ mlflow run sklearn_logistic_regression --no-conda

로그를 보면 LinearRegression 이 이미 등록된 모델이므로, 등록된 모델의 새 버전을 만든다고 하고 Version 2 를 만들었다고 한다. (만약 ``registered_model_name값으로 넘겨준 값이 등록된 모델이 아닌 경우, 모델을 먼저 등록하고Version 1` 을 부여한다.)

웹 UI에 가서 확인해보자.

위처럼 LinearRegression 모델의 Latest Version이 Version 2 가 된 것을 볼 수 있고, 등록된 모델 상세 페이지에 들어가보면 아래처럼 Version 2 가 추가된 것을 볼 수 있다.

다른 두 번째 방법으로는 mlflow.register_model() 를 사용하는 것이다. 이 함수에는 model_uri  name 인자 값을 넘겨줘야 하는데 예시를 보면 바로 알 수 있다.

result = mlflow.register_model(
    model_uri="runs:/4268cde08c2c4fd08c6257b148ed2977/model",
    name="LinearRegresion"
)

model_uri  run_id  artifacts 내에 model 이 저장된 경로다.
name 은 등록할 때 사용할 이름이다. 위에서 registered_model_name 와 같은 개념이다.
좀 더 자세한 사용법은 여기를 확인하자.

세 번째 방법은 MlflowClient.create_registered_model()  MlflowClient.create_model_version() 를 사용하는 것이다. 마찬가지로 예시를 바로 보자.

from mlflow.tracking import MlflowClient

# 모델을 등록한다. 아직 버전이 없기 때문에 비어있다.
client = MlflowClient()
client.create_registered_model("LinearRegression")

# 등록된 모델에 버전을 등록한다.
result = client.create_model_version(
    name="LinearRegression",
    source="artifacts/0/4268cde08c2c4fd08c6257b148ed2977/artifacts/model",
    run_id="4268cde08c2c4fd08c6257b148ed2977"
)

이 정도만 설명해도 어느정도 설명이 된다 생각한다. create_model_version() 에 대한 자세한 내용은 여기를 확인하자.

 

등록된 모델 불러오기

Model Registry에 등록된 모델은 어디서든 불러올 수 있다.
위에서 등록한 모델을 불러오는 실습을 해보자.

먼저 load_registered_model.py 를 만들고 다음 코드를 입력하자.

# load_registered_model.py

import mlflow.pyfunc
import numpy as np

# 가져올 등록된 모델 이름
model_name = "LinearRegression"

# 버전을 기준으로 가져오고 싶을 때
model_version = 2
model = mlflow.pyfunc.load_model(
    model_uri=f"models:/{model_name}/{model_version}"
)

# 단계(stage)를 기준으로 가져오고 싶을 때
# stage = 'Staging'
# model = mlflow.pyfunc.load_model(
#     model_uri=f"models:/{model_name}/{stage}"
# )

X = np.array([[1], [2], [3]])
Y = model.predict(X)    
print(Y)

이제 MLflow Tracking Server 설정 후, 위 코드를 실행하자

$ export MLFLOW_TRACKING_URI="http://[ip]:5000"
$ python load_registered_model.py

위 사진 처럼 잘 불러와서 실행하는 것을 볼 수 있다.

등록된 모델 서빙하기

Model Registry에 등록된 모델은 다음처럼 바로 서빙이 가능하다.

# Tracking Server를 설정한다.
$ export MLFLOW_TRACKING_URI="http://[ip]:5000"

# 등록된 LinearRegression 모델의 Version 1을 서빙하는 서버를 띄운다.
$ mlflow models serve -m "models:/LinearRegression/1" --port 5001 --no-conda --host "0.0.0.0"

잘 서빙하는지 요청을 날려보자.

$ curl \
-d '{"columns":["x"], "data":[[1], [-1]]}' \
-H 'Content-Type: application/json; format=pandas-split' \
-X POST localhost:5001/invocations

 

응답이 잘 오는 것을 볼 수 있다.

 

그 외 제공해주는 것들

필수적으로 알아야할 것들은 어느정도 설명한 것 같고... 이 외에 다음과 같은 기능들이 더 있다.

  • MLflow 모델 설명 추가 또는 업데이트
  • MLflow 모델 이름 바꾸기
  • MLflow 모델의 단계(Stage) 전환
  • MLflow 모델 나열 및 검색
  • MLflow 모델 보관
  • MLflow 모델 삭제
  • 저장된 모델 등록
  • 지원되지 않는 기계학습 모델 등록

특히 모델의 단계 전환, 나열 및 검색 등은 CT(Continous Training)를 구성할 때 추가적으로 활용하면 좋을 거 같다는 생각이 든다. 자세한 내용은 여기를 확인하자.


정리

  • Model Registry는 실험 및 실행에서 기록한 모델들을 등록하고 불러올 수 있는 저장소다.
  • Model Registry에 등록되는 모델들은 버전 혹은 단계(Stage)를 가진다.
  • Model Registry에 모델을 등록하는 방법은 크게 2가지 방법이 있다.
    • 웹 UI를 사용하거나
    • mlflow 라이브러리에서 다음 3가지 방법을 사용하거나
      • log_model()  registered_model_name 의 값을 함께 넘겨주며 사용한다.
      • register_model() 를 사용한다.
      • create_registered_model()  create_model_version() 를 사용한다.
  • Model Registry에 등록된 모델은 mlflow model serve 명령어로 바로 서빙이 가능하다.
  • mlflow 라이브러리는 등록된 모델과 관련된 여러 액션을 제공해준다. 이는 CT등 파이프라인 자동화에서 활용해볼 수 있다.
반응형

'인공지능,AI,학습,ML,Tensorflow, Cafee2,MLFlow > MLFlow' 카테고리의 다른 글

MLFlow.6.MLflow Projects  (0) 2021.12.28
MLFlow.6.More about Models  (0) 2021.12.28
MLflow.4.Tracking Server  (0) 2021.12.27
MLflow.3.Experiments & Runs  (0) 2021.12.24
MLflow.2.Automatic logging  (0) 2021.12.24