遗留MLflow模型在砖
预览
这个特性是在公共预览。
重要的
这个文档已经退休了,可能不会被更新。产品、服务或技术中提到的这些内容不再支持。
本文中的指导是遗产MLflow模型服务。砖建议您迁移模型的服务工作流模型增强模型的服务端点部署和可伸缩性。有关更多信息,请参见模型服务与砖。
遗留MLflow模型服务允许您从模型注册REST端点主机机器学习模型,基于的可用性模型自动更新版本和阶段。它使用一个单节点集群运行在自己的账户在现在所谓的经典数据平面。这个数据平面包括虚拟网络及其相关计算资源集群等笔记本和工作,职业和经典SQL仓库,和遗留模型服务端点。
当你使模型对于一个给定的注册服务模型、砖自动创建一个独特的集群模型和部署模型的所有non-archived版本集群。砖重新启动集群时如果发生错误,并终止集群禁用模型服务的模型。模型服务自动同步模型注册并部署任何新注册模型版本。部署模型版本可以查询标准REST API请求。使用其标准砖对请求进行身份验证的模型验证。
该服务在预览,砖建议使用低吞吐量和非关键应用程序。吞吐量是200每秒和目标可用性目标是99.5%,虽然没有保证了。此外,有一个16 MB的每个请求的负载大小限制。
每个模型版本是使用MLflow部署模型部署并运行在Conda环境中由其指定依赖项。
请注意
只要保持集群服务启用,即使不存在活跃的模型版本。终止服务集群,禁用模型为注册服务模型。
集群的集群被认为是万能的,通用的工作负载的定价。
全球init脚本不是服务集群上运行模型。
重要的
蟒蛇inc .)更新他们的服务条款为anaconda.org频道。基于新的服务条款你可能需要一个商业许可证如果你依靠蟒蛇的包装和分布。看到蟒蛇商业版常见问题解答为更多的信息。你使用任何蟒蛇的通道是由他们的服务条款。
MLflow模型记录之前v1.18(砖运行时的8.3毫升或更早)与conda默认登录违约
通道(https://repo.anaconda.com/pkgs/作为一个依赖项。因为这个许可改变,砖已经停止使用违约
渠道模式登录使用MLflow v1.18以上。默认通道记录是现在conda-forge
,点在社区管理https://conda-forge.org/。
如果你登录一个模型之前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 ()
。
更多的信息log_model ()
API,看到MLflow味道你正在与文档模型,例如,为scikit-learn log_model。
的更多信息conda.yaml
文件,请参见MLflow文档。
模型从模型注册服务
在注册表砖从模型的模型服务是可用的。
启用和禁用服务模型
你让一个模型为其服务注册页面模型。
单击服务选项卡。如果模型是服务尚未启用,支持服务按钮出现。
点击支持服务。服务选项卡出现了状态显示为等待。几分钟后,状态更改好了。
禁用一个服务模型,点击停止。
模型版本uri
每个部署模型版本被分配一个或多个独特的uri。至少,每个模型版本分配URI构造如下:
< databricks-instance > /模型/ < registered-model-name > / <模型版本> /调用
例如,调用模型注册的版本1iris-classifier
使用这个URI:
https:// < databricks-instance > /模型/ iris-classifier / 1 /调用
你也可以叫一个模型版本的阶段。例如,如果版本1的生产阶段,也可以使用这个URI得分:
https:// < databricks-instance > /模型/ iris-classifier /生产/调用
顶部的可用模式uri列表出现在服务选项卡页面模型的版本。
分数部署模型版本
取得一个部署模型中,您可以使用UI或发送一个REST API请求的URI模式。
分数通过REST API请求
你可以发送一个请求通过REST API使用得分标准砖的身份验证。下面的例子演示使用个人身份验证访问令牌MLflow 1. x。
给定一个MODEL_VERSION_URI
就像https:// < databricks-instance > /模型/ iris-classifier /生产/调用
(< databricks-instance >
是砖实例的名称)和一个砖REST API的令牌DATABRICKS_API_TOKEN
下面的例子显示如何查询服务模型:
下面的例子反映了评分模型格式创建MLflow 1. x。如果你喜欢使用MLflow 2.0,你需要更新你的请求负载格式。
片段查询模型接受dataframe输入。
curl - x POST - u令牌:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json内容类型:\- d”({“sepal_length”: 5.1,“sepal_width”: 3.5,“petal_length”: 1.4,“petal_width”: 0.2}]“
片段查询模型接受张量输入。张量的输入应格式化中描述TensorFlow服务的API文档。
curl - x POST - u令牌:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json内容类型:\- d{“输入”:[[5.1,3.5,1.4,0.2]]}”
进口numpy作为np进口熊猫作为pd进口请求defcreate_tf_serving_json(数据):返回{“输入”:{的名字:数据(的名字]。tolist()为的名字在数据。键()}如果isinstance(数据,dict)其他的数据。tolist()}defscore_model(model_uri,databricks_token,数据):头={“授权”:f“不记名{databricks_token}”,“内容类型”:“application / json”,}data_json=数据。to_dict(东方=“记录”)如果isinstance(数据,pd。DataFrame)其他的create_tf_serving_json(数据)响应=请求。请求(方法=“职位”,头=头,url=model_uri,json=data_json)如果响应。status_code! =200年:提高异常(f“请求失败状态{响应。status_code},{响应。文本}”)返回响应。json()#接受大熊猫DataFrames评分模型数据=pd。DataFrame([{“sepal_length”:5.1,“sepal_width”:3.5,“petal_length”:1.4,“petal_width”:0.2}))score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,数据)#得分一个接受张量的模型数据=np。asarray([[5.1,3.5,1.4,0.2]])score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,数据)
可以得分数据集掌权BI桌面使用以下步骤:
打开数据集你想得分。
去转换数据。
在左边面板中右键单击并选择创建新的查询。
去视图>高级编辑器。
用下面的代码片段,替换查询身体后填入一个适当的
DATABRICKS_API_TOKEN
和MODEL_VERSION_URI
。(数据集作为表)作为表= >让call_predict=(数据集作为表)作为列表= >让apiToken=DATABRICKS_API_TOKEN,modelUri=MODEL_VERSION_URI,responseList=Json。文档(网络。内容(modelUri,(头=(#“内容类型”=“application / json”,#“授权”=文本。格式(无记名# {0},{apiToken})),内容=Json。FromValue(数据集)]))在responseList,predictionList=列表。结合(列表。变换(表。分裂(数据集,256年),(x)= >call_predict(x))),predictionsTable=表。FromList(predictionList,(x)= >{x},{“预测”}),datasetWithPrediction=表。加入(表。AddIndexColumn(predictionsTable,“指数”),“指数”,表。AddIndexColumn(数据集,“指数”),“指数”)在datasetWithPrediction
名称查询你想要的模型名称。
打开高级查询编辑器为你的数据集和应用模型的功能。
监控服务模型
服务页面显示状态指标服务集群以及各个模型版本。
检查服务集群的状态,使用模型的事件选项卡,显示一个列表的所有服务事件模型。
检查单个模型的状态版本,单击模型版本选项卡并滚动到视图日志或版本的事件选项卡。
定制服务集群
定制服务集群,使用集群设置选项卡上的服务选项卡。
修改内存大小和数量的核心服务集群,使用实例类型下拉菜单中选择所需的集群配置。当你点击保存,现有的集群是终止并创建一个新的集群与指定的设置。
添加一个标签,类型的名称和值添加标签字段并单击添加。
编辑或删除现有的标签,点击一个图标的行动列的标签表。
功能存储整合
遗留模型可以自动查找服务从在线商店发布特性值。
. .aws:
砖遗产MLflow模型服务支持自动功能查找从这些在线商店:- - - - - -亚马逊DynamoDB(半.3.8和以上)- - - - - -亚马逊极光(MySQL- - - - - -兼容的)- - - - - -亚马逊RDSMySQL. .azure::砖遗产MLflow模型服务支持自动功能查找从这些在线商店:- - - - - -Azure宇宙DB(半.5.0和以上)- - - - - -Azure数据库为MySQL
已知的错误
ResolvePackageNotFound:pyspark = 3.1.0
这个错误可能发生取决于如果一个模型pyspark
和记录使用砖运行时的8.倍。如果你看到这个错误,指定pyspark
版本明确记录模型时,使用“conda_env”参数。
未被认可的内容类型参数:格式
这个错误可能发生的新的MLflow 2.0得分协议格式。如果你看到这个错误,你可能使用一个过时的得分请求格式。解决错误,您可以:
更新你的得分请求格式的最新协议。
请注意
下面的例子反映了得分格式在MLflow 2.0中引入的。如果你喜欢使用MLflow 1。x,你可以修改
log_model ()
API调用,包括所需的MLflow版本依赖的extra_pip_requirements
参数。这样做可以确保使用适当的得分格式。mlflow。<味道>。log_model(…,extra_pip_requirements=(“mlflow = = 1 *”。])
查询模型接受大熊猫dataframe输入。
curl - x POST - u令牌:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json内容类型:\- d”{“dataframe_records”: [{”sepal_length (cm)”:5.1,“sepal_width (cm)”:3.5,”petal_length (cm)": 1.4, "petal_width": 0.2},{" sepal_length (cm)”:4.2, "sepal_width (cm)": 5.0, "petal_length (cm)": 0.8, "petal_width": 0.5}]}'
查询模型接受张量输入。张量的输入应格式化中描述TensorFlow服务的API文档。
curl - x POST - u令牌:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json内容类型:\- d{“输入”:[[5.1,3.5,1.4,0.2]]}”
进口numpy作为np进口熊猫作为pd进口请求defcreate_tf_serving_json(数据):返回{“输入”:{的名字:数据(的名字]。tolist()为的名字在数据。键()}如果isinstance(数据,dict)其他的数据。tolist()}defscore_model(model_uri,databricks_token,数据):头={“授权”:f“不记名{databricks_token}”,“内容类型”:“application / json”,}data_dict={“dataframe_split”:数据。to_dict(东方=“分裂”)}如果isinstance(数据,pd。DataFrame)其他的create_tf_serving_json(数据)data_json=json。转储(data_dict)响应=请求。请求(方法=“职位”,头=头,url=model_uri,json=data_json)如果响应。status_code! =200年:提高异常(f“请求失败状态{响应。status_code},{响应。文本}”)返回响应。json()#接受大熊猫DataFrames评分模型数据=pd。DataFrame([{“sepal_length”:5.1,“sepal_width”:3.5,“petal_length”:1.4,“petal_width”:0.2}))score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,数据)#得分一个接受张量的模型数据=np。asarray([[5.1,3.5,1.4,0.2]])score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,数据)
可以得分数据集掌权BI桌面使用以下步骤:
打开数据集你想得分。
去转换数据。
在左边面板中右键单击并选择创建新的查询。
去视图>高级编辑器。
用下面的代码片段,替换查询身体后填入一个适当的
DATABRICKS_API_TOKEN
和MODEL_VERSION_URI
。(数据集作为表)作为表= >让call_predict=(数据集作为表)作为列表= >让apiToken=DATABRICKS_API_TOKEN,modelUri=MODEL_VERSION_URI,responseList=Json。文档(网络。内容(modelUri,(头=(#“内容类型”=“application / json”,#“授权”=文本。格式(无记名# {0},{apiToken})),内容=Json。FromValue(数据集)]))在responseList,predictionList=列表。结合(列表。变换(表。分裂(数据集,256年),(x)= >call_predict(x))),predictionsTable=表。FromList(predictionList,(x)= >{x},{“预测”}),datasetWithPrediction=表。加入(表。AddIndexColumn(predictionsTable,“指数”),“指数”,表。AddIndexColumn(数据集,“指数”),“指数”)在datasetWithPrediction
名称查询你想要的模型名称。
打开高级查询编辑器为你的数据集和应用模型的功能。
如果您的评分要求使用MLflow客户端
mlflow.pyfunc.spark_udf ()
MLflow客户端升级到版本2.0或更高版本,使用最新的格式。BOB低频彩了解更多更新的MLflow模型评分MLflow 2.0协议。
关于输入数据格式的更多信息接受的服务器(例如,熊猫split-oriented格式),看到的MLflow文档。