阿里云Tair KVCache:打造以缓存为中心的大模型Token超级工厂
一、Tair KVCache 简介
Tair KVCache 是阿里云瑶池旗下云数据库 Tair 面向大语言模型推理场景推出的 KVCache 缓存加速服务。
随着互联网技术的演进与流量规模的激增,缓存技术逐渐成为系统架构的核心组件。该阶段催生了 Redis 等开源缓存数据库,阿里巴巴基于自身业务需求自主研发了 Tair 分布式缓存系统。历经十年技术沉淀,该系统已支撑阿里云百万企业客户及阿里巴巴集团双11等核心场景的超高并发需求。
当前大语言模型(LLM)推理的快速发展推高了算力需求,与此同时,推理过程中的 KVCache 技术所需的巨大显存消耗成为显著瓶颈。KVCache 技术通过缓存历史 Token 的 Key/Value 向量矩阵避免重复计算,虽将时间复杂度从 O(n²) 降至 O(n),却导致显存占用随生成长度线性暴增,成为制约长文本生成和批量推理的核心瓶颈。
Tair KVCache 通过构建显存-内存-存储三级缓存体系,实现 KVCache 动态分层存储,将 KVCache 由“纯显存驻留”升级为“分级缓存架构”,在提升计算效率的同时显著扩展上下文长度,成为加速 LLM 推理的核心组件。
二、AI 场景对内存的需求
(一) HBM容量瓶颈
当前人工智能模型的规模扩张已彻底脱离硬件发展的线性轨道,存储容量与算法需求间的代际鸿沟日益凸显。以 Transformer 架构为核心的尖端模型(如 DeepSeek-R1、ChatGPT4.5)正以两年 240 倍的指数级速度突破参数边界,逐步挺进万亿参数时代,而同期主流AI硬件的高带宽存储器(HBM)容量却仅能维持两年约 1.8 倍的缓慢爬升(如 NVIDIA GPU 从 A100 的 80GB 到 H100 的 141GB)。这意味着:容量增速脱节 —— 模型参数量增速达 240 倍/两年 vs. HBM 容量增速仅 1.8 倍/两年,二者相差超过 130 倍;硬件与算法间的失衡发展,成为了 AI 算力进化的基础性约束条件。

图1:AI和内存墙 [1]
(二)带宽瓶颈
在大语言模型推理场景中,当尝试将部分计算数据从高速 HBM 内存扩展到本地DRAM、SSD 或通过 RDMA 协议扩展至远端存储时,带宽资源的约束成为核心挑战。由于模型参数和推理过程中动态生成的 KVCache 通常优先驻留在 HBM 中,当模型规模超出 HBM 容量上限时,数据被迫向 DRAM 或 SSD 换入换出,此类低速存储介质的带宽(例如 SSD 带宽仅为 HBM 的百分之一)会严重拖累推理效率。若存储层级间的带宽不足,会导致计算单元频繁因数据等待而空闲,显著降低硬件利用率。

表1:存储介质带宽
为应对这一矛盾,如何基于有限带宽充分挖掘 DRAM 和 SSD 的容量潜力以加速推理服务,成为亟待突破的技术难点。即使通过本地资源扩展技术缓解容量压力,仍可能面临以下问题:
- 资源利用率不均衡:不同负载场景下易出现局部资源闲置;
- 本地容量天花板:超大规模模型仍需跨节点资源协同;
- 分布式扩展代价:构建资源池化架构虽能提升弹性,但会加剧网络带宽竞争,需通过数据亲和性调度优化通信路径。
(三)产品服务化内存加速需求
当推理服务从单机扩展到分布式提供产品化服务,通常还需要使用相关的内存加速服务:
- 队列化负载均衡:由于单个推理请求特别是 Reason 类的模型执行耗时较长(秒级至分钟级),需通过内存队列实现请求缓冲。
- 分布式协同开销:多节点推理需同步处理任务切分、中间状态同步、结果聚合,跨节点通信延迟易成为吞吐量提升的瓶颈。
- 多轮对话缓存:针对 LLM 生成式任务(文本续写、多轮问答),需在内存中维持会话状态缓存(Session Cache),支持历史上下文快速检索以保障前端交互流畅性。
- 动态限流控制:基于令牌桶之类算法实施请求速率限制,防止恶意高频请求(如 DDoS 攻击)过度抢占 GPU 计算资源。
三、面向 AI 推理的 KVCache
Tair KVCache 通过软硬协同设计的池化实现,完成显存容量的灵活扩展与计算资源的高效解耦;同时上层的调度组件充分利用内存的加速能力,支持如限流、亲和性调度、对话缓存加速、执行预测等产品化服务需求。基于通用的模型和推理引擎,无缝兼容主流大语言模型架构,达成端到端百 GB 级 KVCache 吞吐与毫秒级响应,满足高并发、低延迟的生成式 AI 场景需求。

