在服务终结点上配置路由优化
本文介绍如何在模型服务或特征服务终结点上配置路由优化以及如何查询它们。 路由优化的服务终结点可大幅降低开销延迟,并大幅提升终结点支持的吞吐量。
建议对高吞吐量或延迟敏感的工作负载进行路由优化。
要求
在模型服务终结点上启用路由优化
在创建模型服务终结点期间指定 route_optimized
参数,以配置终结点的路由优化。 只能在终结点创建期间指定此参数,不能通过更新现有终结点来实现路由优化。
POST /api/2.0/serving-endpoints
{
"name": "my-endpoint",
"config":{
"served_entities": [{
"entity_name": "ads1",
"entity_version": "1",
"workload_type": "CPU",
"workload_size": "Small",
"scale_to_zero_enabled": true,
}],
},
"route_optimized": true
}
可以在服务 UI 中为终结点启用路由优化。 如果使用 Python,则可以使用以下笔记本来创建路由优化的服务终结点。
使用 Python 笔记本创建路由优化的服务终结点
在特征服务终结点上启用路由优化
若要为特征和功能服务使用路由优化,请在 entity_name
字段中指定用于服务终结点创建请求的特征规范的完整名称。 FeatureSpecs
不需要 entity_version
。
POST /api/2.0/serving-endpoints
{
"name": "my-endpoint",
"config": {
"served_entities": [
{
"entity_name": "catalog_name.schema_name.feature_spec_name",
"workload_type": "CPU",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
]
},
"route_optimized": true
}
查询路由优化的模型服务终结点
以下步骤演示如何测试查询路由优化的模型服务终结点。
对于生产用途,就像在应用程序中使用路由优化的终结点一样,必须创建 OAuth 令牌。 以下步骤演示如何在服务 UI 中提取令牌。 对于编程工作流,请参阅以编程方式提取 OAuth 令牌。
- 从工作区的“服务”UI 中提取 OAuth 令牌。
- 单击边栏中的“服务”以显示服务 UI。
- 在“服务终结点”页上,选择路由优化的终结点以查看终结点详细信息。
- 在终结点详细信息页上,单击“查询终结点”按钮。
- 选择“提取令牌”选项卡。
- 选择“提取 OAuth 令牌”按钮。 此令牌的有效期为 1 小时。 如果当前令牌过期,则提取新令牌。
- 从“服务”UI 中的终结点详细信息页获取模型提供终结点 URL。
- 使用步骤 1 中的 OAuth 令牌和步骤 2 中的终结点 URL 填充查询路由优化的终结点的以下示例代码。
url="your-endpoint-url"
OAUTH_TOKEN=xxxxxxx
curl -X POST -H 'Content-Type: application/json' -H "Authorization: Bearer $OAUTH_TOKEN" -d@data.json $url
若要让 Python SDK 查询路由优化的终结点,请联系你的 Databricks 帐户团队。
以编程方式提取 OAuth 令牌
使用 OAuth (OAuth M2M) 通过服务主体对 Azure Databricks 的访问进行身份验证提供了有关如何以编程方式提取 OAuth 令牌的指导。 除了这些步骤之外,你还必须在请求中指定 authorization_details
。
- 将
<token-endpoint-URL>
替换为前面的令牌终结点 URL。 - 将
<client-id>
替换为服务主体的客户端 ID(也称为应用程序 ID)。 - 将
<client-secret>
替换为你创建的服务主体的 OAuth 机密。 - 将
<endpoint-id>
替换为路由优化终结点的终结点 ID。 可以从终结点 URL 中的 hostName 提取此值。 - 将
<action>
替换为向服务主体授予的操作权限。 该操作可以是query_inference_endpoint
或manage_inference_endpoint
。
例如:
export CLIENT_ID=<client-id>
export CLIENT_SECRET=<client-secret>
export ENDPOINT_ID=<endpoint-id>
export ACTION=<action>
curl --request POST \
--url <token-endpoint-URL> \
--user "$CLIENT_ID:$CLIENT_SECRET" \
--data 'grant_type=client_credentials&scope=all-apis'
--data-urlencode 'authorization_details=[{"type":"workspace_permission","object_type":"serving-endpoints","object_path":"'"/serving-endpoints/$ENDPOINT_ID"'","actions": ["'"$ACTION"'"]}]'