在服务终结点上配置路由优化

本文介绍如何在模型服务特征服务终结点上配置路由优化以及如何查询它们。 路由优化的服务终结点可大幅降低开销延迟,并大幅提升终结点支持的吞吐量。

建议对高吞吐量或延迟敏感的工作负载进行路由优化。

要求

  • 有关模型服务终结点的路由优化,请参阅要求
  • 有关特征服务终结点的路由优化,请参阅要求

在模型服务终结点上启用路由优化

在创建模型服务终结点期间指定 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 令牌

  1. 从工作区的“服务”UI 中提取 OAuth 令牌。
    1. 单击边栏中的“服务”以显示服务 UI。
    2. 在“服务终结点”页上,选择路由优化的终结点以查看终结点详细信息。
    3. 在终结点详细信息页上,单击“查询终结点”按钮。
    4. 选择“提取令牌”选项卡。
    5. 选择“提取 OAuth 令牌”按钮。 此令牌的有效期为 1 小时。 如果当前令牌过期,则提取新令牌。
  2. 从“服务”UI 中的终结点详细信息页获取模型提供终结点 URL。
  3. 使用步骤 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_endpointmanage_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"'"]}]'

限制

  • 路由优化仅适用于自定义的模型服务终结点和特征服务终结点。 不支持基础模型 API外部模型
  • Databricks 内部 OAuth 令牌是对路由优化唯一支持的身份验证。 不支持个人访问令牌。
  • 路由优化不会强制实施你在 Azure Databricks 工作区中配置的任何专用链接网络限制。 如果你要求模型服务流量受这些控制措施的约束,请不要启用路由优化。 如果你有这样的网络要求,但仍想尝试路由优化的模型服务,请联系你的 Databricks 帐户团队。
  • 路由优化在某些区域中不可用。 如果在服务 UI 中看不到启用路由优化的选项,请联系你的 Databricks 帐户团队。