AIBrix v0.5.0 正式发布:实现批量API支持、KVCache v1连接器升级,全面提升P/D架构协同效能

项目地址:github.com/vllm-projec...

今日,我们正式发布 AIBrix v0.5.0。此版本引入与 OpenAI 兼容的批处理 API,专为处理高吞吐、时延不敏感的离线推理与评估任务设计,有效避免对实时端点造成干扰。同时,新版本集成了全新的 KVCache 连接器(AIBrixOffloadingConnectorV1Type3),借助其流水线式预取与分层卸载机制,显著提升 KVCache 卸载与复用的效率。此外,v0.5.0 将 StormService 打造为生产级的控制面,通过 PodSet/PodGroup 原语实现多 Pod 管理,提供拓扑与负载感知的路由能力,并利用 subTargetSelector 实现角色级自动扩缩,从而为 P/D 分离架构提供精细化的资源伸缩。

下面是 v0.5.0 的核心功能概览。

批处理 API

AIBrix 本次更新正式加入对批处理 API 的支持。批处理 API 旨在优化大体量、对延迟不敏感的推理工作负载,是一项强大的新功能。

随着生成式人工智能(GenAI)应用的规模不断扩大,并非每个请求都需要即时响应。像大规模数据集评测、离线内容生成和批量数据处理等任务,常常会使实时服务接口拥堵不堪,导致资源利用效率低下和成本增加。AIBrix 批处理 API 通过允许用户异步提交大量请求来解决这一问题。通过将这些请求以优化过的数量批次处理,相较于标准在线服务,AIBrix 可以显著提高 GPU 利用率和集群整体吞吐量。

主要特性

  • OpenAI 兼容性: 批处理 API 被设计为可直接替代现有工作流,支持标准的 OpenAI 批处理 API(例如,/v1/batches)。
  • 异步处理: 支持"即发即忘"架构。通过 .jsonl 文件提交大量任务后,客户端应用程序可以处理其他任务,并在结果就绪后进行检索。
  • 可配置的作业池: 支持通过可配置的作业池大小微调资源分配,以适应特定的硬件限制和吞吐量目标。
  • 增强的错误处理: 强大的验证和错误报告功能支持请求自动重试,确保您可以追踪大规模批处理中每个单独请求的状态。

快速入门

由于 AIBrix 批处理 API 与 OpenAI 兼容,对于熟悉标准大语言模型工具的人来说,上手操作十分简单。

  1. 准备批处理输入(requests.jsonl):
json 复制代码
{"custom_id": "req-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "llama-3-8b", "messages": [{"role": "user", "content": "Hello world!"}]}}
{"custom_id": "req-2", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "llama-3-8b", "messages": [{"role": "user", "content": "Explain batch processing."}]}}
  1. 提交批处理作业(使用指向 AIBrix 的标准 OpenAI 客户端):
ini 复制代码
from openai import OpenAI

client = OpenAI(
    base_url="http://your-aibrix-endpoint/v1",
    api_key="aibrix"
)

# Upload file
batch_file = client.files.create(
  file=open("requests.jsonl", "rb"),
  purpose="batch"
)

# Create batch job
batch_job = client.batches.create(
  input_file_id=batch_file.id,
  endpoint="/v1/chat/completions",
  completion_window="24h"
)

print(f"Batch submitted: {batch_job.id}")

了解更多

如需完整的部署配置和 API 参考,请访问我们的官方文档

KVCache v1 Connector

我们在 v0.4.0 版本中发布的 AIBrix KVCache Connector,经过基准测试与内部实际部署验证,发现了一些重要的可以提升性能的优化机会。为充分挖掘这些优化点以发挥 KVCache 卸载的潜力,我们在 v0.5.0 版本中实现了一系列关键优化,并推出了新的 KVCache Connector9(AIBrixOffloadingConnectorV1Type3)。

核心优化技术包含:

  • 流水线式 KVCache 预取和加载技术

我们通过让预取、加载与计算这三个关键阶段并行执行,以流水线充分重叠的优化方式,不仅大幅减少了空闲等待时间,消除了TPOT(每秒输出 token 数)的延迟损耗,更让系统吞吐性能突破原有瓶颈。

  • 分层式 KVCache 卸载机制

