← 最新论文
🤖 AI

Accelerating Constrained Decoding with Token Space Compression

本文介绍了 CFGzip,这是一种离线令牌空间压缩技术,可显著降低约束解码的计算开销,在复杂上下文无关文法的全生成时间上实现高达 7.5 倍的加速。

原作者: Michael Sullivan, Alexander Koller

发布于 2026-05-29
📖 1 分钟阅读☕ 轻松阅读

原作者: Michael Sullivan, Alexander Koller

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象你有一位才华横溢但略显混乱的厨师(即大语言模型,LLM),他几乎能烹饪任何菜肴。然而,你需要他按照一份非常严格且复杂的食谱(即上下文无关文法,CFG)来准备一道菜,比如某种特定的编程语言或精确的数据格式。

如果厨师猜错了食材,整道菜就毁了。为了防止这种情况,你雇佣了一位严格的文法引擎(就像主厨或食品安全检查员),他站在厨师身旁。在厨师添加任何食材之前,检查员会检查整个储藏室,确认该特定食材是否允许在当前食谱步骤中使用。

问题:“储藏室”太大了

问题在于,厨师的储藏室(即词元词汇表)极其庞大,包含数十万种不同的食材(单词、符号、代码片段)。

每当厨师想要添加一种食材时,检查员都必须遍历整个储藏室,以确认该特定物品在此时是否有效。对于简单的食谱(如 JSON 数据),这很快。但对于复杂的食谱(如 C++ 代码或一种名为"Bython"的虚构语言),检查员会不堪重负。他们必须检查如此多的可能性,导致烹饪过程大幅减慢——有时比正常情况慢2 到 10 倍。论文将这种情况称为“难以处理的高开销”。

解决方案:CFGZIP(“分组”技巧)

作者介绍了一种名为CFGZIP的新工具。CFGZIP 不是在厨师开始烹饪后让检查员逐一检查储藏室里的每一种食材,而是在烹饪开始前重新整理储藏室。

以下是类比:

  1. 分组食材:CFGZIP 查看储藏室,发现许多食材在食谱目的上是可互换的。例如,在代码食谱的特定部分,单词 ifelsewhile 在语法上可能表现相同。或者,在不同的上下文中,数字 123 可能都是有效的占位符。
  2. 创建“代表”桶:CFGZIP 将这些可互换的食材分组到桶中。它从每个桶中挑选一个“代表”食材(通常是较短的那个)来代表整个组。
  3. 新工作流程
    • 烹饪前(离线):系统执行将储藏室分类到这些桶中的繁重工作。这一步只需执行一次并保存。
    • 烹饪中(推理):当厨师挑选一种食材时,系统会迅速将其替换为桶中的“代表”。检查员只需将代表与食谱进行核对,而无需检查整个储藏室。
    • 结果:由于检查员现在只需检查一个微小的代表列表,而不是庞大的原始储藏室,过程变得极其迅速。

为什么这很重要

论文声称,将 CFGZIP 与顶级文法引擎(XGrammar2)结合使用,能带来巨大的加速:

  • 延迟降低:规则检查所需的时间减少了10 到 100 倍(两个数量级)。
  • 总体加速:对于复杂任务,生成文本的整个过程速度提高了7.5 倍
  • 无质量损失:这是一种“无损”压缩。最终输出与不使用加速时得到的结果逐字节完全相同。厨师仍然能做出完全相同的完美菜肴;只是他们到达终点快得多了。

论文中的实际结果

研究人员在三种不同的 AI 模型(Llama、Qwen 和 GPT)和四项不同的任务上测试了此方法:

  1. JSON 和 XML:标准数据格式。
  2. C++:一种复杂的编程语言。
  3. Bython:一种虚构的、人造的编程语言(类似于 Python,但使用大括号和分号代替空格)。

发现

  • 对于标准格式(JSON),加速效果良好但并非革命性,因为这些规则本身已经很简单。
  • 对于复杂且不熟悉的语言(如 C++ 和 Bython),差异巨大。如果没有 CFGZIP,文法引擎慢到使 AI 在这些任务上几乎无法使用。有了 CFGZIP,AI 能够快速且正确地生成复杂代码。
  • 有趣的是,对于 AI 从未见过的"Bython"任务,使用这种约束方法将 AI 编写可运行代码的能力从2.3% 提高到了 46.9%(针对某一款模型),证明当任务困难时,严格的规则有助于 AI。

注意事项(局限性)

论文指出了一个主要局限性:准备时间
将储藏室分类到桶中(即“离线预计算”)需要时间。

  • 如果你需要为一个一次性、快速的任务生成 JSON 文件,那么整理储藏室所花费的时间可能比直接正常完成任务还要长。
  • 然而,如果你正在进行大规模代码生成,或者反复使用相同的复杂规则,那么初始设置时间是值得的,因为烹饪(生成)过程变得快得多。

总结

CFGZIP就像一位聪明的图书管理员,在你到达之前将庞大的图书馆重新组织成“主题桶”。你不再需要搜索每一本书来找到正确的那一本,图书管理员只需指向“主题桶”的代表。这使得找到正确信息(或在本案中,生成正确代码)的速度 dramatically 加快,而不会丢失任何一本书或改变故事内容。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →