Back to blog

Prism: Cost-Efficient Multi-LLM Serving via GPU Memory Ballooning

Prism 通过 GPU 内存气球技术实现多 LLM 共享服务,统一时间共享和空间共享,SLO 达标率下支持 2.3-3.5x 更多请求,已在 10K+ GPU 生产环境部署

Prism: Cost-Efficient Multi-LLM Serving via GPU Memory Ballooning

一、论文概述

项目内容
标题Prism: Cost-Efficient Multi-LLM Serving via GPU Memory Ballooning
作者Shan Yu, Yifan Qiao, Mingyuan Ma, Yangmin Li, Shuo Yang, Xinyuan Tong, Yang Wang, Zhiqiang Xie, Yuwei An, Shiyi Cao, Ke Bao, Deepak Vij, Xiaoning Ding, Yichen Wang, Qingda Lu, Zhong Wang, Gao Gao, Harry Xu, Junyi Shu, Jiarong Xing, Ying Sheng
机构Sky Computing Lab, UC Irvine / Alibaba Cloud / NVIDIA
论文arXiv:2505.04021
代码github.com/ovg-project/kvcached
会议OSDI’26
发布2025-05-06 (v1), 2026-06-10 (v3)
许可CC BY 4.0

二、核心思想

问题定义

多 LLM 服务面临 GPU 严重利用不足的挑战:

挑战说明现有方法的局限
GPU 利用率低GPU duty cycle 常低于 30%,大量空闲内存浪费静态分配导致资源碎片化
时间共享抖动模型频繁换入换出导致 PCIe 传输瓶颈QLM 等时间共享方案在重叠活跃时 thrashing
空间共享僵化空闲模型权重锁定 GPU 内存MuxServe 等空间共享方案无法释放空闲资源
需求动态变化突发模型组随时间快速转移无原则性机制适应动态工作负载变化

核心观察:生产环境分析揭示了动态突发模式(bursty-group pattern),模型活跃组随时间转移,现有方法无法同时满足 SLO 和效率。

解决方案概述

Prism 采用内存气球(Memory Ballooning)技术统一时间和空间共享:

  1. kvcached 驱动:GPU 内存层面的弹性管理

    • 统一模型权重和 KV Cache 管理
    • 跨模型透明内存重分配
    • 快速模型加载(引擎池复用)
  2. 内存感知调度:

    • KVPR(KV Pressure Ratio)驱动的模型放置
    • Slack-aware 请求仲裁(Moore-Hodgson 算法)
    • TTFT 优先的 SLO 优化
  3. 系统架构:

    • 前端请求路由
    • 全局调度器(模型放置决策)
    • 本地调度器(请求调度)
    • 弹性内存池(按需分配/回收)

三、技术架构

整体框架图

Prism 系统架构

Prism Architecture
├── Frontend (请求路由)
│   ├── Request Router
│   └── Redis Queue (请求缓存)
├── Global Scheduler (全局调度)
│   ├── KVPR 模型放置算法
│   ├── 负载感知调度
│   └── ZeroMQ 通信
├── Local Scheduler (本地调度)
│   ├── Slack-aware Request Arbitration
│   ├── Moore-Hodgson 算法
│   └── Per-GPU 请求队列
├── kvcached (内存气球驱动)
│   ├── GPU 物理内存管理
│   ├── 虚拟地址空间映射
│   ├── 按需物理页创建
│   └── 弹性扩展/收缩
└── Engine Pool (引擎池)
    ├── 预初始化引擎
    ├── 虚拟地址空间复用
    └── 快速模型激活

生产环境负载分析

模型-请求动态

关键发现:

观察说明影响
突发模型组仅 23%-50% 模型同时活跃,活跃组每小时变化 54-766 次需要动态资源分配
请求速率极端波动CV > 1,每小时 40-100 次空闲区间需要快速响应能力
模式突然切换活跃组在无预警下转移无法依赖历史稳定性预测
异构激活模式部分模型持续活跃,部分仅偶尔激活需要差异化服务策略

时间/空间共享失败案例

时间空间共享对比

共享方式问题失败场景
纯时间共享模型频繁换入换出两模型同时活跃时 thrashing
纯空间共享空闲模型权重锁定活跃模型突发时内存不足

GPU 内存气球机制

内存气球

核心设计:

设计说明解决的问题
D1: 统一管理模型权重和 KV Cache 统一虚拟/物理内存管理权重-KV Cache 快速重分配
D2: 自动映射Token Block 自动映射到物理页异构模型 KV Cache 共享
D3: 弹性扩展按需创建物理页,懒加载映射动态工作负载适应

工作原理:

应用层 (Engine)
├── 虚拟地址空间 (连续)
│   ├── Model Weights
│   ├── KV Cache Pool
│   └── Intermediate Buffers
│
kvcached (Shim Layer)
├── 物理页管理
│   ├── 按需创建 (On-Demand)
│   ├── 懒加载映射 (Lazy Mapping)
│   └── 弹性扩展/收缩
│
GPU 物理内存
├── Page 0: [Weight Block 0]
├── Page 1: [KV Cache Block 0]
├── Page 2: [KV Cache Block 1]
├── Page 3: [Free]
└── ...

负载感知模型放置

KV Pressure Ratio (KVPR):

KVPR=w_token_rateshared_kvKVPR = \frac{w\_token\_rate}{shared\_kv}

