用于监视和调试模型的推理表

重要

此功能目前以公共预览版提供。

本文介绍用于监视服务模型的推理表。 下图显示了使用推理表的典型工作流。 推理表会自动捕获模型服务终结点的传入请求和传出响应,并将其记录为 Unity Catalog Delta 表。 你可以使用此表中的数据来监视、调试和改进 ML 模型。

对于为托管外部模型的终结点服务的模型,只能使用 AI 网关启用推理表

推理表工作流

什么是推理表?

监视模型在生产工作流中的性能是 AI 和 ML 模型生命周期的一个重要方面。 推理表通过持续记录 Mosaic AI 模型服务终结点的服务请求输入和响应(预测),并将其保存到 Unity Catalog 中的 Delta 表,来简化模型的监视和诊断。 然后,可以使用 Databricks 平台的所有功能(例如 DDatabricks SQL 查询、笔记本和 Lakehouse Monitoring)来监视、调试和优化模型。

可以在任何现有或新创建的模型服务终结点上启用推理表,然后对该终结点的请求会自动记录到 UC 的表中。

推理表的一些常见应用如下:

  • 监视数据和模型质量。 可以使用 Lakehouse Monitoring 功能持续监视模型性能和数据偏移。 Lakehouse Monitoring 功能自动生成可与利益干系人共享的数据和模型质量仪表板。 此外,还可以启用警报,了解何时需要根据传入数据的变化或模型性能的降低重新训练模型。
  • 调试生产问题。 推理表记录 HTTP 状态代码、模型执行时间以及请求和响应 JSON 代码等数据。 可以使用此性能数据进行调试。 还可以使用推理表中的历史数据来比较模型在历史请求中的性能。
  • 创建训练语料库。 通过将推理表与基准真相标签联接,可以创建一个训练语料库,可用于重新训练或微调和改进模型。 使用 Databricks 作业,可以设置连续反馈循环并自动进行重新训练。

要求

  • 工作区必须已启用 Unity Catalog。
  • 终结点创建者和修改者都必须对终结点具有“可管理”权限。 请参阅访问控制列表
  • 终结点创建者和修改者都必须在 Unity Catalog 中具有以下权限
    • 对指定目录的 USE CATALOG 权限。
    • 对指定架构的 USE SCHEMA 权限。
    • 架构中的 CREATE TABLE 权限。

启用和禁用推理表

本部分介绍如何使用 Databricks UI 启用或禁用推理表。 还可以使用 API;有关说明,请参阅使用 API 在模型服务终结点上启用推理表

推理表的所有者是创建终结点的用户。 表上的所有访问控制列表 (ACL) 都遵循标准 Unity Catalog 权限,并可由表所有者修改。

警告

如果执行以下任一操作,推理表可能会损坏:

  • 更改表架构。
  • 更改表名称。
  • 删除表。
  • 失去对 Unity Catalog 目录或架构的权限。

在本例中,终结点状态 auto_capture_config 显示了有效负载表的 FAILED 状态。 如果发生这种情况,则必须创建新的终结点才能继续使用推理表。

若要在终结点创建期间启用推理表,请执行以下步骤:

  1. 在 DDatabricks Mosaic AI UI 中单击“服务”

  2. 单击“创建服务终结点”。

  3. 选择“启用推理表”

  4. 在下拉菜单中,选择要在其中放置表的所需目录和架构。

    推理表的目录和架构

  5. 默认表名称为 <catalog>.<schema>.<endpoint-name>_payload。 如果需要,可以输入自定义表前缀。

  6. 单击“创建服务终结点”。

也可以在现有终结点上启用推理表。 若要编辑现有终结点配置,请执行以下操作:

  1. 导航到终结点页面。
  2. 单击“编辑配置”
  3. 按照前面的说明操作,从步骤 3 开始。
  4. 完成后,单击“更新服务终结点”

按照以下说明禁用推理表:

  1. 导航到终结点页面。
  2. 单击“编辑配置”
  3. 单击“启用推理”表以删除勾选标记
  4. 当你对终结点规范感到满意时,请单击“更新”。

工作流:使用推理表监视模型性能

若要使用推理表监视模型性能,请执行以下步骤:

  1. 在终结点创建期间或通过以后更新来对终结点启用推理表
  2. 根据终结点的架构,安排工作流以通过解包来处理推理表中的 JSON 有效负载。
  3. (可选)将未打包的请求和响应与基准真相标签联接,以允许计算模型质量指标。
  4. 对生成的 Delta 表创建监视器并刷新指标。

初学者笔记本可实现此工作流。

用于监视推理表的初学者笔记本

以下笔记本实现了上述步骤,解包 Lakehouse Monitoring 推理表中的请求。 笔记本可以按需运行,也可以使用 Databricks 作业定期运行。

推理表 Lakehouse Monitoring 初学者笔记本

获取笔记本

用于监视终结点服务 LLM 的文本质量的初学者笔记本

