매개변수 지정

MLflow 소개

Weston Bassler

Senior MLOps Engineer

매개변수

코딩

1 unsplash.com
MLflow 소개

매개변수 지정

parameter_1_name:

type: data_type
default: default_value
parameter_2_name:
type: data_type
default: default_value
MLflow 소개

매개변수 지정

데이터 타입

  • float, string 등
  • 기본값은 string

기본값

  • 실행 시 지정 없으면 사용하는 값
  • True, False, None 등
MLflow 소개

Parameters 블록

name: project_name
python_env: python_env.yaml
entry_points:
  main:

parameters: parameter_1: type: data_type default: default_value parameter_2: type: data_type default: default_value
command: "python train.py {parameter_1_name} {parameter_2_name}"
MLflow 소개

train_model.py

# 라이브러리와 모듈 임포트
import mlflow
import mlflow.sklearn
import pandas as pd

import sys
from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split # 학습 데이터 df = pd.read_csv('Salary_predict.csv') X = df[["experience", "age", "interview_score"]] y = df[["Salary"]]
MLflow 소개

train_model.py

# 학습/테스트 분할 
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7,
                                                    random_state=0)

# Scikit-learn 플레이버 자동 로깅 설정
mlflow.sklearn.autolog()

# 매개변수 n_jobs_param = int(sys.argv[1]) fit_intercept_param = bool(sys.argv[2])
# 모델 학습 lr = LinearRegression(n_jobs=n_jobs_param, fit_intercept=fit_intercept_param)
lr.fit(X_train, y_train)
MLflow 소개

MLproject

name: salary_model
python_env: python_env.yaml
entry_points:
  main:

parameters: n_jobs_param: type: int default: 1 fit_intercept_param: type: bool default: True
command: "python train_model.py {n_jobs_param} {fit_intercept_param}"
MLflow 소개

매개변수 실행

Python

mlflow.projects.run()
parameters={
        'parameter_1': data_value, 
        'parameter_2': data_value, 
    }

CLI

mlflow run
-P parameter_1=parameter_1_value
-P parameter_2=parameter_2_value
MLflow 소개

Projects 실행

# MLflow 모듈 임포트
import mlflow

# 로컬 프로젝트 실행
mlflow.projects.run(
    uri='./', entry_point='main', 
    experiment_name='Salary Model',

parameters={ 'n_jobs_param': 2, 'fit_intercept_param': False
})
MLflow 소개

출력

2023/04/07 18:50:22 INFO mlflow.projects.backend.local: === Running command 'source 
/.mlflow/envs/mlflow/bin/activate && python train_model.py 2 False' in run with ID
'422a6f589c984049ac03698efec8a286' ===

2023/04/07 18:50:28 INFO mlflow.projects: === Run (ID '422a6f589c984049ac03698efec8a286') succeeded ===
MLflow 소개

실행 명령

# Salary Model 실험의 main 엔트리 포인트 실행
mlflow run --entry-point main --experiment-name "Salary Model" \

-P n_jobs_param=3 -P fit_intercept_param=True ./
MLflow 소개

출력

# Salary Model 실험의 main 엔트리 포인트 실행
mlflow run --entry-point main --experiment-name "Salary Model" \
    -P n_jobs_param=3 -P fit_intercept_param=True ./
2023/04/07 19:08:51 INFO mlflow.projects.backend.local: === Running command 'source 
/.mlflow/envs/mlflow/bin/activate && python train_model.py 3 True' in run with ID 
'7c0a8885a3c7475a9aafc43c6fcae04d' ===
MLflow 소개

Lass uns üben!

MLflow 소개

Preparing Video For Download...