开始
加载和管理数据
处理数据
政府
引用和资源
2023年8月1日更新
给我们反馈
一个MLflow模型包装机器学习模型是一个标准的格式,可用于多种下游工具示例中,批处理推理在Apache火花或实时通过REST API服务。格式定义了一个约定,允许您保存在不同的模型口味(python函数、pytorch sklearn等等),可以理解不同的模型服务和推理平台bob体育客户端下载。
当你登录一个模型,MLflow自动日志让和conda.yaml文件。您可以使用这些文件来创建模型开发环境和安装使用的依赖关系virtualenv(推荐)或conda。
让
conda.yaml
virtualenv
conda
重要的
蟒蛇inc .)更新他们的服务条款为anaconda.org频道。基于新的服务条款你可能需要一个商业许可证如果你依靠蟒蛇的包装和分布。看到蟒蛇商业版常见问题解答为更多的信息。你使用任何蟒蛇的通道是由他们的服务条款。
MLflow模型记录之前v1.18(砖运行时的8.3毫升或更早)与conda默认登录违约通道(https://repo.anaconda.com/pkgs/作为一个依赖项。因为这个许可改变,砖已经停止使用违约渠道模式登录使用MLflow v1.18以上。默认通道记录是现在conda-forge,点在社区管理https://conda-forge.org/。
违约
conda-forge
如果你登录一个模型之前MLflow v1.18没有排除违约通道从conda环境模型,该模型可能有依赖违约频道,你可能没有。手动确认模型是否有这种依赖性,你可以检查通道的价值conda.yaml打包的文件与记录模型。例如,一个模式conda.yaml与一个违约通道的依赖可能看起来像这样:
通道
渠道:- - - - - -违约依赖关系:- - - - - -python = 3.8.8- - - - - -皮普- - - - - -皮普:- - - - - -mlflow- - - - - -scikit-learn = = 0.23.2- - - - - -cloudpickle = = 1.6.0的名字:mlflow-env
因为砖不能确定你使用的水蟒库与模型进行交互是允许你和蟒蛇的关系下,砖不是迫使其客户进行任何更改。如果你使用Anaconda.com回购通过使用砖是允许在蟒蛇的条件下,您不需要采取任何行动。
如果你想换频道中使用模型的环境中,你可以注册模型到模型中注册一个新的conda.yaml。你可以通过指定的通道conda_env参数的log_model ()。
conda_env
log_model ()
更多的信息log_model ()API,看到MLflow味道你正在与文档模型,例如,为scikit-learn log_model。
的更多信息conda.yaml文件,请参见MLflow文档。
MLflow记录模型跟踪服务器,使用mlflow。<模型类型> .log_model(模型,…)。
mlflow。<模型类型> .log_model(模型,…)
加载之前记录模型推理或进一步发展,使用mlflow。<模型类型> .load_model (modelpath),在那里modelpath是下列之一:
mlflow。<模型类型> .load_model (modelpath)
modelpath
run-relative路径(如运行:/ {run_id} / {model-path})
运行:/ {run_id} / {model-path}
DBFS路径
一个注册模式路径(如模型:/ {model_name} / {model_stage})。
模型:/ {model_name} / {model_stage}
为选项的完整列表加载MLflow模型,明白了MLflow文档中引用的构件。
对于Python MLflow模型,使用一个额外的选项mlflow.pyfunc.load_model ()作为一个通用的Python函数加载模型。您可以使用下面的代码片段来加载模型和数据分。
mlflow.pyfunc.load_model ()
模型=mlflow。pyfunc。load_model(model_path)模型。预测(model_input)
作为一种替代方法,您可以导出模型作为一个Apache火花UDF用于火花集群上得分,要么作为批处理作业或实时火花流的工作。
#负载作为一个火花DataFrame输入数据表input_data=火花。表(input_table_name)model_udf=mlflow。pyfunc。spark_udf(model_path)df=input_data。withColumn(“预测”,model_udf())
精确加载模型,您应该确保模型依赖加载到笔记本电脑环境中使用正确的版本。砖运行时的10.5毫升以上,MLflow警告说如果不匹配检测当前环境和模型之间的依赖关系。
额外的功能来简化恢复模型依赖性砖中包含运行时11.0毫升以上。在砖运行时的11.0毫升以上,pyfunc味道模型,你可以叫mlflow.pyfunc.get_model_dependencies检索和下载模型依赖性。这个函数返回一个路径依赖文件,你可以安装使用%皮普安装<文件路径>。当你加载模型作为PySpark UDF,指定env_manager = " virtualenv "在mlflow.pyfunc.spark_udf调用。这个恢复模型依赖的PySpark UDF和不影响外部环境。
pyfunc
mlflow.pyfunc.get_model_dependencies
%皮普安装<文件路径>
env_manager = " virtualenv "
mlflow.pyfunc.spark_udf
您还可以使用该功能在砖运行时的10.5或低于手动安装MLflow 1.25.0或以上版本:
%皮普安装“mlflow > = 1.25.0”
额外的信息关于如何日志模型依赖性(Python和非Python)和工件,明白了日志模型依赖。
学习如何日志模型依赖性和自定义构件模型为:
部署模型的依赖性
_
当你登录一个模型在砖笔记本,砖自动生成的代码片段,您可以复制并使用加载和运行模式。查看这些代码片段:
导航到屏幕运行的运行生成的模型。(见查看笔记本的实验如何显示屏幕运行。)
滚动到工件部分。
点击记录模型的名称。这会打开一个面板右侧显示代码可以使用加载记录模型和火花或熊猫DataFrames作出预测。
日志记录模型的例子,请参阅示例跟踪机器学习培训运行示例。对加载记录推理模型的一个例子,看下面的例子。
你可以注册模型MLflow模型注册集中式存储模型,提供了一组UI和api管理MLflow模型的完整生命周期。说明如何使用模型注册中心来管理模型在砖统一目录,看看生命周期管理模型统一目录。使用工作空间模型注册表,看工作空间模型注册表数据砖。
注册一个模型使用API,使用mlflow.register_model(“运行:/ {run_id} / {model-path}”,“{registered-model-name}”)。
mlflow.register_model(“运行:/ {run_id} / {model-path}”,“{registered-model-name}”)
在本地保存一个模型,使用mlflow。<模型类型> .save_model(模型,modelpath)。modelpath必须是一个DBFS路径。例如,如果您使用一个DBFS位置dbfs: / my_project_models来存储你的项目工作,你必须使用模型的路径/ dbfs my_project_models:
mlflow。<模型类型> .save_model(模型,modelpath)
dbfs: / my_project_models
/ dbfs my_project_models
modelpath=“- / dbfs / my_project_models /模型% f- - - - - -% f”%(α,l1_ratio)mlflow。sklearn。save_model(lr,modelpath)
对于MLlib模型,使用毫升管道。
你可以下载记录模型构件(如模型文件、阴谋和度量)注册模型与不同的api。
Python API例子:
从mlflow.store.artifact.models_artifact_repo进口ModelsArtifactRepositorymodel_uri=MlflowClient。get_model_version_download_uri(model_name,model_version)ModelsArtifactRepository(model_uri)。download_artifacts(artifact_path=”“)
Java API例子:
MlflowClientmlflowClient=新MlflowClient();/ /得到注册模型的模型URI版本。字符串modelURI=mlflowClient。getModelVersionDownloadUri(modelName,modelVersion);/ /或者直接下载模型工件。文件modelFile=mlflowClient。downloadModelVersion(modelName,modelVersion);
CLI命令例子:
mlflow工件下载- - -工件- - - - - -uri模型:/ <的名字> / <版本|阶段>
您可以部署一个模型使用第三方服务框架MLflow内置的部署工具。