你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 Azure OpenAI 模型实现日志记录和监视

Azure AI 服务
Azure API 管理
Azure Monitor
Microsoft Entra ID

此解决方案为 Azure OpenAI 服务 API 的企业部署提供全面的日志记录和监视以及增强的安全性。 该解决方案支持用于跟踪 API 使用情况和性能的高级日志记录功能,以及可靠的安全措施,以帮助保护敏感数据并预防恶意活动。

体系结构

Diagram that shows an architecture that provides monitoring and logging for Azure OpenAI.

下载此体系结构的 Visio 文件

工作流

  1. 客户端应用程序访问 Azure OpenAI 终结点以执行文本生成(完成)和模型训练(微调)。

  2. Azure 应用程序网关为 Azure OpenAI 模型提供单一入口点,并为 API 提供负载均衡。

    注意

    不支持对模型微调、部署、微调模型推理等监控状态的操作进行负载均衡。

  3. Azure API Management 支持对 Azure OpenAI 模型进行安全控制、审核和监视。
    a. 在 API Management 中,通过具有基于订阅的访问权限的 Microsoft Entra 组授予安全性增强的访问权限。
    b. 通过 Azure Monitor 请求日志记录启用与模型的所有交互。
    c. 监视提供详细的 Azure OpenAI 模型用量 KPI 和指标,包括提示信息和标记统计信息,以便追踪用量。

  4. API Management 通过 Azure 专用链接连接到所有 Azure 资源。 此配置通过专用终结点为所有流量提供增强的安全性,并包含专用网络中的流量。

  5. 多个 Azure OpenAI 实例支持横向扩展 API 使用情况,以确保服务的高可用性和灾难恢复。

组件

  • 应用程序网关。 应用程序负载均衡器可帮助确保 Azure OpenAI API 的所有用户都能获得最快的响应和最高的模型完成吞吐量。
  • API 管理。 用于访问后端 Azure OpenAI 终结点的 API 管理平台。 提供 Azure OpenAI 中非原生可用的监视和日志记录。
  • Azure 虚拟网络。 云中的专用网络基础结构。 提供网络隔离,以便模型的所有网络流量私密路由到 Azure OpenAI。
  • Azure OpenAI。 承载模型并提供生成式模型完成输出的服务。
  • 监视。 应用程序的端到端可观测性。 通过 Kusto 查询语言提供对应用程序日志的访问。 还支持仪表板报表以及监视和警报功能。
  • Azure Key Vault。 应用程序使用的密钥和机密的增强安全存储。
  • Azure 存储。 云中的应用程序存储。 为 Azure OpenAI 提供模型训练项目的辅助功能。
  • Microsoft Entra ID。 增强的安全性标识管理器。 启用对应用程序和支持应用程序的平台服务的用户身份验证和授权。 还提供组策略,以确保将最小特权原则应用于所有用户。

备选方法

Azure OpenAI 提供原生的日志记录和监视。 可以使用此原生功能来跟踪服务的遥测数据,但默认认知服务日志记录不会跟踪或记录服务的输入和输出,例如提示、标记和模型。 这些指标对于合规性以及确保服务按预期运行方面尤其重要。 此外,通过跟踪与部署到 Azure OpenAI 的大型语言模型的交互,可以分析组织如何使用该服务,从而确定成本和使用模式,并帮助制定有关缩放和资源分配的决策。

下表比较了默认 Azure OpenAI 日志记录提供的指标与此解决方案提供的指标。

指标 默认 Azure OpenAI 日志记录 本解决方案
请求计数 x x
输入数据(大小)/输出数据(大小) x x
延迟 x x
标记事务(总数) x x
调用方 IP 地址 x(最后一个八位被掩盖) x
模型利用率 x
标记利用率(输入/输出) x x
输入提示详细信息 x(限制为 8,192 个响应字符)
输出完成详细信息 x(限制为 8,192 个响应字符)
部署操作 x x
嵌入操作 x x(限制为 8,192 个响应字符)

