创建和管理Serverless实时推理端点

重要的

  • 这个文档已经退休了,可能不会被更新。产品、服务或技术中提到的这些内容不再支持。

  • 本文中的指导是模型的预览版本服务功能,以前Serverless实时推理。砖建议您迁移模型的工作流服务可用的一般功能。看到模型服务与砖

预览

这个特性是在公共预览

本文描述了如何创建和管理使用砖的端点Serverless实时推理

重要的

  • API定义和工作流过程中如有变更,恕公共预览。

  • 如果你依靠水蟒,审查服务条款请注意附加信息。

需求

  • Serverless实时推理只是用于面向MLflow MLflow模型中的模型注册注册表。你必须声明所有模型conda环境依赖性或要求文件。

    • 如果你没有注册模式,看到笔记本的例子预包装模型可以使用设置和运行与Serverless实时推理端点。

  • 必须启用您的工作区Serverless实时推理。使模型服务Serverless实时推理,你必须有集群创建权限

  • 如果你从一个私人使用自定义库或库镜像服务器与你的模型,看看使用自定义Python库模型在你创建模型端点。

创建一个模型服务端点

您可以创建Serverless实时推理模型服务的端点砖机器学习API或砖机器学习的UI。端点可以注册任何Python MLflow模型在模型中注册中心注册。

使用API

您可以使用启用服务API来创建一个服务端点模型。在接下来的例子中,ElasticNet的名称注册模型。

文章https:// < databricks-instance > . . / api / 2.0 /预览/ mlflow / endpoints-v2 /启用{“registered_model_name”:“ElasticNet”}

使用用户界面

你让一个模型为其服务注册页面模型砖的机器学习的UI。

  1. 单击服务选项卡。如果模型是服务尚未启用,使Serverless实时推理按钮出现。

  2. 点击使Serverless实时推理。服务选项卡出现了状态显示为等待。几分钟后,状态更改好了。

修改计算配置的端点

使端点模型之后,您可以根据需要设置计算配置API或UI。这个配置是特别有用如果你需要额外的资源模型。工作负载大小和计算配置发挥关键作用的资源分配给您的模型。BOB低频彩了解更多关于WorkloadConfigSpec对象

使用API

配置的状态更新可以跟踪config_update_status场的端点版本状态

把/预览/ model-serving-api / endpoints-v2 / update-compute-config

在下面,填充desired_workload_config_specWorkloadConfigSpec属性。

{“registered_model_name”:“ElasticNet”,“舞台”:“登台|生产”,“desired_workload_config_spec”:{“WorkloadConfigSpec”}}

使用用户界面

启用一个端点模型之后,您可以设置所需的计算上的配置计算设置选项卡。你可以设置单独的配置登台和生产模型版本。

你可以选择从几个工作量大小,自动定量自动配置在工作负载的大小。如果你想端点缩减为零,你可以检查复选框标题为“规模为零”。

评分模型端点

取得一个部署模型,你可以发送一个REST API请求URL或使用UI模型。

你应该叫一个模型通过调用API的阶段。例如,如果版本1的生产阶段,它可以使用这你的得分:

https:// < databricks-instance > / model-endpoint / iris-classifier /生产/调用

可用模型uri列表的顶部模型版本选项卡上的服务选项卡。

请求格式

请求应该被发送通过构造一个JSON与下面的一个键和一个JSON对象对应的输入格式。

