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

多租户和 Azure OpenAI 服务

Azure OpenAI 服务 提供对 OpenAI 的强大语言模型的访问权限。 本文介绍适用于多租户解决方案的 Azure OpenAI 的主要功能。 查看建议的资源,帮助你规划方法并使用 Azure OpenAI。

隔离模型

如果有多个租户系统使用 Azure OpenAI,则需要确定租户所需的隔离级别。 应根据以下因素设计隔离模型:

  • 计划拥有的租户数
  • 你的租户是否有需要网络或基础设施隔离的合规要求
  • 您的租户是否需要使用他们自己的数据进行微调的模型
  • 租户是否需要不同的模型版本或模型生命周期

下表总结了在多租户系统中使用 Azure OpenAI 时可以采用的部署方法:

注意事项 专用 Azure OpenAI 服务 共享的 Azure OpenAI 服务,每个租户的专用模型部署 共享 Azure OpenAI 服务、共享模型部署 租户提供的 Azure OpenAI 服务
数据隔离 中等
性能隔离 低到中等,具体取决于每个租户的每分钟令牌(TPM)使用情况。
部署复杂性 低到中,具体取决于租户数。 在中等环境下,你需要管理部署名称和配额。 不适用,由客户管理。
操作复杂性 中等 提供商的低值。 租户的中到高。
示例方案 需要与其他租户进行网络隔离的单租户部署。 具有特定模型生命周期或微调要求的租户。 具有共享应用程序层的大型多租户解决方案。 具有特定合规性或微调要求的租户。

专用 Azure OpenAI 服务

如果你是服务提供商,请考虑为 Azure 订阅中的每个租户部署 Azure OpenAI 实例。 此方法为每个租户提供数据隔离。 它要求在增加租户数时部署和管理越来越多的 Azure OpenAI 资源。

如果每个租户有单独的应用程序部署,或者需要规避限制,例如每分钟配额或请求,请使用此方法。 有关详细信息,请参阅 Azure OpenAI 配额和限制

下图演示了提供程序订阅中每个租户的 Azure OpenAI 模型。

展示提供商订阅中每个租户的 Azure OpenAI 模型的示意图。

共享 Azure OpenAI 服务

可以选择在多个租户之间共享 Azure OpenAI 实例。 Azure OpenAI 资源部署在(服务提供商)的 Azure 订阅中。 你负责管理它。 此解决方案最容易实现,但它提供最少的数据隔离和性能隔离。

共享 Azure OpenAI 资源不会为每个模型部署提供安全分段。 租户可能可以使用他们无权使用的模型。 因此,在使用微调的模型时,请避免共享 Azure OpenAI 实例。 可能会公开敏感信息并允许未经授权的访问特定于租户的数据或资源。

在多个租户之间共享 Azure OpenAI 实例也可能导致 干扰性邻居 问题。 这可能会导致某些租户出现更高的延迟。 还需要使应用程序代码能够感知多租户。 例如,如果要向客户收取共享 Azure OpenAI 实例的消耗成本,请实现逻辑来跟踪应用程序中每个租户的令牌总数。

还可以部署多个共享的 Azure OpenAI 实例。 例如,如果遵循 部署标记模式,请在每个标记中部署共享的 Azure OpenAI 实例。 如果在多个区域中部署解决方案,则应在每个区域中部署 Azure OpenAI,以便:

  • 避免跨区域流量延迟。
  • 支持数据驻留要求。
  • 在需要相同区域部署的其他服务中使用区域 Azure OpenAI。

如果拥有共享的 Azure OpenAI 实例,请务必考虑其 限制管理配额

下图演示了共享的 Azure OpenAI 模型。

展示共享 Azure OpenAI 模型的图示。

部署共享 Azure OpenAI 服务时,可以决定服务中的模型部署是共享还是专用于特定客户。

租户之间的共享模型部署

共享模型部署给多个租户可以简化您的运营负担,因为您需要管理的部署和跟踪的模型版本减少了。如果可能,请计划使用共享模型部署,仅在需要专用功能时创建专用模型部署。

每个租户的专用模型部署

可以为每个租户或具有无法使用共享模型部署的特殊要求的租户创建模型部署。 为租户使用专用模型部署的常见原因包括:

  • 配额和成本管理。 专用模型部署通过跟踪每个模型使用的令牌数量,促进针对租户的TPM分配。 可以使用此数字精确分配成本并管理每个租户的使用情况。 如果使用 预配的吞吐量单位(PTU),可以将 PTU 分配给特定客户,并为其他客户使用其他计费模型。

  • 内容筛选策略。 有时,特定租户可能需要唯一的内容筛选策略,例如特定于租户的禁止字词阻止列表。 在模型部署范围内指定内容筛选策略。

  • 模型类型和版本。 可能需要为不同的租户使用不同的模型或模型版本。 租户可能还需要自己的模型生命周期管理过程。

  • 针对租户的优化调整。 如果为每个租户创建不同的微调模型,则需要为每个微调模型创建单独的模型部署。

    请记住,大多数用例不需要微调。 通常,最好使用 Azure OpenAI On Your Data 或其他检索扩充生成 (RAG) 方法来构建模型。

  • 数据存储地 此方法支持不同的数据驻留要求。 例如,可以为具有严格数据驻留需求的租户提供区域模型部署,并为其他租户使用全局模型部署。