以下笔记本从推理表解包请求,计算一组文本评估指标(如可读性和毒性),并启用对这些指标的监视。 笔记本可以按需运行,也可以使用 Databricks 作业定期运行。

LLM 推理表 Lakehouse Monitoring 初学者笔记本

获取笔记本

在推理表中查询和分析结果

准备好所服务模型后,向模型发出的所有请求连同响应都会自动记录到推理表中。 可以在 UI 中查看表,从 DBSQL 或笔记本查询表,或使用 REST API 查询表。

若要在 UI 中查看表:在终结点页上,单击推理表的名称以在目录资源管理器中打开该表。

指向终结点页上推理表名称的链接

若要从 DBSQL 或 Databricks 笔记本查询表:可以运行如下所示的代码来查询推理表。

SELECT * FROM <catalog>.<schema>.<payload_table>

如果已使用 UI 启用推理表,则 payload_table 为创建终结点时分配的表名称。 如果已使用 API 启用推理表,则会在 auto_capture_config 响应的 state 部分报告 payload_table。 例如,请参阅使用 API 在模型服务终结点上启用推理表

性能说明

调用终结点后,可以在发送评分请求的一小时内看到已记录到推理表的调用。 此外,Azure Databricks 保证日志传递至少发生一次,因此可能会发送重复日志,尽管这种可能性并不大。

Unity Catalog 推理表架构

记录到推理表的每个请求和响应都会写入具有以下架构的 Delta 表:

注意

如果使用一批输入调用终结点,则整批输入只记录为一行。

列名称 说明 类型
databricks_request_id 附加到所有模型服务请求的 Azure Databricks 生成的请求标识符。 字符串
client_request_id 可选的客户端生成的请求标识符,可在模型服务请求正文中指定。 有关详细信息,请参阅指定 client_request_id 字符串
date 收到模型服务请求的 UTC 日期。 DATE
timestamp_ms 收到模型服务请求时的时间戳(以毫秒为单位的时间)。 LONG
status_code 从模型返回的 HTTP 状态代码。 INT
sampling_fraction 向下采样请求时在事件使用的采样分数。 此值介于 0 和 1 之间,其中 1 表示包含 100% 的传入请求。 DOUBLE
execution_time_ms 模型执行推理的执行时间(以毫秒为单位)。 不包括开销网络延迟,仅表示模型生成预测所需的时间。 LONG
request 发送到模型服务终结点的原始请求 JSON 正文。 字符串
response 模型服务终结点返回的原始响应 JSON 正文。 字符串
request_metadata 与请求关联的模型服务终结点相关的元数据映射。 此映射包含终结点使用的终结点名称、模型名称和模型版本。 MAP<STRING, STRING>

指定 client_request_id

client_request_id 字段是用户可以在模型服务请求正文中提供的可选值。 这允许用户为最终推理表中 client_request_id 下所显示的请求提供自己的标识符,且可用于建立请求与其他使用 client_request_id 的表之间的联接,如基本事实标签联接。 若要指定 client_request_id,请将其作为请求有效负载的顶级键包含在内。 如果未指定 client_request_id,则该值在与请求对应的行中显示为 null。

{
  "client_request_id": "<user-provided-id>",
  "dataframe_records": [
    {
      "sepal length (cm)": 5.1,
      "sepal width (cm)": 3.5,
      "petal length (cm)": 1.4,
      "petal width (cm)": 0.2
    },
    {
      "sepal length (cm)": 4.9,
      "sepal width (cm)": 3,
      "petal length (cm)": 1.4,
      "petal width (cm)": 0.2
    },
    {
      "sepal length (cm)": 4.7,
      "sepal width (cm)": 3.2,
      "petal length (cm)": 1.3,
      "petal width (cm)": 0.2
    }
  ]
}

如果还有其他表的标签与 client_request_id 相关联,则可在以后将 client_request_id 用于基本事实标签联接。

限制

  • 不支持客户管理的密钥。
  • 对于托管基础模型的终结点,推理表仅在预配吞吐量工作负载上受支持。
  • Azure 防火墙可能会导致无法创建 Unity Catalog Delta 表,因此默认不受支持。 请联系 Databricks 帐户团队来启用 Azure 防火墙。
  • 启用了推理表时,在单个终结点中提供的所有模型间的总最大并发数限制为 128。 请联系你的 Azure Databricks 帐户团队,请求增大此限额。
  • 如果推理表包含超过 500,000 个文件,则不再记录其他数据。 若要避免超出此限制,请运行 OPTIMIZE 或通过删除旧数据在表上设置保留期。 若要检查表中的文件数,请运行 DESCRIBE DETAIL <catalog>.<schema>.<payload_table>
  • 推理表日志传递目前是尽力而为,但可以预期日志将在请求后 1 小时内可用。 有关详细信息,请联系 Databricks 帐户团队。

有关通用模型服务终结点限制,请参阅模型服务限制和区域