有四个输入JSON格式取决于您的用例:

  • dataframe_splitjson序列化熊猫Dataframe在吗分裂取向。

    {“dataframe_split”:{“指数”:(0,1),“列”:(“花萼长度(厘米)”,“花萼宽(cm)”,“花瓣长度(厘米)”,“花瓣宽度(cm)”),“数据”:[[5.1,3.5,1.4,0.2),(4.9,3.0,1.4,0.2]]}}
  • dataframe_recordsjson序列化熊猫Dataframe在吗记录取向。

    请注意

    这种格式不能保证保存列排序,和分裂格式是首选的记录格式。

    {“dataframe_records”:({“花萼长度(厘米)”:5.1,“花萼宽(cm)”:3.5,“花瓣长度(厘米)”:1.4,“花瓣宽度(cm)”:0.2},{“花萼长度(厘米)”:4.9,“花萼宽(cm)”:3,“花瓣长度(厘米)”:1.4,“花瓣宽度(cm)”:0.2},{“花萼长度(厘米)”:4.7,“花萼宽(cm)”:3.2,“花瓣长度(厘米)”:1.3,“花瓣宽度(cm)”:0.2}]}
  • 实例张量是一种tensors-based格式,接受行格式。使用此格式如果所有输入张量有相同的六月十维度。从概念上讲,每个实例列表中的张量可以与其他同名的张量列表的其余部分来构建完整的输入张量模型,这只会是可能的如果所有的张量有相同的六月十维度。

    {“实例”:(“一个”,“b”,“c”]}

    在下面的例子中,有三个维度,具体每个输入三个张量。

    {“实例”:({“t1”:“一个”,“t2”:(1,2,3,4,5),“t3”:[[1,2),(3,4),(5,6]]},{“t1”:“b”,“t2”:(6,7,8,9,10),“t3”:[[7,8),(9,10),(11,12]]}]}
  • 输入发送查询与张量柱状格式。这实际上要求是不同的,因为有一个不同数量的张量的实例t2(3)比t1t3,所以它代表的输入是不可能的实例格式。

    {“输入”:{“t1”:(“一个”,“b”),“t2”:[[1,2,3,4,5),(6,7,8,9,10),(11,12,13,14,15]],“t3”:[[[1,2),(3,4),(5,6]],[[7,8),(9,10),(11,12]]]}}

响应格式

端点的响应是在以下格式。模型的输出是包裹在一个“预测”键。

{“预测”:“从模型> < JSON输出”}

使用用户界面

发送请求使用UI是最简单快捷的方法来测试模型。你可以插入模型以JSON格式输入数据并单击发送请求。如果模型记录了一个输入的例子(如图形所示上图),点击显示的例子加载输入示例。

使用API

你可以发送一个请求通过REST API使用得分标准砖的身份验证。下面的例子演示使用个人身份验证访问令牌。

请注意

作为一个安全最佳实践进行身份验证时使用自动化工具,系统、脚本和应用程序,砖建议您使用OAuth令牌或个人访问令牌属于服务主体而不是用户工作区。为服务主体,创建令牌服务主体的管理令牌

给定一个MODEL_VERSION_URI就像https:// < databricks-instance > /模型/ iris-classifier /生产/调用,在那里< databricks-instance >砖实例的名称和砖REST API的令牌DATABRICKS_API_TOKEN,下面是例子的片段如何评分模型。

评分模型接受dataframe记录输入格式。