图2:Tair KVCache 介绍
(一)分布式内存池化
Tair KVCache 利用 GPU 集群空闲内存组成分布式内存池, 按需计费节省单机空闲内存,同时可以突破单机内存瓶颈。
分布式内存池化的核心目标是通过统一管理多级存储资源(GPU 显存、CPU 内存、SSD、远端存储),实现显存容量扩展 与 计算资源解耦。
KVCache 是 Transformer 推理中除权重以外显存占用主体,其 Offload 设计直接影响大模型推理效率:
- 通过将 KVCache 卸载至分布式池化存储,单卡显存仅需保留热数据,达到支持:
1)更大 Batch Size:实验显示批处理规模提升 5-10 倍;
2)长上下文处理:如百万 Token 级输入(需数百 GB KVCache)。
- 计算与带宽优化,以存代算:复用历史 KVCache(如对话缓存),减少重复计算,加速推理,TTFT(首 Token 时间)缩短为原来的 1/10。
(二)多级 KVCache 分配管理
Tair KVCache 通过软硬协同设计实现存储资源的最优调度。核心围绕三大目标展开:易用性统一抽象、性能极致优化、架构前瞻扩展,结合分层存储特性与新型硬件协议,打造适应大模型推理的高吞吐多级 KVCache 池化方案。
- 易用性:提供统一的调用接口与错误处理接口,屏蔽底层物理差异,支持上层 Cache 调度与管理。
- 高性能:内存热点 Locality 感知,与调度器结合,提高内存资源利用率,充分发挥 KVCache 复用的性能优势,提高算力效率;根据底层互联特性,提供高效数据交互机制实现高带宽的 KVCache 共享。
- 可扩展:随着后续物理介质和互联协议的持续发展,能充分利用底层内存语义介质(AliSCM)和互联协议(Alink)系统平滑迁移,为 KVCache 提供极致高带宽与低成本,同时支持多样拓扑与分级 KVCache 的调度和管理机制。

图3:内存池化 MemPool 系统

图4:多级 KVCache 分配管理
(三)服务化支持
接着继续看看如何用基于内存的 Redis 语义接口来支持分布式服务,例如队列负载均衡、多轮对话缓存和动态限流控制。
1. 队列化负载均衡
利用内存队列 Stream 可以把推理任务投递到 Stream 中,推理引擎做为消费者使用 XREADGroup 命令从所属任务组中按需拉取任务。支持阻塞式读取(等待新任务到达)或批量拉取,避免频繁轮询。多个推理引擎消费者属于同一任务时,Stream 自动将消息分配给不同的消费者,实现并行处理。每个消费者独立维护未确认(Pending)消息列表,确保任务不会被重复消费。