通过将 KVCache 卸载操作与推理各层的前向计算同步进行,有效隐藏了数据传输延迟。使得即使 KVCache 命中率较低时,仍能保持高效推理,确保推理引擎持续满载运转,实现资源利用率最大化。

相较于 v0.4.0 版本的 KVCache Connector(AIBrixOffloadingConnectorV1Type1),在 Llama 3.1 70B 模型(张量并行度=8)的测试中,v0.5.0 版本的这套组合优化方案使 TPOT 与整体吞吐量双双提升超过20%,同时仍保持优异的 TTFT(首 token 时延)。

生产级 P/D 分离编排方案

v0.5.0 版本将 StormService 升级为面向大规模异构 P/D 分离集群的高级控制面。全新推出的 PodGroup API 使 StormService 能够与协同调度生态系统(Coscheduling、Godel、Volcano)无缝集成,将紧耦合的工作节点作为统一调度单元进行编排。结合新设计的 PodSet API,StormService 现已能显式管理多 Pod 工作节点与分片组, 即将其作为逻辑整体统一控制生命周期、拓扑结构与运行状态,同时保持与现有单 Pod 架构的向后兼容性。

此外,v0.5.0 为复杂部署场景提供了更强大的滚动更新与重启语义。新增的 FullRecreate 策略让运维人员能够以原子方式恢复异常 PodSet,避免产生中间状态残留;而角色升级序列功能支持按预设顺序(例如:集群内路由 → 预填充节点 → 解码节点)在不同角色间进行安全有序的变更发布,彻底取代随机更新机制。这套组合方案使得高风险操作(如模式变更、路由调整、运行时升级)变得高度可预测。

yaml 复制代码
spec:
      roles:
        - name: prefill
          replicas: 3
          podGroupSize: 2 # introduce new field to indicate the pod group size. for example DP or TP case.
          stateful: true
          recoveryPolicy: ReplaceUnhealthy # ReplaceUnhealthy or Recreate
          template:
            ...

路由层现已升级至支持这些编排原语。在副本模式和池化模式下,AIBrix 会优先选择同一 RoleSet/PodSet 中的预填充与解码节点进行配对,通过负载感知评分机制选取最空闲的候选节点,并将基于 Nixl 的 P/D 分离架构与正确的 kv_transfer_params 参数对齐,确保流量能够抵达具备正确 KVCache 状态的目标群组。新增的防护机制可保证路由逻辑遵循 HttpRoute 状态与故障条件,弥补了早期版本中存在的正确性缺陷。

此外,我们为 StormService 新增了角色级自动扩缩容功能,使预填充与解码角色能根据各自指标独立伸缩。通过 PodAutoscaler 中新引入的 subTargetSelector 选择器,运维人员可为不同角色或资源池配置独立的自动扩缩容策略(例如对预填充角色采用激进的扩缩容策略,对解码角色则采用保守策略),这对 P/D 分离形态下的池化场景与异构场景至关重要。这些改进使得 P/D 分离架构不仅能实现,更能在规模化场景中保持运维整洁性。

yaml 复制代码
# PodAutoscaler for prefill role
apiVersion: autoscaling.aibrix.ai/v1alpha1
kind: PodAutoscaler
metadata:
  name: ss-pool-prefill
  namespace: default
  annotations:
    autoscaling.aibrix.ai/storm-service-mode: "pool"
spec:
  scaleTargetRef:
    apiVersion: orchestration.aibrix.ai/v1alpha1
    kind: StormService
    name: ss-pool

# new Added: Select the prefill role within the StormService
  subTargetSelector:
    roleName: prefill

完整示例: github.com/vllm-projec...


其他改进

v0.5.0 版本还强化了运行时层,使运维人员能够在所有引擎上获得更清晰一致的控制路径。元数据服务器已完成从 Go 到 Python 的重构,并集成健康与存活探查,镜像体积显著缩减;下载器现能更稳健地处理递归式对象存储布局,使得实际使用中的模型与制品管理标准化变得更为容易。通过 Webhook 与轻量级封装库,AIBrixRuntime 边车容器可自动注入到 Deployment 和 StormService 工作负载中,实现了指标收集、下载管理与运维操作的统一,无需再为每个推理引擎编写定制化代码。