curl - x POST - u令牌:DATABRICKS_API_TOKEN美元MODEL_VERSION_URI美元\- h“application / json内容类型:\- d{“dataframe_records”:({“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=json转储({“dataframe_records”:数据to_dict(东方=“记录”)})如果isinstance(数据,pdDataFrame)其他的create_tf_serving_json(数据)响应=请求请求(方法=“职位”,=,url=model_uri,json=data_json)如果响应status_code! =200年:提高异常(f“请求失败状态{响应status_code},{响应文本})返回响应json()#接受大熊猫DataFrames评分模型数据=pdDataFrame([{“sepal_length”:5.1,“sepal_width”:3.5,“petal_length”:1.4,“petal_width”:0.2}))score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,数据)#得分一个接受张量的模型数据=npasarray([[5.1,3.5,1.4,0.2]])score_model(MODEL_VERSION_URI,DATABRICKS_API_TOKEN,数据)

可以得分数据集掌权BI桌面使用以下步骤:

  1. 打开数据集你想得分。

  2. 去转换数据。

  3. 在左边面板中右键单击并选择创建新的查询

  4. 视图>高级编辑器

  5. 用下面的代码片段,替换查询身体后填入一个适当的DATABRICKS_API_TOKENMODEL_VERSION_URI

    (数据集作为)作为= >call_predict=(数据集作为)作为列表= >apiToken=DATABRICKS_API_TOKEN,modelUri=MODEL_VERSION_URI,responseList=Json文档(网络内容(modelUri,(=(#“内容类型”=“application / json”,#“授权”=文本。格式(无记名# {0},{apiToken})),内容={“dataframe_records”:JsonFromValue(数据集)}]))responseList,predictionList=列表结合(列表变换(分裂(数据集,256年),(x)= >call_predict(x))),predictionsTable=FromList(predictionList,(x)= >{x},{“预测”}),datasetWithPrediction=加入(AddIndexColumn(predictionsTable,“指数”),“指数”,AddIndexColumn(数据集,“指数”),“指数”)datasetWithPrediction
  6. 名称查询你想要的模型名称。

  7. 打开高级查询编辑器为你的数据集和应用模型的功能。

看到以下笔记本为例如何测试你的Serverless实时推理端点与Python模型:

测试Serverless实时推理端点的笔记本

更新模型版本的一个端点

模型版本必须是在分期或生产模型中注册才可以服务端点。

使用API

过渡到服务新模式版本,您可以使用该模型注册表来你想要的模型版本服务过渡到其适当的阶段。

以下代码示例转换模型的版本2ElasticNet暂存。通过设置archive_existing_versions真正的任何现有的模型版本归档,使分段URL指向新模型版本之后准备服务。新版本之前准备好,Staging端点服务于旧模式版本,因此过渡是由零停机时间。

POST / mlflow /砖/模型版本/过渡阶段{“名称”:“ElasticNet”,“版本”:“2”,“舞台”:“暂存”,“archive_existing_versions”:真的,“评论”:“部署版本1分段端点!”}

保持在一个阶段多个版本

你也可以选择继续前面的登台版本的登台。一个模型的多个版本可以在同一个阶段。在这种情况下,两个版本都提供,但只能分期URL点最新的的版本。老版本仍然可以访问的URL。

如果你想尝试一个新版本在你举办端点,你可以做上面的一样,但集archive_existing_versions确保前面的临时版本不会存档。

POST / mlflow /砖/模型版本/过渡阶段{“archive_existing_versions”:假的,…}

使用用户界面

模型版本过渡到暂存或生产使用砖机器学习的界面:

  1. 选择模型图标”src=模型在侧边栏。

  2. 识别并选择您希望更新注册模型。

  3. 选择过渡到你想要的模型版本暂存生产。打开模型版本的详细页面的链接。

  4. 使用阶段顶端的下拉菜单中正确过渡模型版本暂存或生产。

得到模型端点的状态

使用API

砖提供了以下的检查一个端点的状态。BOB低频彩了解更多关于EndpointStatus对象

/ / mlflow / endpoints-v2预览/获得状态
{“registered_model_name”:“ElasticNet”}

这返回EndpointStatus对象属性:

{“endpoint_status”:{“EndpointStatus”}}

使用用户界面

在UI中,您可以检查一个端点的状态的状态顶部的指标服务选项卡。

得到模型端点的状态版本

你可以得到特定端点的状态已经部署的版本。这可以让您:

  • 跟踪服务版本。

  • 跟踪这些版本的状态。

  • 检查一个特定的模型版本是否可以使用了。

使用API

砖提供两个api来检查端点的状态版本。检查所有端点的状态版本特定注册模式,您可以使用ListVersions。BOB低频彩了解更多关于EndpointVersionStatus对象

/ / mlflow / endpoints-v2预览/ list-versions
{“registered_model_name”:“ElasticNet”}

这将返回EndpointVersionStatus对象属性:

{“endpoint_statuses”:(“EndpointVersionStatus”]}

或者,如果你已经知道你想知道状态的特定版本,您可以使用GetVersions

/ / mlflow / endpoints-v2预览/ get-version-status
{“registered_model_name”:“ElasticNet”,“endpoint_version_name”:“1”}

这将返回EndpointVersionStatus对象属性:

{“endpoint_status”:{“EndpointVersionStatus”}}

舞台上的地位

你也可以得到一个特定阶段的地位。要做到这一点,首先需要确定哪些目前服务端点版本阶段。获取这些信息,您可以使用ListVersionAliases

/ / mlflow / endpoints-v2预览/ list-version-aliases
{“registered_model_name”:“ElasticNet”}

这将返回:

{“别名”:({“别名”:“暂存”,“endpoint_version_name”:“2”},{“别名”:“生产”,“endpoint_version_name”:“1”}]}

从那里,您可以使用上面的特定端点的状态版本。

使用用户界面

服务UI的选项卡中,您可以看到每个端点版本有自己的选项卡左边。当您选择每个选项卡时,会出现一个特定版本的详细信息。目前的版本可以看到一个阶段的服务暂存生产标签上的端点的版本。

禁用服务模型

使用API

您可以使用API来禁用模型服务模型中模型注册中心注册。

禁用模型为一个模型使用禁用服务API服务:

POST /预览/ mlflow / endpoints-v2 /禁用{“registered_model_name”:“ElasticNet”}

使用用户界面

你可以禁用一个模型为其服务注册页面模型

  1. 单击服务选项卡。如果模型是服务尚未启用,使Serverless实时推理按钮出现。

  2. 点击禁用服务

调试模式端点

请注意

你只能调试您的端点通过UI模型。

你可以调试和排除端点登录查看模型,端点版本的UI选项卡中数据砖机器学习。日志中所有副本模型的合并所有副本选项卡。

除了模型的日志,您可以查看重大服务事件有关的模型模型的事件选项卡。

核心API的对象

本节包含了设计模式和语法Serverless实时推理的核心API对象。

重要的

API定义公共预览期间可能发生变化。

工作负载配置

WorkloadConfigSpec描述了配置用于规模计算一个特定的阶段。

“WorkloadConfigSpec”:{“workload_size_id”:“小|中|大”,“scale_to_zero_enabled”:}

ComputeConfig代表配置用于规模计算特定阶段的元数据。

在下面,填充workload_spec通过替换“WorkloadConfigSpec”与前面定义的属性的WorkloadConfigSpec对象。

“ComputeConfig”:{“舞台”:“登台|生产”,“creation_timestamp”:12345678,“user_id”:“first.last@www.neidfyre.com”,“workload_spec”:{“WorkloadConfigSpec”}}

端点状态

端点的健康状况反映出的任何阶段是否可以得分或资源生成的特定版本的模型。

在接下来的EndpointStatus对象,填充compute_config通过重用你的前面定义的属性ComputeConfig作为一个数组对象和其他属性。

“EndpointStatus”:{“registered_model_name”:“ElasticNet”,“状态”:“待准备好| |失败”,“state_message”:“国家信息”,“compute_config”:(“ComputeConfig和附加属性作为数组”]}

端点版本状态

一个端点版本特定URI,可以查询。URI表示单个模型版本目前正在服役的计算计算配置设置为其配置的阶段。

在接下来的EndpointVersionStatus对象,填充配置字段,service_statusconfig_update_status——通过替换“ComputeConfig”与前面定义的属性的ComputeConfig对象。

“EndpointVersionStatus”:{“registered_model_name”:“ElasticNet”,“endpoint_version_name”:“1”,“service_status”:{“状态”:“SERVICE_STATE_UNKNOWN | SERVICE_STATE_PENDING | SERVICE_STATE_READY | SERVICE_STATE_UNKNOWN”,“消息”:“准备好了”,“配置”:{“ComputeConfig”}},“config_update_status”:{“状态”:“SERVICE_STATE_UNKNOWN | SERVICE_STATE_PENDING | SERVICE_STATE_READY | SERVICE_STATE_UNKNOWN”,“消息”:“等待”,“配置”:{“ComputeConfig”}}}

笔记本的例子

以下笔记本包括不同的模型,您可以使用设置和运行与Serverless实时推理端点。模型的例子可以导入到工作区中遵循的方向导入一个笔记本。你选择之后,创建一个模型的一个例子,MLflow模型中的注册表注册它,然后遵循UI工作流模型的步骤。

培训和注册一个scikit-learn模型为模型提供笔记本

培训和注册一个Pytorch模型为模型提供笔记本

培训和注册一个HuggingFace模型为模型提供笔记本