热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > ai资讯 >Character.AI 推理服务2万QPS背后的技术点

Character.AI 推理服务2万QPS背后的技术点

来源:互联网 更新时间:2026-08-22 14:12

KV缓存大小,一直是LLM推理吞吐量的核心瓶颈。它不仅决定了GPU上能塞进多少批次,更直接影响注意力层的I/O成本。可以说,谁能在KV上做文章,谁就能在推理效率上拉开差距。Character.AI的做法很有意思——在不牺牲性能的前提下,把KV缓存大小压到了原来的二十分之一以下。具体是怎么做到的?往下看。

多查询注意力(MQA)

他们所有注意力层都采用了多查询注意力(MQA,Shazeer 2019)。对比当下开源模型常用的分组查询注意力(GQA),这一步直接把KV缓存砍到了八分之一。遗憾的是,目前没有公开具体的超参和实验数据,但从实际效果来看,方向是对的。

混合注意力视野(Hybrid Attention Horizons)

这里借鉴了Longformer的思路:将局部注意力与全局注意力层交错排列(如上图d所示)。通过滑动窗口训练局部注意力,复杂度从O(n²)降到了O(n),n是输入序列长度。有意思的是,实验发现——在大部分层上把注意力范围缩小到1024个token,对评估指标几乎没影响,哪怕是在长上下文“大海捞针”测试里也一样。生产环境的配置是:每6层里,只有1层用全局注意力。

跨层KV共享(Cross Layer KV-sharing)

更进一步,他们在相邻的注意力层之间绑定了KV缓存——这一下又减了2到3倍。全局注意力层在长上下文场景下是KV缓存的大头,所以他们把多个全局层的KV缓存跨块绑定。效果与Brandon等人2024年的论文类似:质量没下降,缓存小了。

有状态缓存(Stateful Caching)

Character.AI的产品有一个显著特点:大多数聊天都是长对话,平均每条消息背后有180条历史消息。对话越走越长,如果每次都要重新填充KV缓存,成本根本扛不住。于是他们开发了一套轮次间的缓存系统:对于每个预处理前缀和生成的 message,都把KV值缓存在本地内存里,方便快速查找。具体做法跟RadixAttention(Zheng et al., 2023)类似——用树状结构在LRU缓存中管理KV张量,效果如下。

缓存的KV值由前缀标记的滚动哈希进行索引。每次新请求过来,会为上下文里的每个前缀计算滚动哈希,然后检索最长匹配项的缓存。这样一来,即使只有部分匹配的消息,也能复用缓存。

队列层面还有一个关键设计:会话粘性。把同一对话框的查询路由到同一台服务器。因为KV缓存已经很小了,每台服务器能同时缓存数千个对话。最终系统实现了95%的缓存命中率——推理成本自然就被大幅压低了。

训练及服务的量化

他们还定制实现了int8内核,对模型权重、激活和注意力KV缓存全部做了量化。和常规的后训练量化(PTQ)不同,他们从头就以int8精度训练模型——这样既消除了训练/服务之间的不匹配风险,也明显提升了训练效率。

关于宇宙的好的网名有哪些
关于宇宙的好的网名有哪些

类型:角色扮演

大小:1

语言:简体中文

平台:互联网

游戏下载

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc