공식문서: https://mlflow.org/docs/latest/index.html
django sqlight 사용
▪ mlflow server --backend-store-uri sqlite:///mlflow.db --default-artifact-root ./artifacts
같은 실험, 같은 모델일 때 버전관리가 가능하다.
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)
🥽 모델 자세히 살펴보기
RunName이나 Model을 클릭해서 들어오면
Autolog임으로 Parameters에는 별도로 지정하지 않아도 존재한다.
Metris(4) : 위 코드를 보면 validaton_split을 지정하였고 metrics는 accuracy로 지정하였다. 기본적인 loss와 accuracy가 tran, validaton 데이터별로 나온다.
🥽 모델만 모아 놓은 Models 탭
🥽 모델 라이프 사이클 관리, 4단계
코드에서 아래와 같이 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)