博客 / 詳情

返回

AIBrix v0.5.0 正式發佈:實現批量API支持、KVCache v1連接器升級,全面提升P/D架構協同效能

圖片

項目地址:github.com/vllm-project/aibrix

今日,我們正式發佈 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):
{"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 客户端):

    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 Connector(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,避免產生中間狀態殘留;而角色升級序列功能支持按預設順序(例如:集羣內路由 → 預填充節點 → 解碼節點)在不同角色間進行安全有序的變更發佈,徹底取代隨機更新機制。這套組合方案使得高風險操作(如模式變更、路由調整、運行時升級)變得高度可預測。

    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 分離架構不僅能實現,更能在規模化場景中保持運維整潔性。

# 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

完整示例: https://github.com/vllm-project/aibrix/blob/main/samples/autoscaling/stormservice-pool.yaml


其他改進

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 加入討論,共同貢獻力量。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.