在此基础上,我们强化了面向多租户场景的 LoRA 与模型适配器的工作流。AIBrix 现支持将适配器伸缩至预期副本数,重构了适配器副本跟踪机制,新增类型化封装以降低集成难度,并允许通过运行时直接拉取 LoRA 制品。这些改进共同使得在单个基础模型上跨多引擎、多集群运行大量 LoRA 组件的实践更健壮,更易于实现自动化。

自动扩缩容组件也进行了显著的加强。v0.5.0 版本通过可重试的 RestMetricsFetcher、共享客户端/聚合器以及配置更新中的竞态条件修复,统一了指标采集流程,让扩缩容决策既更快速又更可靠。我们优化了 KPA 默认参数,增加指标标签选择器支持,仅在副本数实际变更时触发事件,并将扩缩容历史直接暴露于 PodAutoscaler 状态中。这些改进使自动扩缩容从一个黑盒组件转变为可观测、可调试、策略驱动的系统模块。

总体而言,这些在运行时、LoRA、自动注入与自动扩缩容方面的增强,共同推动 AIBrix 向开箱即用控制面的目标迈进。

如需查看完整变更列表、提交历史与贡献者详情,请参阅 AIBrix v0.5.0 版本发布说明。

贡献者与社区

v0.5.0 版本共包含 39 项贡献,其中 21 项来自首次贡献者 💫。衷心感谢所有通过代码提交、问题反馈、代码审查和建议参与推动此版本进展的每一位参与者。

特别向我们的新贡献者致敬:

@JonathonShea, @bigerous, @jiangxiaobin96, @mayooot, @zyfy29, @zhengkezhou1, @tianzhiqiang3, @atakli, @jwjwjw3, @lx1036, @chethanuk, @baozixiaoxixi, @TylerGillson, @omrishiv, @lex1ng, @ChenTaoyu-SJTU, @zhenyu-02, @yapple, @xvoron, @freedown19, @Leafykn 🙌

你们的贡献让 AIBrix 更加稳健、更具备生产环境可用性,也让我们的开源社区更加开放包容。期待大家持续参与!

未来规划

我们正持续推动 AIBrix 构建为面向现代 LLM 工作负载的全生产级云原生技术栈。在 v0.6.0 版本中,我们将聚焦以下几个核心方向:生产级 LoRA 与无服务器 LLM 服务、以 KVCache 为核心的 P/D 分离与卸载工作流、容错性与稳定性探索,以及生态集成------包括 vLLM 语义路由与 Envoy AI 网关等故意排除在 AIBrix 核心但保持技术栈可组合性的功能领域。

如果您正在生产环境中运行 LLM,或正在探索无服务器架构、KVCache、P/D 分离等新架构方向,我们诚挚期待您就 v0.6.0 技术路线图提出反馈并参与协作------欢迎在 GitHub 加入讨论,共同贡献力量。

相关推荐
yumgpkpm3 小时前
数据可视化AI、BI工具,开源适配 Cloudera CMP 7.3(或类 CDP 的 CMP 7.13 平台,如华为鲲鹏 ARM 版)值得推荐?
人工智能·hive·hadoop·信息可视化·kafka·开源·hbase
无限进步_4 小时前
C语言动态内存管理:掌握malloc、calloc、realloc和free的实战应用
c语言·开发语言·c++·git·算法·github·visual studio
Dr.勿忘5 小时前
开源Unity小框架:高效单例与模块化设计
游戏·unity·开源·c#·游戏引擎·游戏程序·gamejam
NocoBase5 小时前
给开发者的无代码/低代码技术决策指南(2026)
低代码·开源·无代码·无代码开发平台
用户345848285056 小时前
Java内存模型如何保证有序性?
github
孟祥_成都6 小时前
面试官说: "你怎么把 Radio 组件玩出花的,教教我! “
前端·开源
开源头条6 小时前
2025开放原子开发者大会开源鸿蒙技术分论坛:AI赋能筑智基,生态共荣启新篇
开源·开放原子·harmonyos
HelloGitHub7 小时前
比 MySQL 轻,比 SQLite 强:终于有人把 AI 数据库做对了
数据库·开源·github