模型 API

MLflow 入门

Weston Bassler

Senior MLOps Engineer

MLflow REST API

api

1 istock.com
MLflow 入门

模型 API

  • 保存

  • 记录

  • 加载

Scikit-Learn

1 wikipedia.org
MLflow 入门

模型 API 函数

# 将模型保存到本地文件系统
mlflow.sklearn.save_model(model, path)
# 将模型作为 artifact 记录到 MLflow Tracking
mlflow.sklearn.log_model(model, artifact_path)
# 从本地或 MLflow Tracking 加载模型
mlflow.sklearn.load_model(model_uri)
MLflow 入门

加载模型

  • 本地文件系统 - relative/path/to/local/model/Users/me/path/to/local/model

  • MLflow Tracking - runs:/<mlflow_run_id>/run-relative/path/to/model

  • 支持 S3 - s3://my_bucket/path/to/model

MLflow 入门

保存模型

# 模型
lr = LogisticRegression()
lr.fit(X, y)

# 本地保存模型 mlflow.sklearn.save_model(lr, "local_path")
ls local_path/
MLmodel            model.pkl        requirements.txt        python_env.yaml
MLflow 入门

加载本地模型

# 从本地路径加载模型
model = mlflow.sklearn.load_model("local_path")

# 显示模型 model
LogisticRegression()
MLflow 入门

记录模型

# 模型
lr = LogisticRegression(n_jobs=n_jobs)
lr.fit(X, y)

# 记录模型 mlflow.sklearn.log_model(lr, "tracking_path")
MLflow 入门

跟踪 UI

跟踪 UI

MLflow 入门

最后的活动运行

# runs 的格式
runs:/<mlflow_run_id>/run-relative/path/to/model
# 获取最后的活动运行
run = mlflow.last_active_run()

run
<Run: data=<RunData: metrics={}, params={}, 
tags={'mlflow.runName': 'run_name'}>, 
 info=<RunInfo: artifact_uri='uri', end_time='end_time', 
 experiment_id='0', lifecycle_stage='active', run_id='run_id', 
 run_name='name', run_uuid='run_uuid', start_time=start_time, 
 status='FINISHED', user_id='user_id'>>
MLflow 入门

最后活动运行的 ID

# 获取最后的活动运行
run = mlflow.last_active_run()
# 显示最后一次运行的 run_id
run.info.run_id
'8c2061731caf447e805a2ac65630e70c'
MLflow 入门

设置 run id

# 获取最后的活动运行
run = mlflow.last_active_run()

# 设置 run_id 变量 run_id = run.info.run_id
run_id
'8c2061731caf447e805a2ac65630e70c'
MLflow 入门

从 MLflow Tracking 加载模型

# 将 run_id 作为 f-string 文字传入
model = mlflow.sklearn.load_model(f"runs:/{run_id}/tracking_path")

# 显示模型 model
LogisticRegression()
MLflow 入门

¡Vamos a practicar!

MLflow 入门

Preparing Video For Download...