每个模型部署都有唯一的 URL,但请务必记住基础模型与其他 Azure 客户共享。 这些模型还共享 Azure 基础结构。

Azure OpenAI 不会为每个模型部署强制实施访问控制,因此应用程序需要控制哪些租户可以访问哪个模型部署。

租户提供的 Azure OpenAI 资源

在某些情况下,租户可能会在自己的 Azure 订阅中创建 Azure OpenAI 实例,并向其授予应用程序访问权限。 在以下方案中,此方法可能适用:

  • 租户具有来自Microsoft的特定配额和权限,包括对不同模型的访问权限、定义的内容筛选策略和预配的吞吐量使用情况。

  • 租户有一个经过微调的模型,他们需要在您的解决方案中使用。

  • 租户要求其环境中的组件通过客户管理的 Azure OpenAI 实例进行处理和发送数据。

若要访问租户订阅中的 Azure OpenAI 实例,租户必须向应用程序提供访问权限。 应用程序必须通过其Microsoft Entra 实例进行身份验证。 一种方法是发布 多租户 Microsoft Entra 应用程序。 以下工作流概述了此方法:

  1. 租户在其自己的 Microsoft Entra 租户中注册多租户的 Microsoft Entra 应用程序。

  2. 租户向多租户Microsoft Entra 应用程序授予对 Azure OpenAI 资源的适当访问权限级别。 例如,租户可以使用基于角色的访问控制将应用程序分配到 Azure AI 服务用户 角色。

  3. 租户提供它创建的 Azure OpenAI 资源的资源 ID。

  4. 应用程序代码可以使用与你自己的 Microsoft Entra 实例中的多租户 Microsoft Entra 应用程序关联的服务主体来访问租户的 Azure OpenAI 实例。

或者,可以要求每个租户创建供服务使用的服务主体,并提供其凭据。 此方法要求你安全地存储和管理每个租户的凭据,这是潜在的安全责任。

如果租户在其 Azure OpenAI 实例上配置网络访问控制,请确保可以访问它们。

下图演示了租户订阅中每个租户的 Azure OpenAI 模型。

显示租户订阅中每个租户的 Azure OpenAI 模型的关系图。

支持多租户的 Azure OpenAI 功能

Azure OpenAI 提供支持多租户的以下功能。

助手 API

助手 API 将功能添加到 Azure OpenAI 服务,使其适合创建 AI 助手。 它包括调用工具和 API 的功能,以及搜索文件以支持模型生成的答案。 它使服务能够管理持久聊天线程。 该 API 还可以在沙盒环境中生成和运行代码。 为了支持这些功能,助手 API 需要存储一些数据。

在多租户解决方案中使用助手 API 时,可以选择创建专用于单个租户的助手,也可以在多个租户之间共享助手。 在所有存储数据中务必考虑租户的隔离,尤其是在涉及共享助手时。 例如,应确保为每个租户单独存储会话线程。

Assistants API 支持函数调用,这会发送应用程序指令,说明要调用哪些函数以及要包括哪些参数。 确保所做的任何函数调用都支持多租户。 一种方法是在调用下游系统时包含租户 ID。 验证您的应用程序中的租户 ID,不要依赖语言处理模型为您传播租户 ID。

基于自有数据的 Azure OpenAI

Azure OpenAI 数据上的功能使大型语言模型能够直接查询知识源,如索引和数据库,作为从语言模型生成响应的一部分。

发出请求时,可以指定应查询的数据源。 在多租户解决方案中,确保数据源具有多租户感知性,并且可以针对请求指定租户筛选器。 适当地将租户 ID 传播到数据源。 例如,假设你查询 Azure AI 搜索。 如果单个索引中有多个租户的数据,请指定一个筛选器,以将检索的结果限制为当前租户的 ID。 或者,如果为每个租户创建索引,请确保为当前租户指定正确的索引。

批量部署

可以使用 批处理部署在 Azure OpenAI 中部署某些模型。 批处理部署允许使用单独的 批处理配额对分组请求进行异步处理。 发送到批处理部署的请求有 24 小时的目标周转时间,成本低于标准部署。 与标准部署不同,批处理配额会限制排队令牌的数量,而非 TPM。

此部署类型非常适合不需要即时响应且处理大量请求无法中断实时响应的情况。

例如,分析用户反馈情绪的系统可以使用批处理部署来避免限制它在其他应用程序中进行实时交互所需的标准部署配额。 此方法还降低了处理成本。

在多租户解决方案中,可以在所有租户之间共享批处理部署,也可以为每个租户单独创建。

  • 为每个租户单独进行批次部署:

    通过将令牌配额分配给每个特定于租户的批量部署,可防止任意单个租户垄断资源。 此方法还支持跟踪每个租户的令牌使用情况,这对于成本分配很有用。

  • 共享批处理部署:

    共享批处理部署可以在合并作业或单独的批处理作业中处理来自多个租户的请求。 如果将来自多个租户的请求合并到单个批处理作业中,请确保可以正确地将响应映射回相应的租户。

    批处理作业在作业级别进行管理,因此最好按租户分隔它们。 此方法允许您取消或删除每个租户的任务。 无法取消或删除批处理中的单个请求。

通过仔细管理批处理部署,可以平衡成本效益和资源分配,同时保持租户隔离和运营灵活性。

贡献者

Microsoft维护本文。 以下参与者撰写了本文。

主要作者:

其他参与者:

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