Qrita: High-performance Top-k and Top-p using Pivot-based Truncation and Selection
本文介绍了 Qrita,这是一种针对大词汇量的高性能确定性 Top-k 和 Top-p 采样算法,它利用基于枢轴的截断与选择机制,相比现有 GPU 内核实现了高达 1.4 倍的吞吐量提升和 50% 的内存占用降低,从而被采纳为 vLLM 的默认采样器。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象你是一位经营着巨大厨房(大型语言模型)的主厨,你的储藏室里存放着10 万种不同的食材(词汇表)。每次你需要烹饪一道菜(生成一个词)时,都必须从这巨大的储藏室中挑选出最好的几种食材,以确保菜肴美味且不单调。
在人工智能领域,这种挑选过程被称为Top-k(挑选前 k 种最佳食材)和Top-p(挑选一组最小的食材,使其累计“风味评分”达到特定阈值)。
问题:缓慢且杂乱的厨房
目前,大多数厨房处理这一问题的方式是:将所有 10 万种食材倾倒在一张巨大的操作台上,按“风味评分”从优到劣进行排序,然后抓取排名靠前的食材。
- 问题所在:对 10 万项物品进行排序既缓慢又混乱。它占用巨大的操作台空间(内存),并且会让主厨的双手感到疲惫(计算开销)。
- 替代方案:有些主厨试图直接随机抓取一把“可能”不错的食材。但这存在风险;有时你会错过最好的食材,有时每次烹饪出来的菜肴都会不同(非确定性),如果你需要精确复制食谱,这就很糟糕。
解决方案:Qrita(智能副主厨)
这篇论文介绍了Qrita,一种用于挑选食材的高速新方法。可以将 Qrita 想象为一位超级聪明的副主厨,它利用两个巧妙的技巧完全跳过了繁琐的排序过程。
技巧一:“高斯 Sigma 截断”(噪声过滤器)
想象在你的 10 万种食材储藏室中,有 9.9 万种只是“噪声”(比如盐、糖和面粉,它们的味道大致相同且平淡)。只有几百种是“明星食材”(比如松露或藏红花)。
Qrita 不需要查看每一个罐子,而是进行快速的嗅探测试。它计算储藏室的平均“味道”和“辣度”(标准差)。然后它画出一条线:“低于这条线的任何东西都只是噪声;我们无需查看。”
- 结果:它瞬间丢弃了 99% 的储藏室,只留下大约 200 个有趣的罐子。这一过程在单次闪电般的遍历中完成。
技巧二:“四元枢轴搜索”(四向分割)
现在,主厨面前有一小堆 200 种有趣的食材。他们仍然需要找出确切的前 50 名。
- 旧方法:逐个检查(太慢)或将堆栈分成两半(二分搜索)。
- Qrita 的方法:Qrita 不是将堆栈分成两半,而是一次性将其分成四个部分。它会问:“最好的食材是在第一部分、第二部分、第三部分还是第四部分?”
- 额外优势:它还有一个针对重复食材的特殊规则。如果三个“藏红花”罐子的得分完全相同,Qrita 确切知道需要保留多少个,以确保每次食谱都完全一致(确定性)。这防止了主厨在试图决定选择哪个相同的罐子时陷入无限循环。
为何这很重要(结果)
作者使用一种名为Triton(一种用于编程图形处理器/GPU 的语言)的专用工具构建了 Qrita,并将其与 vLLM 和 SGLang 等主要 AI 引擎目前使用的最佳方法进行了测试。
- 速度:在现实世界的服务场景中,Qrita 的速度快达1.4 倍,在原始速度测试中快达2 倍。
- 内存:它使用的内存只有一半,因为它不需要存储整个 10 万项物品的排序列表。
- 准确性:与一些靠猜测的快速方法不同,Qrita 给出的结果与缓慢但完美的排序方法完全一致。它不会改变输出,只是更快地找到它。
核心结论
Qrita 就像是将一位手动对世界上每一种香料进行排序的主厨,升级为一位智能助手,它能瞬间忽略无聊的东西,将有趣的东西一次性分成四堆,并完美处理重复项。它在不改变答案质量的情况下,使 AI 生成更快、更高效。
注:论文提到,Qrita 现已成为 vLLM(一款用于运行 AI 模型的流行工具)GPU 路径的默认方法,且代码已开放供他人使用。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。