图5:队列推理负载均衡
2.多轮对话缓存
在多轮对话场景(如聊天机器人、客服系统)中,大模型推理服务需要依赖历史上下文生成连贯回复。可以利用内存的Hash结构来满足:1)快速存取——毫秒级响应,避免对话卡顿;2)上下文关联——支持按会话 ID(Session ID)快速检索完整历史;3)高并发支持——应对海量用户同时发起对话。
- 初始化会话生成唯一对话标识符
session_id。 - 创建 Hash 结构并设置初始元数据,如
HSET session:123 metadata '{"user_id": "abc", "model": "XXX"}'。 - 设置 TTL 实现自动过期,如
EXPIRE session:123 3600。 - 存储多轮对话,如
SET session:123:turn:5 "What's the capital of France?"。
3. 限流控制
以恒定速率处理请求,超出桶容量的请求被丢弃或排队。用于:1)防止资源过载:避免计算资源被恶意或异常流量耗尽。2)保障服务质量:确保高优先级请求(如付费用户)的响应时间符合 SLA。
使用List结构模拟漏桶:
- 入队:新请求通过
LPUSH加入队列。 - 出队:通过定时任务以固定速率
PROP处理请求。 - 溢出控制:检查队列长度(LLEN),超过容量则拒绝新请求。

