news 2026/5/1 9:14:52

使用 SLERP 合并标记以加速 LLM 推理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 SLERP 合并标记以加速 LLM 推理

原文:towardsdatascience.com/merging-tokens-to-accelerate-llm-inference-with-slerp-38a32bf7f194?source=collection_archive---------9-----------------------#2024-04-19

我们可以通过使用 SLERP 合并连续的标记对,显著加速 LLM 下一标记的生成,从而减少进行完整预测所需的计算能力。

https://medium.com/@sam.chaineau?source=post_page---byline--38a32bf7f194--------------------------------https://towardsdatascience.com/?source=post_page---byline--38a32bf7f194-------------------------------- Samuel Chaineau

·发表于 Towards Data Science ·6 分钟阅读·2024 年 4 月 19 日

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1d20ac9c439c47bb8dac7cc59881664d.png

图片由 Martin Martz 提供,来源于 Unsplash

TL;DR:

本文介绍了一种通过使用球面线性插值(SLERP)合并标记来加速大型语言模型(LLM)推理的新方法。通过减少序列长度而保持质量,这项技术在 LLM 推理中提供了显著的速度提升,解决了较长序列带来的计算挑战。该方法仍然处于初步阶段,但揭示了 LLM 的双重世界:一个用于训练,另一个用于预测。

背景:

LLM 已经通过展现出卓越的生成能力,彻底改变了自然语言处理任务。然而,它们的有效性是有代价的——计算资源。随着 LLM 处理更长的序列,变换器计算的二次扩展变得越来越难以承受。传统的缓解方法,如缓存和量化,存在一定的局限性。因此,迫切需要创新的方法来加速 LLM 推理,而不至于过多损害质量。

当前在推理过程中生成 token 的方法是一种蛮力法,本质上是训练方法的转置。虽然这种方法在训练中已被证明有效,但在推理任务中可能并不是最有效的。因此,有必要开发一种专门用于推理过程中生成 token 的新方法,从而优化过程并进一步提高大语言模型(LLM)的效率。这突显了探索替代技术以应对 LLM 推理所面临的计算挑战的重要性。

最近,mergekit 库提出了使用 SLERP 方法合并网络权重,这通常能得到更好的结果。受到这一工作的启发,我决定尝试是否可以在一个序列中合并 token,从而生成一个更小的序列,以便在预测下一个 token 时处理。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1fcde1ba09eb3d7862d2b002b155125e.png

普通生成与合并生成的对比

使用 SLERP 合并序列:

提出的这种方法涉及修改 LLM 的前向传播过程,通过球面线性插值(SLERP)合并 token,这一技术借鉴自计算机图形学和动画制作。与简单的平均化技术不同,SLERP 保留了 token 维度的球面特性,提供了更为精细的插值。合并过程包括几个步骤,用于高效地压缩输入序列:

序列长度调整

最初,输入序列会根据其长度进行调整:

这样做的目的是确保上下文中的第一个和最后一个 token 能够得到保留。

对形成:

调整后的序列将被格式化为一对对连续的 token。这一过程为聚合做好准备。

使用 SLERP 进行聚合:

每对 token 都会通过 SLERP 进行聚合,实际上将序列长度减半(并不是完全减半,因为我们会添加并保留一些额外的 token)。SLERP 对代表连续 token 的两个向量进行插值,从而创建一个新的向量。

为了高效地完成这一任务,我重新创建了所有 SLERP 函数,并使用原生 PyTorch 实现。然而,代码可能尚未经过优化。

层次切割和提示保留:

合并过程可以在模型架构的不同层次上进行,这被称为“层次切割”。此外,为了保留提示的完整性,可以指定序列的开始部分和/或结束部分保持不变。这在基于指令的模型中尤为有用,因为提示的开始部分应该始终被记住。

这种创新方法为解决 LLM 推理中相关的计算挑战提供了一种微妙的解决方案,承诺在不牺牲质量或准确性的情况下大幅提高速度。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6934167f27afc797fc61f04a0cba74aa.png

合并序列的简单示例

这意味着什么?

具体来说,在 LLM 中,前向调用的输入是一个形状为(batch_size,序列长度)的令牌序列。嵌入层生成一个形状为(batch size,序列长度,维度)的序列。每个注意力模块将这个序列作为输入。在给定的注意力层中,你可以合并令牌,生成一个形状为(batch size,k,维度)的序列,其中 k 是压缩后的序列长度。选择在哪一层应用此操作就是“层级截止”。

接下来的注意力模块将不再需要计算一个(序列长度,序列长度)的注意力矩阵,而是一个更小的矩阵,因为 k 严格小于原始序列长度。

因此,合并可以发生在模型架构的不同层级。这个参数被称为“层级截止”。此外,为了确保提示语不会完全合并,你可以定义序列的部分部分在开始和/或结束时保持不变。对于基于 Instruct 的模型,这种方式更加高效,因为提示的起始部分应该始终被记住。

