Cross-Modal Data Co-Locality for Heterogeneous Storage Systems
一条多模态查询要先查文本向量、再取对应的图片向量,两次近邻检索都很快,慢的是两份向量分在不同存储层时的那次搬运。CoLoc 不改向量也不改索引,只调整数据放在哪一层:经常被同一条查询一起用到的向量尽量放在同一层。它优化的是数据放在哪,而不是在哪里搜。在四层存储测试中,需要跨层取数的查询从 73.04% 降到 0,多模态查询占一半时端到端延迟降低 24.8%,召回率不变。
今日场景今天基础设施赛道有 10 篇,6 篇有深度解读,主线是让大模型和检索服务在资源紧张时依然稳、省、可信。ZipFusion 让注意力直接读无损压缩的 KV cache,BellowsKV 让几层共享一个压缩输入。微软的 HiLO 把降级从服务级提到产品级,PayPal 的 Cosmos 网关把多家大模型的接入、预算和策略统一管起来。CoLoc 和 TrustANN 分别解决向量数据放在哪、查到的结果是否可信。做推理服务的团队可以先看 ZipFusion 和 BellowsKV,做平台治理的团队可以先看 Cosmos。 — 评分 202 篇,入选 10 篇,分数 3.35 – 4.75
流量尖峰时每个服务各自降级,单个服务活下来了,整个产品效果却可能崩掉。微软的 HiLO 把降级从服务级提到产品级:事先定好几个经过验证的产品状态,每个状态规定每个服务降到哪一档,比如关掉某些特征、减少扇出或换更便宜的模型;运行时各服务上报负载,中央控制器据此选一个状态下发。降级的单位应该是产品,而不是服务。上线后经历了 9 次真实流量冲击。最高一次到基线峰值的 2.38 倍,Bing 的相关性指标 OneDCG(一种归一化排序质量分)最多只掉 0.425 个点,没有越过 0.5 个点的运营红线。
一条多模态查询要先查文本向量、再取对应的图片向量,两次近邻检索都很快,慢的是两份向量分在不同存储层时的那次搬运。CoLoc 不改向量也不改索引,只调整数据放在哪一层:经常被同一条查询一起用到的向量尽量放在同一层。它优化的是数据放在哪,而不是在哪里搜。在四层存储测试中,需要跨层取数的查询从 73.04% 降到 0,多模态查询占一半时端到端延迟降低 24.8%,召回率不变。
分布式向量库的副本能保证查得到,却不能保证查到的是真的:被攻破的副本可以返回签名合法、内容被篡改的近邻结果。TrustANN 在路由层之上加一层中间件,对每个分片,从副本回复里贪心挑出一组:数量达到设定下限,两两相似分够高(候选集合重合度加排序一致度),并覆盖设定数量的不同故障域(如可用区);凑不齐就去找新的独立副本补,仍不够则明确返回未验证。副本在线不等于结果可信。在多节点测试里,被篡改结果被当成可信的比例从 100% 降到 0,正常负载下 p95 延迟只多 9.36%。
长上下文推理里最占显存的往往是每层各存一份的 KV 缓存(每个历史 token 的键和值)。BellowsKV 发现相邻几层的缓存彼此不像,但算出缓存的输入隐藏状态很像,所以共享输入:把每个 token 在相邻 n 层的隐藏状态拼起来,乘一个压缩矩阵,得到一份共享向量,替代这 n 层的缓存;每层另有一个还原矩阵,直接从共享向量算回本层的键和值。两种矩阵用校准数据按还原误差最小离线求一次,无需训练。该共享的是输入,而不是缓存。在 3 个模型上压到约 14 倍仍保留 97% 以上的准确率。
无损压缩 KV 缓存的好处,大半被解压这一步吃掉了:以前的做法搬到显卡上先解压回原样,注意力每次仍读未压缩的数据。ZipFusion 于是让注意力直接读压缩数据,格式上只压缩 16 位浮点数里集中在小范围的指数位、尾数原样保留,注意力在寄存器里用几条整数加法和移位把指数拼回去,得到逐位相同的原值。无损压缩也能直接让解码变快。在 H100 上注意力算子比 FlashInfer 快约 1.25 倍,8K 上下文下整机解码吞吐比不压缩的 SGLang 高 26.3%,结果逐位一致。
企业同时用多家大模型,每个应用各接各的,就会密钥满天飞、换模型要改代码、花钱没人管。PayPal 的 Cosmos 网关基于 Envoy 代理,把认证、预算、策略这类要查外部服务的慢决策放到代理外,把格式翻译和计 token 放在代理内,流式回复的每一块都不用等外部调用。网关的难点在治理,不在路由。它服务 1.2 万多名开发者、每天约 2000 亿 token,压测中只增加 4 毫秒中位延迟。
混合专家模型(MoE)放不进显存时,解码主要耗在拷贝专家权重上。偏向已驻留专家的路由能少拷贝,但配合异步预取,输出会随传输时机变化,评测就不代表线上模型。PSR 让路由只看一个确定性的逻辑缓存:在每层,用当前隐藏状态喂给下一层的路由器,预测它会选的专家,把其中 1 到 2 个写进逻辑缓存。逻辑缓存每层容量等于显存里的专家槽位数,满了就淘汰得分最低的,得分是路由器过去选中各专家的滑动平均;下一层路由时,缓存里的专家在路由打分上加一个固定奖励。它只由 token 历史决定,与拷贝何时完成无关;真实拷贝跟着它预取,只影响速度。先让输出确定。在 RTX 4090 上跑 OLMoE,比精确路由加 LRU 换出快 2.2 倍以上,分数持平。
多个推理实例各自重算同一段长前缀,是推理集群里很常见的浪费。火山引擎存储团队的弹性极速缓存 EIC 是一个面向大模型推理的分布式 KV 缓存服务,定位是把推理时算出的 KV cache 存到一个独立的分布式缓存层里,供多个推理实例共享和复用,减少重复计算长前缀。把 KV 缓存从单机显存里拿出来,做成共享的存储服务,是推理基础设施这两年的一个明确方向。做多实例推理服务、长上下文或多轮对话的团队可以把它当作产品形态参考。
单条请求解码大模型时,慢的往往不是计算而是读权重。英伟达在 DGX Spark 上优化混合专家模型 Ling-3.0-flash,剖析发现瓶颈,主要来自专家计算和输出层投影,所以三招都围绕少读权重、一次多出 token:换用更快的专家计算内核,把输出层在线量化到 8 位,再用模型自带的多 token 预测做投机解码。先剖析瓶颈,再对症减少权重读取。三者合用后在 GSM8K 上解码吞吐提升 42.5%,平均延迟降低 24.5%,准确率没有可测变化。
大规模训练里,一块发热偏高的显卡或一个性能悄悄下降的网口,就能拖慢整个同步训练任务,而这类灰色故障往往不触发任何固定阈值。英伟达的 Minerva 把显卡、网络、存储和任务的监控数据合成一张实时知识图,再用机器学习模型找出和同类相比异常的设备。之后沿知识图查哪些告警共享同一条依赖路径(比如同一台交换机连着的节点上跑的同一个任务),把它们合并成一个事件。按拓扑关联告警,比逐条看阈值更快找到根因。一个案例里 81 条告警被合并为 1 个事件,估计挽回约 54 小时集群可用时间。