运行 MLflow 项目

MLflow 入门

Weston Bassler

Senior MLOps Engineer

API 与命令行

工作流

MLflow 入门

Projects API

mlflow.projects

mlflow.projects.run()

  • uri - 指向 MLproject 文件的 URI

  • entry_point - 从 MLproject 启动的入口点

  • experiment_name - 记录训练运行的实验

  • env_manager - Python 环境管理器:localvirtualenv

# 运行 MLflow 项目
mlflow.projects.run(

uri='./',
entry_point='main',
experiment_name='My Experiment',
env_manager='virtualenv'
)
MLflow 入门

MLproject

name: salary_model
python_env: python_env.yaml
entry_points:
  main:
    command: "python train_model.py"
MLflow 入门

train_model.py

# 导入库与模块
import mlflow
import mlflow.sklearn
import pandas as pd
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() # 训练模型 lr = LinearRegression() lr.fit(X_train, y_train)
MLflow 入门

Projects 运行

# 导入 MLflow 模块
import mlflow

# 运行本地项目 mlflow.projects.run(uri='./', entry_point='main', experiment_name='Salary Model')
MLflow 入门

运行输出

# 运行本地项目
mlflow.projects.run(uri='./', entry_point='main', 
                    experiment_name='Salary Model')
2023/04/02 14:33:23 INFO mlflow.projects: 'Salary Model' 不存在。
正在创建新实验

2023/04/02 14:33:23 INFO mlflow.utils.virtualenv: 若未安装,将安装 python 3.10.8 2023/04/02 14:33:23 INFO mlflow.utils.virtualenv: 正在创建新环境 /.mlflow/envs/mlflow-44f5094bba686a8d4a5c772 created virtual environment CPython3.10.8.final.0-64 in 236ms 2023/04/02 14:33:23 INFO mlflow.utils.virtualenv: 正在安装依赖
MLflow 入门

运行输出

2023/04/02 14:33:59 INFO mlflow.projects.backend.local: === 正在运行命令 
'source /.mlflow/envs/mlflow-44f5094bba686a8d4a5c772/bin/activate && python 
train_model.py',运行 ID 为 '562916d45aeb48ec84c1c393d6e3f5b6' ===

2023/04/02 14:34:34 INFO mlflow.projects: === 运行(ID '562916d45aeb48ec84c1c393d6e3f5b6')成功 ===
MLflow 入门

MLflow 跟踪

MLflow 跟踪界面

MLflow 入门

命令行

mlflow run
  • --entry-point - 从 MLproject 启动的入口点

  • --experiment-name - 记录训练运行的实验

  • --env-manager - Python 环境管理器:localvirtualenv

  • URI - 指向 MLproject 文件的 URI

MLflow 入门

运行命令

# 从 Salary Model 实验运行 main 入口点
mlflow run --entry-point main --experiment-name "Salary Model" ./
2023/04/02 15:23:34 INFO mlflow.utils.virtualenv: 若未安装,将安装 python 3.10.8
2023/04/02 15:23:34 INFO mlflow.utils.virtualenv: 环境 
/.mlflow/envs/mlflow-44f5094bba686a8d4a5c772 已存在

2023/04/02 15:23:34 INFO mlflow.projects.backend.local: === 正在运行命令 'source /Users/weston/.mlflow/envs/mlflow-44f5094bba686a8d4a5c772/bin/activate && python train_model.py',运行 ID 为 'da5b37b6f53245e5bca59ba8ed6d7dc1' ===
2023/04/02 15:23:38 INFO mlflow.projects: === 运行 (ID 'da5b37b6f53245e5bca59ba8ed6d7dc1') 成功 ===
MLflow 入门

Passons à la pratique !

MLflow 入门

Preparing Video For Download...