快速开始
安装MLflow
您通过运行安装MLflow:
- Python
- R
pip install mlflow
注意
您无法在Python的MacOS系统安装上安装MLflow。我们建议使用Homebrew包管理器 安装Python 3 。(在这种情况下,现在安装MLflow )。brew install python
pip3 install mlflow
此时,我们建议您按照教程了解如何在日常工作流程中利用MLflow。
正在下载快速入门
通过克隆MLflow来下载快速入门代码,然后cd进入存储库的子目录。我们将使用此工作目录来运行。git clone https://github.com/mlflow/mlflow
examples
quickstart
我们避免直接从我们的MLflow克隆中运行,因为这样做会导致教程从源代码中使用MLflow,而不是使用MLflow的PyPi安装。
使用Tracking API
该MLflow跟踪API可以让你从你的数据的科学代码登录度量和工件(文件),看看您运行的历史。您可以通过编写如下的简单Python脚本来尝试它(此示例也包括在内quickstart/mlflow_tracking.py
):
- Python
- R
import os
from mlflow import log_metric, log_param, log_artifact
if __name__ == "__main__":
# Log a parameter (key-value pair)
log_param("param1", 5)
# Log a metric; metrics can be updated throughout the run
log_metric("foo", 1)
log_metric("foo", 2)
log_metric("foo", 3)
# Log an artifact (output file)
with open("output.txt", "w") as f:
f.write("Hello world!")
log_artifact("output.txt")
查看跟踪UI
默认情况下,无论您在何处运行程序,跟踪API都会将数据写入文件到mlruns
目录中。然后,您可以运行MLflow的跟踪UI:
- Python
- R
mlflow ui
注意
如果您在MLflow UI或错误日志中看到消息,请尝试使用而不是。[CRITICAL] WORKER TIMEOUT
http://localhost:5000
http://127.0.0.1:5000
或者,您可以将MLflow配置为将运行记录到远程服务器以集中管理结果或在团队中共享它们。
运行MLflow项目
MLflow允许您将代码及其依赖项打包为一个可以在其他数据上以可重现的方式运行的项目。每个项目都包含其代码和MLproject
定义其依赖项的文件(例如,Python环境),以及可以在项目中运行的命令以及它们采用的参数。
您可以使用命令轻松运行现有项目,该命令从本地目录或GitHub URI运行项目:mlflow run
mlflow run sklearn_elasticnet_wine -P alpha=0.5
mlflow run https://github.com/mlflow/mlflow-example.git -P alpha=5
有一个示例项目tutorial
,包括一个MLproject
指定其依赖项的文件。如果您尚未配置跟踪服务器,则项目会将其Tracking API数据记录在本地mlruns
目录中,以便您可以使用这些运行来查看这些运行。mlflow ui
注意
默认情况下,使用conda安装所有依赖项。要在不使用的情况下运行项目,可以提供选项 。在这种情况下,您必须确保已在Python环境中安装必要的依赖项。mlflow run
conda
--no-conda
mlflow run
有关更多信息,请参阅MLflow项目。
储蓄和服务模式
MLflow包括一种通用MLmodel
格式,用于从各种风格的各种工具中 保存模型。例如,许多模型可以作为Python函数提供,因此文件可以声明每个模型应该如何解释为Python函数,以便让各种工具为它提供服务。MLflow还包括用于在本地运行此类模型并将其导出到Docker容器或商业服务平台的工具。MLmodel
为了说明此功能,mlflow.sklearn
程序包可以将scikit-learn模型记录为MLflow工件,然后再次加载它们以进行服务。有一个示例培训应用程序 sklearn_logistic_regression/train.py
,您可以按如下方式运行:
python sklearn_logistic_regression/train.py
运行示例时,它会输出该实验的MLflow运行ID。如果你看一下 ,你还会看到运行保存了一个包含 描述文件和pickle scikit-learn模型的文件夹。您可以将工件ID和工件目录(此处为“模型”)中的模型路径传递给各种工具。例如,MLflow包含一个用于基于python的模型的简单REST服务器:mlflow ui
model
MLmodel
mlflow models serve -m runs:/<RUN_ID>/model
注意
默认情况下,服务器在端口5000上运行。如果该端口已在使用中,请使用-port选项指定其他端口。例如:mlflow models serve -m runs:/<RUN_ID>/model --port 1234
启动服务器后,您可以传递一些示例数据并查看预测。
以下示例用于curl
将具有方向的JSON序列化pandas DataFrame发送split
到模型服务器。有关pyfunc模型服务器接受的输入数据格式的更多信息,请参阅MLflow部署工具文档。
curl -d '{"columns":["x"], "data":[[1], [-1]]}' -H 'Content-Type: application/json; format=pandas-split' -X POST localhost:5000/invocations
返回:
{"predictions": [1, 0]}