图6:限流服务
(四)兼容性
Tair KVCache 提供内存语义的访问接口,可以通过类似 Jemalloc 的内存分配器进行管理和分配,主流推理引擎如 TensorRT-LLM、vLLM、SGLang 均可以进行方便的适配。
四、总结
作为阿里云数据库为大语言模型推理场景量身打造的技术产品,Tair KVCache 凭借其创新的分布式内存池化和分级缓存体系,成功突破了大语言模型推理中的显存墙与带宽瓶颈问题。
通过软硬协同设计,Tair KVCache 实现了显存容量的灵活扩展与计算资源的高效解耦,支持更大 Batch Size 和长上下文处理,显著提升了推理效率和资源利用率。同时,其服务化支持与兼容性设计,为分布式推理场景提供了统一的 Redis 语义接口,能够轻松适配主流推理引擎。
Tair KVCache,不仅为万亿参数模型的高效推理提供了技术保障,也为 AI 算力的持续进化和规模化应用开辟了新的可能。
相关文章:
阿里云Tair KVCache:打造以缓存为中心的大模型Token超级工厂
一、Tair KVCache 简介 Tair KVCache 是阿里云瑶池旗下云数据库 Tair 面向大语言模型推理场景推出的 KVCache 缓存加速服务。 随着互联网技术的演进与流量规模的激增,缓存技术逐渐成为系统架构的核心组件。该阶段催生了 Redis 等开源缓存数据库,阿里巴巴…...
通过TIM+DMA Burst 实现STM32输出变频且不同脉冲数量的PWM波形
Burst介绍: DMA控制器可以生成单次传输或增量突发传输,传输的节拍数为4、8或16。 为了确保数据一致性,构成突发传输的每组传输都是不可分割的:AHB传输被锁定,AHB总线矩阵的仲裁器在突发传输序列期间不会撤销DMA主设备…...
【JAVA】【疑难杂症解决!】org.springframework.transaction.UnexpectedRollbackException:
程序莫名其妙出现这个事务回滚错误,不显示具体错误信息!! 问题:前几天遇到一个问题,代码没有抛出我想要的带自定义提示消息的异常,却报了个这个,去搜了一下,大概原因如下: 因为我在方法上写了@Transactional注解,里边调用的service的方法上也写了@Transactional注解…...
[Effective C++]条款26:尽可能延后变量定义的出现时间
. 在C中,尽可能延后变量定义的出现时间,主要原因是为了提供代码的可读性,减少不必要的开销以及避免潜在的错误。 1、代码执行过程中抛出异常 如果在代码开头定义了变量,但在后续代码中抛出了异常,可能导致变量在未被使…...
如何在k8s中对接s3存储
github地址: https://github.com/majst01/csi-driver-s3 1.CSI for S3 这是用于 S3(或兼容 S3)存储的容器存储接口 (CSI)。它可以动态分配存储桶并通过Fuse mount将它们安装到任何容器中 2.状态 这仍处于试验阶段,不应在任何…...
基于TradingView和CTPBee的自动化期货交易系统实现
引言 在量化交易领域,TradingView因其强大的技术分析工具和丰富的指标库而广受欢迎,但是其不支持国内期货自动化交易,CTPBee则是一个优秀的国产Python期货交易接口。本文将介绍如何将两者结合,实现一个完整的自动化交易系统。 本…...
FPGA实现LED流水灯
一、在VsCode中写代码 1、建立工程项目文件water_led.v文件 2、打开项目文件,创建三个目录 3、打开文件trl,创建water_led.v文件 4、打开文件tb,创建water_led_tb.v文件 5、用VsCode打开water_led.v文件,编写源代码 module water…...
电商场景下高稳定性数据接口的选型与实践
在电商系统开发中,API接口需要应对高并发请求、动态数据更新和复杂业务场景。我将重点解析电商场景对数据接口的特殊需求及选型方案。 一、电商API必备的四大核心能力 千万级商品数据实时同步 支持SKU基础信息/价格/库存多维度更新每日增量数据抓取与历史版本对比…...
4199. 公约数-公约数模版题
给定两个正整数 a 和 b。 你需要回答 q个询问。 每个询问给定两个整数 l,r,你需要找到最大的整数 x,满足: x 是 a 和 b 的公约数。l≤x≤r。 输入格式 第一行包含两个整数 a,b。 第二行包含一个整数 q。 接下来 q 行,每行包…...
百度文库免费下载器
01 引言 在国内的环境下,Greasy Fork网站是彻底打不开了,导致好多小伙伴想要用脚本都没办法。 特别是需要某Wen库下载的小伙伴,之前还说实在没办法,去Greasy Fork网站上安个脚本就可下载,但是现在网站被墙了…...
[NCTF2019]True XML cookbook[XXE] [内网探测] [网络ip相关知识]
一模一样的登录界面 我直接故伎重演但是并卵 (话说XXE注入之前好像其他博客都加上了<?xml version"1.0" encoding"utf-8"?>,但是不加好像也没有什么问题🤔) <?php /** * autor: c0ny1 * date: …...
Qt | 电脑音频采集曲线Charts
01 audio.pro # 项目使用了charts(图表)模块和multimedia(多媒体)模块。QT += charts multimedia# 调试打印QT += coreHEADERS += \ widget.h \ xyseriesiodevice.hSOURCES += \ main.cpp\ widget.cpp \ xyseriesiodevice.cpptarget.path = $$[QT_INSTAL…...
Linux驱动的基本概念
一 交叉开发编译 概念:交叉开发编译(Cross Compilation)是指在一个平台上生成能在另一个不同平台上执行的代码的编译过程。这是嵌入式系统开发和跨平台软件开发中的常见技术。 二 系统启动流程 在Linux源码下,通过网口利用tftp协议把u-bantu下的uImage…...
win server2022 限制共享文件夹d
点击配额管理中的配额 然后创建配额 导入要配额的文件即可 然后确定即可...
Ansible(3)——主机清单与配置文件
目录 一、创建 Ansible 清单: 1、清单定义: 2、使用静态清单指定受管主机: (1)主机名称指定: (2)IP 地址指定: 3、验证清单: (1࿰…...
C语言 【初始指针】【指针一】
引言 思绪很久,还是决定写一写指针,指针这块内容很多,也不是那么容易说清楚,这里尽可能写地详细,让大家理解指针。(未完序) 一、内存和地址 在讲指针前,需要有一个对内存和地址的认…...
装饰器模式详解
以下是一个结合装饰器模式解决实际开发问题的Java实现案例,涵盖动态扩展功能、多层装饰顺序控制、性能优化等场景需求,附带逐行中文注释: 场景描述 开发一个数据加密传输系统,需满足: 基础功能:原始数据传…...
IP 地址规划中的子网划分:/18 网络容纳 64 个 C 段(/24)的原理与应用解析
整体表格说明 这是某市教育城域网中某县教育相关机构的IP地址规划表,明确了某县一中和某县教育局的IP地址范围,包括终端使用地址段、业务互访地址段。 概念解析 64个C段终端及互联地址 C段地址:一个C段是IP地址中的一个/24网络(…...
linux下Tomcat配置提示权限不够解决办法
文章目录 前言解决方案 前言 往linux服务器上部署Java后端,但是在服务器上安装好的tomcat,却因为权限不够无法进入 这就导致后端war包项目及前端页面无法部署 解决方案 sudo chmod -R 777 /opt/tomcat/webapps修改tomcat目录下的权限即可,对…...
您使用的开源软件许可证是否存在冲突呢?
开源软件代码使用现状 根据最新发布的《第三次自由和开源软件普查报告》,96%的代码库中使用了开源组件,这表明开源技术在现代软件开发中占据了核心地位。在国内企业软件项目中,开源软件的使用率达到了100%,平均每个项目使用了166…...
leetcode刷题日记——接雨水
[ 题目描述 ]: [ 思路 ]: 题目要求求凹进去的部分能接多少雨水,即有多少个格子可以从第一个高度快出发去寻找下一个高于或者等于他的格子,然后计算其中的差值 有高于或等于他的格子,计算他俩中间能装的雨水当后续没有…...
阿里巴巴暑期实习Java面经,灵犀互娱一面
哈希表熟悉吗,可以如何实现? 开散列版本什么时候需要扩容 高并发服务器内的主从reactor模型是如何实现的? 进程 线程 协程 的区别? 如何保证线程安全 ? 了解读写锁吗? 单例模式有了解吗? 可以怎…...
AI知识补全(十四):零样本学习与少样本学习是什么?
名人说:一笑出门去,千里落花风。——辛弃疾《水调歌头我饮不须劝》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(十三):注意力…...
如何用Postman实现自动化测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 这里简单演示在postman中怎样实现自动化测试(不涉及到用户登录的token认证) 导入测试用例文件,测试web接口 postman使用流程…...
LeetCode Hot100 刷题笔记(9)—— 二分查找、技巧
目录 前言 一、二分查找 1. 搜索插入位置 2. 搜索二维矩阵 3. 在排序数组中查找元素的第一个和最后一个位置 4. 搜索旋转排序数组 5. 寻找旋转排序数组中的最小值 6. 寻找两个正序数组的中位数 二、技巧 1. 只出现一次的数字 2. 多数元素 3. 颜色分类 4. 下一个排列 5. 寻找重复…...
Ubuntu 系统上完全卸载 Docker
以下是在 Ubuntu 系统上完全卸载 Docker 的分步指南 一.卸载验证 二.卸载步骤 1.停止 Docker 服务 sudo systemctl stop docker.socket sudo systemctl stop docker.service2.卸载 Docker 软件包 # 移除 Docker 核心组件 sudo apt-get purge -y \docker-ce \docker-ce-cli …...
1017 Queueing at Bank
1017 Queueing at Bank 分数 25 全屏浏览 切换布局 作者 CHEN, Yue 单位 浙江大学 Suppose a bank has K windows open for service. There is a yellow line in front of the windows which devides the waiting area into two parts. All the customers have to wait in li…...
二分答案 + P8800 [蓝桥杯 2022 国 B] 卡牌 - 题解
题解:卡牌问题 题目传送门:P8800 [蓝桥杯 2022 国 B] 卡牌 一、题目描述 小明有n种卡牌,每种卡牌有a_i张。他可以用m张空白牌制作任意卡牌,但第i种卡牌最多只能制作b_i张。问最多能凑出多少套"完整卡牌"(…...
Python----计算机视觉处理(Opencv:道路检测之道路透视变换)
一、透视变换 对于道路检测来说,为了方便车辆进行行驶,道路上都有车道线,为了更加方便对道路线进行检测,首先我们要把到路线平视图转变为俯视图,以便后期处理更加方便,如下图所示,该为虚拟场景的…...
为什么 ThreadLocalMap 的 key 是弱引用 value是强引用
问题一:为什么 ThreadLocalMap 的 key 是弱引用? 【假设 Entry 的 key 是对 ThreadLocal 对象的强引用】:这个 Entry 又持有 ThreadLocal 对象和 value 对象的强引用。如果在其他地方都没有对这个 ThreadLocla 对象的引用了、然后在使用 Thr…...
