PowerProxy-AOAI 项目中的多部署负载均衡技术解析
背景介绍
PowerProxy-AOAI 是一个用于 Azure OpenAI 服务的智能负载均衡解决方案,它能够有效地管理和分配对 OpenAI 资源的请求。在最新版本中,项目引入了一项重要功能:虚拟部署(virtual deployments)机制,这使得在同一 Azure OpenAI 资源下使用多个部署进行负载均衡成为可能。
核心功能解析
虚拟部署机制
虚拟部署功能允许管理员将多个实际部署(standins)映射到一个逻辑部署名称下。当请求到达时,PowerProxy 会根据配置智能地将请求路由到合适的实际部署。这种设计带来了几个显著优势:
- 资源利用率优化:可以将付费即用(PAYG)和预留容量(PTU)部署组合使用
- 无缝扩展:添加新部署时无需修改客户端代码
- 灵活的流量管理:可以为不同部署设置不同的流量分配比例
配置示例
以下是一个典型的虚拟部署配置示例:
aoai:
endpoints:
- name: PrimaryEndpoint
url: https://primary.openai.azure.com/
key: your_api_key
virtual_deployments:
- name: gpt-35-turbo
standins:
- name: gpt-35-turbo-ptu
non_streaming_fraction: 0.2
- name: gpt-35-turbo-paygo
- name: gpt-4-turbo
standins:
- name: gpt-4-turbo-ptu
non_streaming_fraction: 0.3
- name: gpt-4-turbo-paygo
在这个配置中:
gpt-35-turbo
和gpt-4-turbo
是虚拟部署名称,客户端直接使用这些名称发起请求- 每个虚拟部署下可以配置多个实际部署(standins)
non_streaming_fraction
参数控制非流式请求的分配比例
高级功能
部署级限流
PowerProxy 支持在部署级别设置令牌速率限制,这对于管理不同模型的配额特别有用:
plugins:
- name: LimitUsage
max_tokens_per_minute_in_k:
gpt-35-turbo: 50 # 50k tokens/分钟
gpt-4-turbo: 10 # 10k tokens/分钟
客户端访问控制
通过 AllowDeployments
插件,可以精确控制哪些客户端能访问哪些部署:
clients:
- name: ResearchTeam
key: team_key
deployments_allowed: gpt-35-turbo, gpt-4-turbo
- name: ProductTeam
key: product_key
deployments_allowed: gpt-35-turbo
技术实现原理
PowerProxy 的多部署负载均衡机制基于以下核心设计:
- 请求路由:当请求到达时,首先匹配虚拟部署名称,然后在关联的实际部署间进行负载均衡
- 智能回退:如果某个部署达到配额限制,系统会自动尝试下一个可用部署
- 跨端点平衡:相同名称的虚拟部署可以配置在多个端点上,实现全局负载均衡
- 状态感知:系统会跟踪每个部署的当前状态和配额使用情况
最佳实践
- 部署命名规范:建议使用一致的命名方案,如
{模型}-{类型}-{序号}
- 配额分配:根据实际业务需求合理设置不同部署的流量分配比例
- 监控集成:结合 Azure Monitor 跟踪各个部署的使用情况和性能指标
- 渐进式部署:新增部署时,可以先分配小比例流量进行验证
总结
PowerProxy-AOAI 的多部署负载均衡功能为 Azure OpenAI 服务的使用提供了极大的灵活性和可控性。通过虚拟部署机制,管理员可以轻松管理复杂的部署场景,优化资源利用率,同时确保服务的稳定性和可靠性。这一功能特别适合需要同时使用多种配额类型(PTU 和 PAYG)或需要精细控制模型访问权限的企业级应用场景。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考