开始
加载和管理数据
处理数据
政府
引用和资源
2023年2月16日更新
给我们反馈
重要的
这个文档已经退休了,可能不会被更新。产品、服务或技术中提到的这些内容不再支持。
预览
这个特性是在公共预览。
本文中的指导是经典MLflow模型服务。砖建议您迁移模型的服务工作流Serverless实时增强模型的推理端点部署和可伸缩性。有关更多信息,请参见模型服务Serverless实时推理。
经典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/。
违约
conda-forge
如果你登录一个模型之前MLflow v1.18没有排除违约通道从conda环境模型,该模型可能有依赖违约频道,你可能没有。手动确认模型是否有这种依赖性,你可以检查通道的价值conda.yaml打包的文件与记录模型。例如,一个模式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模型用于Python MLflow服务模型。你必须声明所有模型conda环境的依赖性。看到日志模型依赖。
使模型服务,你必须有集群创建权限。
在注册表砖从模型的模型服务是可用的。
你让一个模型为其服务注册页面模型。
单击服务选项卡。如果模型是服务尚未启用,支持服务按钮出现。
点击支持服务。服务选项卡出现了状态显示为等待。几分钟后,状态更改好了。
禁用一个服务模型,点击停止。
从服务选项卡中,您可以发送一个请求到服务模型和视图响应。
每个部署模型版本被分配一个或多个独特的uri。至少,每个模型版本分配URI构造如下:
< databricks-instance > /模型/ < registered-model-name > / <模型版本> /调用
例如,调用模型注册的版本1iris-classifier使用这个URI:
iris-classifier
https:// < databricks-instance > /模型/ iris-classifier / 1 /调用
你也可以叫一个模型版本的阶段。例如,如果版本1的生产阶段,也可以使用这个URI得分:
https:// < databricks-instance > /模型/ iris-classifier /生产/调用
顶部的可用模式uri列表出现在服务选项卡页面模型的版本。
所有活动部署(non-archived)模型版本,你可以使用uri查询。砖时自动部署新的模型版本的注册,并自动删除旧版本时存档。
所有部署版本注册模型共享相同的集群。
模型访问权限继承模型注册表。启用或禁用服务功能需要“管理”权限的注册模型。任何阅读权利可以得分的任何部署的版本。
取得一个部署模型中,您可以使用UI或发送一个REST API请求的URI模式。
这是最简单和最快的方式来测试模型。你可以插入模型以JSON格式输入数据并单击发送请求。如果模型记录了一个输入的例子(如图形所示上图),点击负载的例子加载输入示例。
你可以发送一个请求通过REST API使用得分标准砖的身份验证。下面的例子演示使用个人身份验证访问令牌MLflow 1. x。
作为一个安全最佳实践,验证自动化工具时,系统中,脚本和应用程序,砖属于建议您使用访问令牌服务主体而不是用户工作区。为服务主体,创建访问令牌管理服务主体的访问令牌。
给定一个MODEL_VERSION_URI就像https:// < databricks-instance > /模型/ iris-classifier /生产/调用(< databricks-instance >是砖实例的名称)和一个砖REST API的令牌DATABRICKS_API_TOKEN下面的例子显示如何查询服务模型:
MODEL_VERSION_URI
< databricks-instance >
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
名称查询你想要的模型名称。
打开高级查询编辑器为你的数据集和应用模型的功能。
服务页面显示状态指标服务集群以及各个模型版本。
检查服务集群的状态,使用模型的事件选项卡,显示一个列表的所有服务事件模型。
检查单个模型的状态版本,单击模型版本选项卡并滚动到视图日志或版本的事件选项卡。
定制服务集群,使用集群设置选项卡上的服务选项卡。
修改内存大小和数量的核心服务集群,使用实例类型下拉菜单中选择所需的集群配置。当你点击保存,现有的集群是终止并创建一个新的集群与指定的设置。
添加一个标签,类型的名称和值添加标签字段并单击添加。
编辑或删除现有的标签,点击一个图标的行动列的标签表。
经典模型服务可以自动查找从在线商店发布特性值。
砖经典MLflow模型服务支持自动从这些在线商店功能查找:
亚马逊DynamoDB (v0.3.8及以上)
亚马逊极光(MySQL-compatible)
Amazon RDS MySQL
ResolvePackageNotFound:pyspark = 3.1.0
这个错误可能发生取决于如果一个模型pyspark和记录使用砖运行时的8.倍。如果你看到这个错误,指定pyspark版本明确记录模型时,使用“conda_env”参数。
pyspark
未被认可的内容类型参数:格式
这个错误可能发生的新的MLflow 2.0得分协议格式。如果你看到这个错误,你可能使用一个过时的得分请求格式。解决错误,您可以:
更新你的得分请求格式的最新协议。
下面的例子反映了得分格式在MLflow 2.0中引入的。如果你喜欢使用MLflow 1。x,你可以修改log_model ()API调用,包括所需的MLflow版本依赖的extra_pip_requirements参数。这样做可以确保使用适当的得分格式。
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文档。
进口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,数据)
如果您的评分要求使用MLflow客户端mlflow.pyfunc.spark_udf ()MLflow客户端升级到版本2.0或更高版本,使用最新的格式。BOB低频彩了解更多更新的MLflow模型评分MLflow 2.0协议。
mlflow.pyfunc.spark_udf ()
关于输入数据格式的更多信息接受的服务器(例如,熊猫split-oriented格式),看到的MLflow文档。