其中:

  • w_token_rate=token_rate×token_sizeSLOw\_token\_rate = \frac{token\_rate \times token\_size}{SLO}(SLO 加权 token 内存使用率)
  • shared_kvshared\_kv:GPU 可用于 KV Cache 的内存

放置策略:

  1. 按 w_token_ratew\_token\_rate 降序排序模型(优先高需求)
  2. 为每个模型选择 KVPR 最低的 GPU
  3. 确保高需求模型优先分配资源

Slack-Aware 请求仲裁

Moore-Hodgson 算法:最小化截止时间错过数

步骤操作
1按截止时间升序排序请求
2逐个调度请求
3若当前请求导致错过截止时间,替换已调度中执行时间最长的请求

关键特性:

  • 利用精确时间松弛量(time slack)
  • 超越简单截止时间优先级
  • 最大化 SLO 达标率

四、核心创新

创新点说明理论/实验依据
内存气球GPU 内存层面弹性管理,统一时间和空间共享图 4,§5
kvcached 驱动GPU 运行时层内存管理,跨模型透明重分配开源实现
KVPR 放置基于 KV 压力比的负载感知模型放置图 7,§6.1
Slack-aware 仲裁Moore-Hodgson 算法最大化 SLO 达标率§6.2
引擎池复用解耦引擎和模型生命周期,快速模型激活图 10,§5.3
突发模式分析生产环境多 LLM 负载特征分析图 1,§3

五、实验结果

端到端性能

端到端性能

指标Prism vs MuxServe++Prism vs 静态分区
请求吞吐量+2.3x+3.5x
TTFT SLO 达标率显著更高显著更高
99% 达标点更高请求量更高请求量

关键发现:

  • Prism 在所有基准测试中一致超越所有 baseline
  • 在 Hyperbolic trace 上,支持 2.3x-3.5x 更多请求仍保持 99% SLO 达标
  • 在 Arena-Chat trace 上,处理 3x+ 更多请求

跨模型内存协调

跨模型内存协调

场景Prism静态分区
Model1 空闲,Model2 突发释放内存给 Model2内存锁定无法重用
KV Cache 使用更高(弹性扩展)固定上限
吞吐量更高受限于内存碎片

大规模评估

大规模评估

配置PrismMuxServe++静态分区
16 GPU 99% TTFT 达标达标未达标未达标
32 GPU 99% TTFT 达标达标达标需更多 GPU
GPU 节省16 GPU32 GPU32+ GPU

模型激活延迟

模型大小激活时间
1B-8B< 0.7s
14B1.3s
> 70B1.5s

生产环境部署

公司指标提升
Company AGPU 吞吐量3.89x
Company B每 GPU 收入2.86x

部署规模:10K+ GPU 生产环境

系统开销

指标数值
TTFT 开销3-4% (高负载)
TPOT 开销7-13% (高负载)
迁移频率10 分钟内 3 次 GPU 间迁移
激活频率10 分钟内 2 次空闲激活

六、系统配置

硬件环境

组件配置
GPU4 节点 × 8 NVIDIA H100-80G
网络600GB/s NVLink + 100Gbps Ethernet
CPU2× 52-core Intel Xeon Platinum 8480+
DRAM1.7 TB
接口PCIe Gen5 x16

模型配置

模型系列参数规模任务类型
Llama-3.1/3.38B-70B文本生成
Qwen2/2.57B-72B文本生成
DeepSeek-R114B-70B推理/文本生成
Distilled-DeepSeek14B文本生成

调度配置

策略参数
内存共享弹性气球扩展
模型放置KVPR 负载感知
请求仲裁Moore-Hodgson 算法
SLO 优先级TTFT 优先
引擎池预初始化复用

七、相关工作

工作方法与 Prism 的差异
MuxServe空间共享静态分区,无弹性
QLM时间共享频繁换入换出,thrashing
Aegaeon时间共享模型卸载,无内存协调
ServerlessLLM无服务器冷启动延迟高
vAttentionCUDA VMM单 LLM 优化,无跨模型
DistServePD 分离单模型优化

八、总结

核心贡献

  1. 内存气球:首次在 GPU 运行时层实现跨模型弹性内存管理
  2. kvcached:开源 GPU 内存管理驱动,统一时间和空间共享
  3. KVPR 放置:基于 KV 压力比的负载感知模型放置策略
  4. Slack-aware 仲裁:Moore-Hodgson 算法最大化 SLO 达标率
  5. 生产验证:10K+ GPU 部署,3.89x 吞吐量提升
  6. 开源贡献:kvcached 开源,可集成到 SGLang/vLLM

技术影响

  • 成本效率:显著降低多 LLM 服务成本
  • 资源利用:GPU 利用率从 <30% 提升到高效利用
  • SLO 达标:在更高负载下保持严格 SLO
  • 系统兼容:可与自动扩展系统无缝集成
  • 开源生态:为社区提供弹性内存管理基础设施

局限性

  • 实现复杂度:需要修改推理引擎集成 kvcached
  • 模型规模:大模型(>70B)激活仍需 1.5s
  • 评估范围:主要在 Hyperbolic/Novita/Chatbot Arena trace 验证
  • 内存开销:kvcached 自身有少量内存开销
  • 调度延迟:全局调度器决策有少量延迟

九、参考资源