为什么缆绳对能源(和令牌)效率很重要
作者:查德·吉布森,联合创始人兼首席执行官 主要发现 缆绳的缓存方式不同。我们看到在客户中,未缓存输入的比例在 1.6% 到 11.1% 之间。"缓存"是指从提示缓存中服务的输入令牌的比例,而不是再次计算。在 92% 缓存的情况下,每 100 个令牌中有 8 个是未缓存的,而在 97% 的时候则只有 3 个:大约是前填工作量的 2.7 倍。缓存未命中大致会使请求的能耗翻倍。在这儿,未命中是指请求中几乎没有或没有缓存的提示(低于 10%)。在 GLM-5.3 上,这个比例大约是 2.5 倍。深度会话使得未命中变得昂贵。重复读取意味着从头开始重新计算提示的这一部分。在超过 128k 令牌时,重新读取超过一半提示的单次计算成本与该深度的约 600 次正常计算相当。大部分问题都是可以修复的。我们实验室测试中的每一次缓存中断都是由于缆绳编辑了它已经发送的内容,迫使从第一个差异开始重新读取。从 Neuralwatt 看到,调用模型的代理缆绳影响其使用的能量。我查看了我们云端一个月的流量,缆绳似乎决定了我们的 GPU 处理的工作量。我们通常从模型(活跃参数数量,注意机制)或硬件(H200 与 B200 与 B300)的角度讨论推理效率。我们也应该更仔细地研究客户端。几乎我们所有的流量都是代理型的,输入远多于输出。一个典型的编码代理的回合会发送 100k 字符或更多的对话,并返回几百个字符。大部分输入是前一回合的提示,最后添加了一点。如果之前的文本没有变化,服务器已经拥有其关键值(KV)缓存,仅需处理新部分。这是提示缓存,我们效率的最大来源。提供缓存令牌的成本远低于再次计算它的成本。缓存需要精确的前缀。当缆绳改动它已经发送的内容时,缓存就会中断。我们必须从第一个差异开始重新计算所有内容。靠近开头的改动,即使是时间戳,意味着几乎要重新计算整个提示。靠近结尾的改动成本很低。缆绳控制着提示的构建方式。同一模型,同一价格,不同的缓存率 每个请求都告诉我们是哪个客户端发送的。在 2026 年 9 月 8 日至 10 月 7 日的 30 天内,我们看到数百个不同的客户,包括开源编码代理,如 OpenCode、Oh My Pi(omp)和 Pi。混合中还包括编辑器集成、OpenAI SDK 和自定义应用程序。仅 OpenCode 就被大约四分之一的客户使用。对于使用最广泛的客户端,我们可以提供的未缓存输入令牌的比例如下:图 1. 按客户端分类的未缓存输入。在这里,每个客户缓存了其输入的大多数。这些小差异仍然很重要:一个 97% 缓存的客户每百个发送三个未缓存的令牌;一个 92% 缓存的客户发送八个。这对于同样的对话来说,前填工作量是 2.7 倍。命中率还取决于工作量,而不仅仅是缆绳。长时间会话得分较高,因为每回合的新文本占提示的比例较小,大约一半的 deepseek-cable 的领先来自于运行非常长会话的用户。缆绳的更清晰的衡量标准是一个回合中缓存中断的发生频率:对于 deepseek-cable,大约每 100 次中断一次,而对于 OpenCode 和 Pi 则是每 100 次中断 3 次。我们在流量中看到 OpenCode 1.x 和 2.x,因此这条基准线合并了它们。2.x 单独看起来更好(2.2% 未缓存对 3.0%),主要是因为模型的混合。使用相同的模型时,它们的缓存效果大致相同。2.x 修复了我们在实验室发现的大多数 1.x 缓存中断。这种差异在生产中没有体现出来,我们还不知道为什么。 未命中的能量成本 我们按测量的能量收费,因此我们可以直接看到成本。在 2026 年 10 月 1 日到 7 日的一周内,我们比较了同一模型下具有相同提示大小(约 50k 令牌)和类似输出长度的请求。以下是每个请求与完全缓存请求相比所使用的额外能量:图 2. 缓存未命中的额外能量。一个几乎未缓存的请求需要的能量大约是同一大小的缓存请求的两倍。在 GLM-5.3 上,这个比例接近于两倍半。前填还与生成争论同样的 GPU,因此浪费的前填会降低服务器上其他用户的响应速度。 缓存未命中在会话深处变得昂贵 我们跟踪了 2026 年 10 月 6 日至 13 日的一周内在我们三个位于最忙的模型上逐回合的个别会话。我们查看了每一个在前一个请求后的五分钟内降落在同一服务器上的回合,那里缓存应该保持温暖。大多数缓存中断都是小的:在提示末尾的几千个令牌被重新计算。在超过 128k 令牌的上下文中,大约 1000 次中每 3 次的回合重新从头读取了一半以上的提示。这些少数回合占该深度下所有重新读取令牌的 75%。每个回合平均重新读取约 230k 令牌。该深度下的正常回合平均增加约 370 个新令牌,
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