重要说明
如果提供终结点的自定义模型需要旧的推理表体验,请参阅 用于监视和调试模型的推理表。
本文介绍支持 AI 网关的推理表,用于监视服务模型。 推理表会自动捕获终结点的传入请求和传出响应,并将其记录为 Unity 目录 Delta 表。 可以使用此表中的数据来监视、评估、比较和微调机器学习模型。
什么是已启用 AI 网关的推理表?
启用了 AI 网关的推理表通过持续记录来自马赛克 AI 模型服务终结点的请求输入和响应(预测),并将其保存到 Unity 目录中的 Delta 表,从而简化模型的监视和诊断。 然后,可以使用 Databricks 平台的所有功能,例如 Databricks SQL 查询和笔记本来监视、调试和优化模型。
可以在现有或新创建的模型服务终结点上启用推理表,然后会自动将该终结点的请求记录到 Unity 目录中的表。
推理表的一些常见应用程序如下:
- 创建训练库。 通过将推理表与地面真实标签联接,可以创建一个训练库,可用于重新训练或微调和改进模型。 使用 Lakeflow 任务,可以设置连续反馈循环并自动化重新训练。
- 监视数据和模型质量。 可以使用 Lakehouse Monitoring 持续监视模型性能和数据偏移。 Lakehouse Monitoring 自动生成可与利益干系人共享的数据和模型质量仪表板。 此外,还可以启用警报,了解何时需要根据传入数据的变化重新训练模型,或减少模型性能。
- 调试生产问题。 推理表记录的数据包括 HTTP 状态代码、请求和响应的 JSON 代码、模型运行时间,以及模型运行时的 跟踪输出。 可以使用此性能数据进行调试。 还可以使用推理表中的历史数据来比较历史请求的模型性能。
- 监视已部署的 AI 代理。 推理表还可以存储 AI 代理的 MLflow 跟踪,帮助调试问题和监视性能。
要求
- 对服务于以下任一项的终结点支持已启用 AI 网关的推理表:
- 预配的吞吐量 工作负荷
- 按令牌付费 模型
- 外部模型
- 已部署的 AI 代理
- 自定义模式
- 支持模型服务的区域中的 Databricks 工作区。 请参阅 提供区域可用性的模型。
- 对于在 Unity 目录存储帐户上配置了专用连接的工作区,请按照 “配置与 Azure 资源的专用连接”中的步骤作。
- Databricks 建议 启用预测优化 来优化推理表的性能。
- 工作区必须启用 Unity Catalog。
- 终结点创建者和修改者都必须对终结点具有“可管理”权限。 请参阅访问控制列表。
- 终结点创建者和修改者都必须在 Unity Catalog 中具有以下权限:
- 对指定目录的
USE CATALOG
权限。 - 对指定架构的
USE SCHEMA
权限。 - 架构中的
CREATE TABLE
权限。
- 对指定目录的
警告
如果执行以下任一操作,推理表可能会停止记录数据或发生损坏:
- 更改表架构。
- 更改表名称。
- 删除表。
- 失去对 Unity Catalog 目录或架构的权限。
- 更改或删除表所有者。
启用和禁用推理表
本部分介绍如何使用服务 UI 启用或禁用推理表。 推理表的所有者是创建终结点的用户。 表上的所有访问控制列表(ACL)都遵循标准 Unity 目录权限,并可由表所有者修改。
若要在创建终结点期间启用推理表,请执行以下步骤:
- 在 Databricks Mosaic AI UI 中,单击“服务”。
- 单击 创建服务终结点。
- 在“AI 网关”部分中,选择“启用推理表”。
还可以在现有终结点上启用推理表。 若要编辑现有终结点配置,请执行以下作:
- 在“AI 网关”部分中,单击 编辑 AI 网关。
- 选择 启用推理表。
按照以下说明禁用推理表:
- 导航到终结点页。
- 单击 编辑 AI 网关。
- 单击“启用推理表”以移除勾选标记。
- 对 AI 网关规范感到满意后,再单击“更新”。
为 AI 代理启用推理表
还可以为已部署的 AI 代理启用推理表,这些推理表存储有效负载和请求详细信息以及 MLflow 跟踪日志。
使用以下方法为 AI 代理启用推理表:
- 使用 API 部署的
mlflow.deploy()
代理会自动启用推理表。 请参阅 为生成式 AI 应用程序部署代理。 - 对于编程部署,请将
ENABLE_MLFLOW_TRACING
环境变量设置为True
终结点配置中的环境变量。 请参阅 添加纯文本环境变量。
若要了解有关 MLflow 代理跟踪的详细信息,请参阅 MLflow 跟踪 - 生成 AI 可观测性。
在推理表中查询和分析结果
服务模型准备就绪后,向模型发出的所有请求及其响应都会自动记录到推理记录表中。 可以在 UI 中查看表、从 Databricks SQL 或笔记本查询表,或使用 REST API 查询表。
若要查看 UI 中的表: 在终结点页面上,单击推断表的名称以在目录资源管理器中打开该表。
若要从 Databricks SQL 或 Databricks 笔记本查询表: 可以运行类似于以下内容的代码来查询推理表。
SELECT * FROM <catalog>.<schema>.<payload_table>
要将推理表数据与终结点上提供的基础模型的详细信息相结合:基础模型详细信息会捕获到 system.serving.served_entities 系统表中。
注释
system.serving.served_entities
系统表不支持按令牌付费终结点,但你可以联接推理表和使用情况表来获取类似的详细信息。
SELECT * FROM <catalog>.<schema>.<payload_table> payload
JOIN system.serving.served_entities se on payload.served_entity_id = se.served_entity_id
已启用 AI 网关的推理表架构
使用 AI 网关启用的推理表具有以下架构:
AI 代理推理表架构
对于 AI 代理,Databricks 为每次部署创建三个推理表,用于记录对模型服务终结点的请求和响应:
推理表 | Azure Databricks 表名称示例 | 表内容 |
---|---|---|
有效负载 | {catalog_name}.{schema_name}.{model_name}_payload |
原始 JSON 请求和响应有效负载 |
载荷请求日志 | {catalog_name}.{schema_name}.{model_name}_payload_request_logs |
带格式的请求和响应,MLflow 跟踪 |
有效负载评估日志 | {catalog_name}.{schema_name}.{model_name}_payload_assessment_logs |
针对每个请求的带格式反馈(在评审应用中提供) |
用户可以在与服务终结点交互的一小时内在负载数据表中看到数据。 有效负载请求日志和评估日志可能需要更长的时间才能填充,并且派生自原始有效负载表。 你可以自行从有效负载表中提取请求和评估日志。 有效负载表的删除和更新不会反映在有效负载请求日志或有效负载评估日志中。
注释
如果启用了 Azure 存储防火墙,请联系 Databricks 客户团队为终结点启用推理表。
下面显示了有效负载请求日志表的架构:
列名称 | 说明 | 类型 |
---|---|---|
databricks_request_id |
附加到所有模型服务请求的 Azure Databricks 生成的请求标识符。 | 字符串 |
client_request_id |
可选的客户端生成的请求标识符,可在模型服务请求正文中指定。 | 字符串 |
date |
接收模型服务请求的 UTC 日期。 | 日期 |
timestamp_ms |
收到模型服务请求时的时间戳(以毫秒为单位的时间)。 | 长 |
timestamp |
请求的时间戳。 | 时间戳 |
status_code |
从模型返回的 HTTP 状态代码。 | INT |
sampling_fraction |
向下采样请求时在事件使用的采样分数。 此值介于 0 和 1 之间,其中 1 表示包含了 100% 的传入请求%。 | 双 |
execution_time_ms |
模型执行推理的执行时间(以毫秒为单位)。 这不包括开销网络延迟,仅表示模型生成预测所花费的时间。 | 长 |
conversation_id |
从请求日志中提取的对话 ID。 | 字符串 |
request |
用户对话中的最后一个用户查询。 | 字符串 |
response |
对用户的最后一个响应 | 字符串 |
request_raw |
请求的字符串表示形式。 | 字符串 |
response_raw |
响应的字符串表示形式。 | 字符串 |
trace |
从 databricks_options 响应结构中提取的跟踪的字符串表示形式。 |
字符串 |
request_metadata |
与请求关联的模型服务终结点相关的元数据映射。 此映射包含终结点使用的终结点名称、模型名称和模型版本。 | MAP<STRING、STRING> |
schema_version |
架构版本。 | 字符串 |
下面展示了Payload评估日志表的模式:
列名称 | 说明 | 类型 |
---|---|---|
request_id |
Databricks 请求 ID。 | 字符串 |
step_id |
步骤 ID,派生自检索评估。 | 字符串 |
source |
一个结构字段,其中包含有关评估创建者的信息。 | 结构 |
timestamp |
请求的时间戳。 | 时间戳 |
text_assessment |
有关代理在评审应用中的回应的任何反馈数据。 | 字符串 |
retrieval_assessment |
针对响应检索到的文档的任何反馈的数据。 | 字符串 |
限制
- 预配的吞吐量工作负荷:
- 如果创建一个新的使用预配吞吐量的模型服务终结点,则只有已启用 AI 网关的推理表受支持。
- 如果有一个使用预配吞吐量的现有模型服务终结点,并且它 以前从未配置过旧推理表,则可以将其更新为使用启用了 AI 网关的推理表。
- 如果有一个使用预配吞吐量的现有模型服务终结点,并且它具有 当前或以前配置的旧推理表,则 无法 将其更新为使用启用了 AI 网关的推理表。
- 对于流式 AI 代理响应日志,仅聚合与 ChatCompletion 兼容的字段和轨迹。
- 自定义模型工作负载:
- 如果你要创建一个为自定义模型提供服务的新模型服务终结点,Databricks 建议使用已启用 AI 网关的推理表。 如果需要旧版推理表体验,则只能使用 REST API 为 AI 网关配置新终结点。
- 如果你有一个现有的模型服务终结点,它为自定义模型提供服务,并且未配置推理表,则你可以将其更新为使用已启用 AI 网关的推理表。
- 如果您拥有一个用于提供自定义模型的现有模型服务终结点,并且此终结点已配置旧版推理表,那么必须禁用旧版推理表后,才能更新终结点以使用由 AI 网关启用的推理表。
- 启用 AI 网关推理表后, 无法 切换到旧推理表。