迅步科技

关于

迅步科技专注Shopify独立站,Shopify应用及无头网站开发,为您的品牌提供快速、灵活、个性化的电商体验,提升用户转化率与运营效率。欢迎咨询合作。

微信联系二维码
分类

Gisting: Compressing LLM Agent context to ↑ throughput and ↓ cost

Shopify 用 Gisting 技术将 LLM Agent 提示词压缩 4 倍:延迟降低 38%,GPU 节省 14%

原文链接:Gisting: Compressing LLM Agent context to ↑ throughput and ↓ cost

长系统提示词(System prompt)每个请求可能占用数千个 token。提示词越长,推理速度越慢,成本越高。当使用专用硬件为同一流量提供服务时,这会直接导致需要更多的 GPU。

Shopify 实现了一种名为 "gisting" 的技术,基于论文 《Prompt Compression and Contrastive Conditioning for Controllability and Toxicity Reduction in Language Models》 ¹ 中首次提出的思想。这项技术让模型以短提示词的成本,获得长提示词带来的行为优势。

Gisting 的核心效果

通过 gisting,Shopify 将 Sidekick GraphQL agent 的系统提示词从约 6,000 个 token 压缩到约 1,500 个 gist token(4:1 压缩率),且没有损失预测质量。其原理是通过知识蒸馏(knowledge distillation)学习一组特殊 token 的嵌入(embeddings),推理时将系统提示词替换为这些 token。

在每分钟 350 个请求(RPM)的压力测试下,性能提升显著:

  • 中位首 token 时间(TTFT):从 438ms 降至 354ms,下降 19%
  • 中位端到端请求延迟:从 6.8s 降至 4.2s,下降约 38%
  • 吞吐量:从每秒 20.2 个查询(QPS)提升至 23.4 QPS,提升 16%

这些改进直接转化为生产环境中的 GPU 节省:在服务 GraphQL 流量的硬件配置下,GPU 使用量减少了 14%。

Gisting 的工作原理

Gist token 是添加到模型词表中的特殊 token。Shopify 训练一组嵌入序列,使其在上下文中的替换效果等同于模型看到完整提示词。在 4:1 压缩率下,每四个提示词 token 对应一个 gist token。训练过程中,模型权重被冻结,仅训练 gist 嵌入。

知识蒸馏的训练流程:

  1. 教师阶段:模型看到完整的自然语言提示词,为模型响应的每个位置生成教师 logits
  2. 学生阶段:将完整提示词替换为 gist token,再次运行同一模型,生成学生 logits
  3. 损失计算:使用教师 logits 和学生 logits 之间的 KL 散度(KL divergence)训练 gist 嵌入

部署经过 gisting 处理的模型非常简单。训练完成后,gist 嵌入直接写入模型的嵌入矩阵,新的 gist token 注册为模型分词器(tokenizer)中的特殊 token。推理时模型的加载和运行方式与其他模型无异:无需自定义注意力掩码、额外的编码器或特殊的服务路径。唯一的变化在请求端——将提示词替换为 gist token 字符串。压缩的全部成本只在训练时支付一次。

为什么前缀缓存(Prefix Caching)不够

Gisting 的优势与前缀缓存并不互斥。所有现代服务引擎都维护 KV 缓存(KV cache),用于存储已见过序列的键和值。当新请求包含缓存中已有的序列(通常包括系统提示词)时,引擎直接获取该序列的 KV 张量,无需重新计算。

但前缀缓存不能消除解码成本。模型每生成一个 token,该 token 都需要对序列中的每个键进行注意力计算,无论是否被缓存。由于解码受限于内存带宽,每个生成的 token 都必须从高带宽内存中流式读取整个 KV 缓存,这种读取开销会随缓存序列长度线性增长。

Gisting 同时降低了注意力计算和 KV 缓存读取的成本,后者在批次规模增大时对吞吐量的影响尤为显著。Gisting 和前缀缓存的优化效果可以叠加,Shopify 在实验和生产服务栈中同时使用了这两种技术。