这种方法论的一个缺点是它严重依赖于所使用模型的前向传播过程,这要求你根据所选择的模型仔细重写“合并”过程。另一个缺点是每一步都需要重新计算注意力掩码,并可能需要重新计算位置嵌入。

结果:

对 Mistral 7B Instruct V0.2 模型进行的实验展示了有前景的结果。通过比较基础模型与不同层级截止的各种合并模型之间的预测,可以观察到,合并令牌对预测质量的影响不大。此外,合并模型在推理时间上表现出了显著的加速,特别是在较浅的层级上。该技术还展示了其在处理更长序列时的有效性,使其适用于各种应用场景。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/31775627fd11cb17bd858d233710c1dc.png

在不同层级截止和序列长度下,合并推理模型的预测令牌与基础模型的准确性对比

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/68a9ee0c7d5e691ed29b3d5bdd142300.png

对于不同的序列长度和层级截止,合并推理模型相比基础模型的加速倍数

一个缺点是我未能成功使前向调用达到最优。因此,可能通过重新思考过程,能找到许多优化的空间。

我还在 AlpacaEval 数据集上测试了 Mistral Instruct v0.2 的合并版本。我在第 20 个注意力模块上进行合并。结果非常令人鼓舞,因为该模型超过了 Falcon 7B、Gemma 7B 和 nous-hermes-13b。它表明,未重新思考位置编码的合并模型生成的平均令牌数增加了 600 个,说明该模型的表现更好,更具表现力。我尝试重新实现位置编码过程,但没有成功。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e8f72feb762d2920456495788e6525e9.png

从排行榜中提取

总结来说,使用 SLERP 合并 tokens 是应对 LLM 推理计算挑战的一个强有力的解决方案。通过在速度和质量之间找到平衡,这种方法几乎只是重写了前向循环。

使用方法:

我准备了一个仓库,包含一个简单的笔记本,供大家体验:github.com/samchaineau/llm_slerp_generation

使用一个新类,适配了前向调用,你可以轻松地将 LLM 传递到生成管道,并在你的数据集上使用它。到目前为止,我的实验仅限于 Mistral 7B 模型,但我希望将其扩展到其他架构,看看性能是否能保持。

所有资源都已经上传,如果你希望在其他 LLM 上进行测试,可以随时联系我。

结论:

使用 SLERP 技术合并 tokens 应该被探索用于加速 LLM 推理。随着进一步优化和探索,它有潜力提高自然语言处理任务的效率和可扩展性。

如果你从事 AI 领域工作并希望将其提升到下一个水平:欢迎联系我!

Github 链接:github.com/samchaineau/llm_slerp_generation

HuggingFace 个人主页:huggingface.co/samchain

相关且启发性的作品:

除非另有说明,所有图片均由作者提供。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 19:10:41

Z-Image极速引擎实测:Jimeng AI Studio一键生成高清图片

Z-Image极速引擎实测:Jimeng AI Studio一键生成高清图片 1. 为什么这张图只等了3.2秒?——Z-Image Turbo的真实速度体验 你有没有试过在AI绘图工具里输入提示词,然后盯着进度条数到第17秒,心里默念“再快一点”?这次…

作者头像 李华
网站建设 2026/5/1 7:58:24

开题报告 springboot 鞋厂在线定制销售系统

目录 系统背景与意义技术架构核心功能模块创新点预期成果关键技术代码示例(MySQL实体类) 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 系统背景与意义 鞋厂在线定制销售系统基于…

作者头像 李华
网站建设 2026/5/1 7:58:18

小白必看:Qwen3-Reranker-0.6B常见问题解决方案

小白必看:Qwen3-Reranker-0.6B常见问题解决方案 1. 开篇就讲清楚:你遇到的问题,90%都出在这里 你是不是也这样? 刚下载好 Qwen3-Reranker-0.6B 镜像,跑通了 test.py,结果一换自己的 query 和文档&#xf…

作者头像 李华
网站建设 2026/5/1 9:14:32

Git-RSCLIP实战:如何用AI快速识别遥感图像中的河流与城市

Git-RSCLIP实战:如何用AI快速识别遥感图像中的河流与城市 在遥感图像分析领域,传统方法往往依赖人工标注或预设规则,面对海量卫星影像时效率低、泛化差、成本高。当一张覆盖数十平方公里的遥感图摆在面前,你是否曾想过&#xff1…

作者头像 李华
网站建设 2026/4/24 12:13:50

DEFORM-3D仿真中Part旋转中心轴的手动校准技巧

1. 为什么需要手动校准旋转中心轴 在DEFORM-3D仿真中,Part的旋转中心轴是一个关键参数,直接影响着模拟结果的准确性。特别是在搅拌摩擦焊接这类复杂工艺仿真中,搅拌头往往需要以特定角度倾斜进行焊接。软件自带的自动确定功能虽然方便&#…

作者头像 李华