方案详细信息

使用生成式 AI 模型的大型企业需要对这些模型的使用情况实施审核和日志记录,以确保负责任的使用和企业合规性。 此解决方案为与 AI 模型的所有交互提供企业级日志记录和监视,以减少对模型的有害使用,并帮助确保满足安全性和合规性标准。 该解决方案与 Azure OpenAI 的现有 API 集成,只需进行少量修改即可利用现有代码库。 管理员还可以监视服务使用情况以便进行报告。

该解决方案提供以下优势:

  • Azure OpenAI 模型执行的全面日志记录,跟踪到源 IP 地址。 日志信息包括用户提交到模型的文本以及从模型收到的文本。 此日志记录有助于确保模型在已批准的服务用例中负责任地使用。
  • 模型 API 的高可用性,可确保即使流量超过单个 Azure OpenAI 服务的限制时也能满足用户请求。
  • 通过 Microsoft Entra ID 管理基于角色的访问,确保实行最低特权原则。

使用情况监视的示例查询

ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend modelkey = substring(parse_json(BackendResponseBody)['model'], 0, indexof(parse_json(BackendResponseBody)['model'], '-', 0, -1, 2))
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])['prompt_tokens']
| extend completiontokens = parse_json(parse_json(BackendResponseBody)['usage'])['completion_tokens']
| extend totaltokens = parse_json(parse_json(BackendResponseBody)['usage'])['total_tokens']
| extend ip = CallerIpAddress
| summarize
    sum(todecimal(prompttokens)),
    sum(todecimal(completiontokens)),
    sum(todecimal(totaltokens)),
    avg(todecimal(totaltokens))
    by ip, model

输出:

Screenshot that shows the output of usage monitoring.

提示使用情况监视的示例查询

ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])['prompt_tokens']
| extend prompttext = substring(parse_json(parse_json(BackendResponseBody)['choices'])[0], 0, 100)

输出:

Screenshot that shows the output of prompt usage monitoring.

可能的用例

  • 为内部企业用户部署 Azure OpenAI 以提高工作效率
  • 适用于内部应用程序的 Azure OpenAI 的高可用性
  • 在受监管的行业内增强 Azure OpenAI 的使用安全性

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

可靠性

可靠性可确保应用程序符合你对客户的承诺。 有关详细信息,请参阅可靠性支柱概述

此方案可确保大型语言模型对企业用户的高可用性。 Azure 应用程序网关提供有效的第 7 层应用程序交付机制,以确保快速且一致地访问应用程序。 可以使用 API Management 来配置、管理和监视对模型的访问。 平台服务(如存储、密钥保管库和虚拟网络)固有的高可用性可确保应用程序的高可用性。 最后,Azure OpenAI 的多个实例可确保在发生应用程序级故障时具有服务复原能力。 这些体系结构组件可帮助确保应用程序在企业规模下的可靠性。

安全性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述

通过实施云服务的应用程序级和网络级隔离的最佳做法,此方案可降低数据外泄和数据泄露的风险。 包含输入到模型的潜在敏感数据的所有网络流量在专用网络中隔离。 此流量不会遍历公共 Internet 路由。 可以使用 Azure ExpressRoute 进一步隔离发往企业 Intranet 的网络流量,并帮助确保端到端网络安全。

成本优化

成本优化就是减少不必要的费用和提高运营效率。 有关详细信息,请参阅成本优化支柱概述

为了帮助你了解运行此方案的成本,我们在 Azure 定价计算器中预配置了所有服务。 若要了解自己的用例的定价变化情况,请更改相应的变量以匹配预期的流量。

以下三个示例成本配置文件提供了基于流量的估计值。 (该估计方法假设文档包含大约 1,000 个标记。)

  • 小型:用于每月处理 10,000 个文档。
  • 中型:用于每月处理 100,000 个文档。
  • 大型:用于每月处理 1000 万个文档。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

其他参与者:

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