Autoresearch 找到最优配方

为了调整超参数,Shopify 将一个 autoresearch 循环指向了训练器。它会提出一个配方,训练 gist 嵌入,评估生成的模型,然后重复该过程。

在 autoresearch 循环中,有三项优化影响尤为显著:

  • 初始化:不用随机噪声初始化嵌入,而是将系统提示词按长度 k 进行切分(kk:1 的压缩比确定),并用第 n 个系统提示词分片的均值来初始化第 n 个 gist 嵌入。这一优化将初始损失降低了 7 倍
  • 压缩比:尝试一系列压缩比后,找到了预测质量开始下降的临界点。对于 Shopify 所涉领域的复杂程度,4:1 是最优压缩比;其他领域会有所不同
  • 数据量与多样性:策划一个大规模且多样化的数据集,填补了剩余的差距

autoresearch 还帮助实现了训练基础设施中的关键优化:

  • 损失归一化改进:按每个响应 token 取平均会导致模型产生幻觉;按批次取平均则能保留长响应中的更多信号,生成稳定的嵌入
  • 速度优化:预计算教师 logits 并对数据进行预分词,将一次完整训练的时间从三十小时缩短到六小时

Gisting 与持续学习

Gisting 也能很好地融入 Shopify 的持续学习循环。一旦获得模型的蒸馏 gist 嵌入,就可以将该模型视为持续学习的新起点。

具体做法是:使用 gist 嵌入作为前缀进行后训练(post-train),并将梯度更新同时应用到模型权重和 gist 嵌入上。通过在增量数据上同时优化权重和 gist 嵌入,可以持续校准和改进模型,而无需每次都从零开始重新蒸馏 gist 嵌入,从而避免了大量的计算开销。

结论

长系统提示词虽然有用,但代价高昂。Gisting 允许 agent 以极少的 token 数量充分利用详尽指令的所有优势,从而降低延迟和 GPU 开销。在 GPU 需求持续超过供应的当今时代,每一次推理优化都至关重要,但同样不愿在质量上妥协。Gisting 让 Shopify 两者兼得,并已成为其新标准。

参考文献

  1. Wingate, Shoeybi, and Sorensen. Prompt Compression and Contrastive Conditioning for Controllability and Toxicity Reduction in Language Models. 2022.

播客全文

Shopify 在 Sidekick GraphQL agent 中实现了 gisting 技术,将系统提示词从约 6,000 个 token 压缩到约 1,500 个 gist token,压缩率达 4:1,且未损失预测质量。该技术基于 2022 年论文提出的思想,通过知识蒸馏学习一组特殊 token 的嵌入,在推理时将完整系统提示词替换为这些 token。部署过程简单,gist 嵌入直接写入模型嵌入矩阵,推理时无需自定义注意力掩码或特殊服务路径。

在生产负载下,gisting 带来显著性能提升:350 RPM 压力测试中,中位首 token 时间从 438ms 降至 354ms,中位端到端延迟从 6.8s 降至 4.2s,吞吐量从 20.2 QPS 提升至 23.4 QPS,GPU 使用量减少 14%。Gisting 并非取代前缀缓存,两者优化效果可叠加。Autoresearch 循环帮助确定了关键优化:用系统提示词分片均值初始化嵌入使初始损失降低 7 倍,4:1 为最优压缩比,大规模多样化数据集补充剩余性能差距。

该技术已融入 Shopify 的持续学习循环,后训练时可同时更新模型权重和 gist 嵌入,避免从头重新蒸馏,节省大量计算开销。Gisting 在 Shopify 已成为新标准。

参考链接


迅步科技专注Shopify独立站,Shopify应用及无头网站开发,为您的品牌提供快速、灵活、个性化的电商体验,提升用户转化率与运营效率。欢迎咨询合作。

0:00
0:00
0:00
Gisting: Compressing LLM Agent context to ↑ throughput and ↓ cost · XunbuOS Podcast