将 GenAI Gateway 功能用于 OpenAI

在这篇博文中,我将演示如何利用 API 管理 (APIM) 中新发布的 GenAI 网关功能,使用断路器和负载平衡模式增强 Azure OpenAI 部署的弹性和容量。

背景

之前,我曾分享过使用不同路由算法(权重/优先级)在多个 OpenAI 端点之间平衡流量以提高弹性和性能的各种方法。然而,这些自定义解决方案在流量极高的情况下往往会失败。

由于我已经在之前的博客文章中讨论了与 OpenAI TPM 和 APIM 模式相关的挑战,因此这篇文章将直接关注解决方案。

OpenAI APIM 中的负载平衡功能

该解决方案包括两个主要配置部分:负载平衡和断路器。这些配置可以通过两种方法管理:APIM 门户 (UI) 和 Bicep (基础设施即代码)。

通过门户 (UI) 配置 APIM

  1. 支持负载平衡技术:最近在上一届 Microsoft Build 活动上宣布,APIM 现在支持加权和基于优先级的负载平衡技术。

  2. 创建后端资源:首先在 APIM 中为每个 OpenAI 端点创建后端资源。例如,您可以添加来自不同区域的两个 OpenAI 端点。

  • 在 API 管理中将每个 Az OpenAI 端点添加为后端资源,

通过 Bicep 配置 LB 和断路器

由于目前缺乏对负载均衡器或断路器配置的 UI 支持,因此必须通过 Bicep(基础设施即代码)来完成这些操作。

负载均衡器配置

  1. 定义负载均衡器方法:您可以将负载均衡器配置为使用权重或优先级,或两者兼而有之。在此演示中,我们将使用基于权重的负载平衡,其中一个端点的权重将高于另一个端点。

  2. 代码片段调整:修改 APIM 及其后端池的名称,指定上一步中创建的后端池。此示例使用两个池,但您可以根据需要添加更多池。

    复制
    复制
     resource symbolicname 'Microsoft.ApiManagement/service/backends@2023-09-01-preview' = {
       name: '(APIM-Name)/mybackendpool'
       properties: {
         description: 'Load balancer for multiple backends'
         type: 'Pool'
         pool: {
           services: [
             {
               id: '/subscriptions/(subscripitonid)/resourceGroups/DefaultResourceGroup-SUK/providers/Microsoft.ApiManagement/service/opai-apim/backends/backend1-openai-endpoint'
               priority: 1
               weight: 1
             }
             {
               id: '/subscriptions/(subscripitonid)/resourceGroups/DefaultResourceGroup-SUK/providers/Microsoft.ApiManagement/service/opai-apim/backends/backend2-openai-endpoint'
               priority: 1
               weight: 10
             }
           ]
         }
       }
     }
    
  3. 部署 Bicep 模板:部署此 Bicep 模板并查找后端池中的变化,以确保其部署成功。

  4. 使用新后端名称更新 API:部署后,您将在 APIM 后端中看到新的后端名称。复制该名称并将其替换为您在初始步骤中创建的 API。

    复制
    复制
      az deployment group create --resource-group Rresource-group-name --template-file apim.bicep
    
  5. 断路器配置

    1. 健康探测设置:为每个后端池资源部署断路器条件,包括“故障条件”和“后重试”期限。

    2. 失败条件:定义特定持续时间内观察到的错误数量(例如,1 分钟内出现 5 个错误),并指定被视为错误的 HTTPS 错误代码范围。

    3. 重试时间:指定 APIM 可以在失败的后端池端点上重试运行状况探测的时间。在此配置中,错误代码范围为 400-599,每个后端池的持续时间为 1 分钟。

复制
复制
    resource openaiprodbackend 'Microsoft.ApiManagement/service/backends@2023-09-01-preview' = {
      name: 'APIM-name/nameofbackendpool'
      properties: {
        url: 'https://openaiendpointname.openai.azure.com/openai'
        protocol: 'http'
        circuitBreaker: {
          rules: [
            {
              failureCondition: {
                count: 1
                errorReasons: [
                  'Server errors'
                ]
                interval: 'PT1M'
                statusCodeRanges: [
                  {
                    min: 400
                    max: 599
                  }
                ]
              }
              name: 'myBreakerRulePTU'
              tripDuration: 'PT1M'
              acceptRetryAfter: true
            }
          ]
        }
        description: 'OpenAI PTU'
        title: 'openai-PTU'
      }
    }
  1. 通过 API 验证

    由于没有 UI 来验证断路器配置,请使用 APIM 后端 REST API 来确认更改。使用 Postman 或参阅 APIM 文档以获取验证工具。在 中指定后端名称,backendID在 中指定 APIM 名称serviceName

  2. Bicep 配置现已完成,接下来是测试 LB 和断路器策略的实际作用

验证/测试 www.cqzlsb.com

要测试具有负载平衡的断路器:

  1. 引发错误:确保 OpenAI 端点抛出 400-599 范围内的错误。对权重/优先级中首选的 OpenAI 端点执行压力测试,这应该会导致 HTTP 429 错误(“服务器正忙”)。

  2. 测试 APIM 响应:一旦首选端点无响应,通过 APIM 调用 OpenAI 并验证是否从第二个端点收到响应。

  3. 示例:对美国东部的 OpenAI 端点执行压力测试,结果为 429 错误状态。通过对美国东部 OpenAI 端点的临时调用进行验证,以确认其失败并出现 429。同时,对 APIM 的 POST 请求应该可以正常工作,因为它由辅助后端(即英国南部的 OpenAI 端点)处理。

  4. 后端端点 2:后端端点 2 的权重较高,位于美国东部。使用 Postman 对此端点执行压力测试。

  5. 压力测试结果:对美国东部的 OpenAI 端点进行压力测试应该导致 429 错误状态。

临时呼叫验证:通过临时呼叫 EastUS OpenAI 端点进行验证,以确认它是否因 429 错误而失败。

一旦首选端点无响应,就通过 APIM 调用 OpenAI 并验证是否从第二个端点收到响应。

在此对 APIM 的 POST 请求应该可以正常工作,因为它由辅助后端(即 UKSouth 中的 OpenAI 端点)处理。

结论:

总之,使用 API 管理中的新 GenAI 网关功能可以大大提高 Azure OpenAI 服务的可靠性和性能。通过设置智能流量路由和安全措施,我们可以确保您的服务即使在高负载下也能保持响应。这种方法有助于平衡工作负载,并在出现问题时快速重定向流量,确保您的用户获得流畅可靠的体验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值