日志模型依赖
在本文中,您将了解如何日志模型构件的模型及其依赖项,因此他们可以在您的环境中服务等生产任务模型。
日志Python包依赖关系模型
MLflow原生支持一些Python毫升库,MLflow可以可靠的日志为模型,使用这些库的依赖关系。看到内置模型口味。
例如,MLflow支持scikit-learnmlflow。sklearn模块,和命令mlflow.sklearn.log_model日志sklearn版本。这同样适用于autologging与ML库。看到MLflow github库额外的例子。
为毫升库,可以安装皮普安装PACKAGE_NAME = =版本
口味,但没有内置MLflow模型,你可以登录这些包使用mlflow.pyfunc.log_model方法。确保日志的库版本的需求,例如,f”nltk = = {nltk.__version__}”
而不是仅仅nltk
。
mlflow.pyfunc.log_model
支持日志记录:
公共和自定义库打包为鸡蛋或车轮。
公共包PyPI上和私下自己包PyPI服务器托管。
与mlflow.pyfunc.log_model自动,MLflow试图推断出的依赖关系。MLflow推断使用的依赖关系mlflow.models.infer_pip_requirements,并记录他们让
文件作为模型工件。
在旧版本,MLflow有时没有自动识别所有Python需求,特别是图书馆不是一个内置模型的味道。在这些情况下,您可以指定额外的依赖关系extra_pip_requirements
参数log_model
命令。
重要的
你也可以覆盖整个的需求conda_env
和pip_requirements
参数,但是这样做通常是沮丧,因为这将覆盖的依赖性MLflow自动回升。看到一个如何使用的例子“pip_requirements”参数覆盖需求。
自定义模型日志
场景更多自定义模型记录是必要的,您可以:
写一个自定义Python模型。这样做允许您子类
mlflow.pyfunc.PythonModel
自定义初始化和预测。这种方法适用于定制Python-only模型。一个简单的例子,请参阅添加N模型示例。
对于一个更复杂的示例,请参见自定义XGBoost模型示例。
写一个定制的味道。在这个场景中,您可以自定义日志记录超过通用
pyfunc
味道,但这样做需要更多的工作来实现。
自定义Python代码
你可能已经安装了Python代码依赖项不能使用%皮普安装
命令,如一个或多个. py
文件。
日志记录模式时,您可以告诉MLflow模型可以找到这些依赖项通过使用在指定的路径code_path
参数mlflow.pyfunc.log_model。通过使用MLflow存储任何文件或目录code_path
作为构件的模型代码目录中。当加载模型,MLflow添加这些文件或目录到Python路径。这条路线也适用于自定义Python轮子,可以包括在模型中使用code_path
,就像. py
文件。
mlflow。pyfunc。log_model(artifact_path=artifact_path,code_path=(文件名。py),data_path=data_path,conda_env=conda_env,)
日志非python包依赖关系模型
MLflow并不会自动捡起非python依赖,比如Java包,R包,和本地包(比如Linux包)。这些包,你需要记录额外的数据。
依赖项列表:砖推荐日志工件与模型指定这些非python依赖性。这可能是一个简单的
. txt
或. json
文件。mlflow.pyfunc.log_model允许您指定使用这些额外的工件工件
论点。自定义包:自定义Python一样依赖以上,您需要确保部署环境中可用的包。等包在中央位置Maven中央或你自己的库,确保可以在得分位置或服务时间。为私人包不托管在别处,你可以登录包以及模型的构件。
部署模型的依赖性
当从MLflow跟踪服务器部署模型或模型注册表,您需要确保安装部署环境有正确的依赖关系。最简单的路径可能取决于您的部署模式:批量/流或在线服务,和类型的依赖关系。
所有部署模式,砖推荐推理运行在相同的运行时版本中使用培训,自砖运行时的各种库中,您创建了您的模型已经安装。MLflow砖自动保存的运行时版本MLmodel
元数据文件中databricks_runtime
领域,如databricks_runtime:10.2.x-cpu-ml-scala2.12
。
在线服务:砖模式
Python的依赖关系让
文件,砖和MLflow处理一切公共PyPI依赖性。类似地,如果您指定. py
文件或车轮模型通过使用登录时code_path
为您自动参数,MLflow加载这些依赖项。
在线服务:第三方系统或码头工人的容器中
如果你的场景需要提供第三方服务的解决方案或自己的Docker-based解决方案,您可以导出您的模型作为一个码头工人容器。
砖推荐以下第三方Python自动处理依赖关系的服务。然而,对于非python依赖性,包括容器需要修改。
MLflow Docker-based的码头工人集成服务解决方案:MLflow模型build-docker
批处理和流媒体工作
批处理和流媒体评分应该运行砖的工作。通常一个笔记本工作就足够了,最简单的方法代码是使用做准备砖模型注册生成一个得分的笔记本。
下面描述了过程和步骤,以确保安装的依赖关系和相应的应用:
开始你的得分相同的集群砖在使用运行时版本的培训。读了
databricks_runtime
场的MLmodel
元数据文件,并开始一个集群运行时版本。接下来,安装任何非python依赖性。确保你非python依赖访问您的部署环境,您可以:
手动安装的非python依赖性模型砖集群作为集群配置的一部分之前运行推理。
或者,您可以编写自定义逻辑在你进球的工作部署自动化的安装到您的集群的依赖关系。假设你救了你非python依赖关系描述的构件日志非python包依赖关系模型,这种自动化可以安装库使用库API。或者,您可以编写特定代码来生成一个集群级初始化脚本安装的依赖关系。
你得分的工作安装Python工作中执行环境的依赖性。在砖,模型注册表允许您生成一个笔记本的推理这是否适合你。
当你使用砖模型注册生成一个得分的笔记本,笔记本包含Python代码安装在模型的依赖性
让
文件。你笔记本的工作批处理或流得分,这段代码初始化你的笔记本环境,这样模型依赖安装和准备您的模型。
MLflow处理任何自定义Python代码中
code_path
参数log_model
。这段代码添加到Python路径模型的预测()
方法被调用。你也可以这样做:手动调用mlflow.pyfunc.spark_udf与
virtualenv env_manager = [' ' / ' conda ']
论点。提取的要求使用mlflow.pyfunc.get_model_dependencies和安装使用% pip安装。
请注意
如果你指定
. py
文件或车轮模型登录时使用code_path
为您自动参数,MLflow加载这些依赖项。