大模型推理加速:动态调整每个token的计算深度

论文标题
Position-Aware Depth Decay Decoding (D^3): Boosting Large Language Model Inference Efficiency

论文地址
https://arxiv.org/pdf/2503.08524

作者背景
BAAI智源研究院,电子科技大学,中科院自动化研究所

前言

“自适应神经网络”并不是一个新概念,它通过动态调整模型的计算深度来提高计算效率,让简单的结果快速输出。在传统CV/NLP领域便有过诸多探索,Transformer架构上也有过像FastBERT这样的工作;

对神经网络架构做自适应调整,关键是分析出哪些模块适合动态调整,哪些不适合。相比于之前的在LLM上做自适应调整的成果(是Early Exit和SkipDecode),此工作做了更有说服力的探索

以下方法都不需要重新训练LLM

Early Exit

在这里插入图片描述

如图所示,大模型的大部分 token 并不需要通过所有层进行计算就能达到较高的置信度

Early Exit是一种“早退出”的自适应推理方法,通过训练一个分类器来决定每个token在每一层上是否需要提前退出

图片

考虑到当前KV-Cache已成为广泛使用的加速手段,上述做法有一个很大的问题:如果上一步的token是在L1层退出的,并且当前token需要在L2层退出,并且L2>L1,那么当前token计算到L1时就无法使用KV-Cache了!(因为上一步根本就没算这些层的KV状态)

此时需要有一个弥补性操作:把L1末尾的KV状态复制到与L2对齐

SkipDecode

跳过开头部分layer的自适应推理方法,跳过layer的数量随推理长度线性增加

在这里插入图片描述

同样地,此方法也会遇上KV状态缺失的问题,同样也是通过复制解决

本文方法

本文提出D3方法(Position-Aware Depth Decay Decoding),主要有以下几个创新点:

一、核心层与灵活层划分

通过观察LLM各模块、各层次的输入输出,发现信息流主要在模型的开头和末尾部分发生变化

在这里插入图片描述

如上图所示,大模型的各个模块,无论是从欧氏距离还是余弦距离来看,输出输出的差异主要产生于开头和结尾部分(attention模块的欧氏距离稍有不同)

直观的解释为:靠近embedding的层次主要处理抽象、基础的特征;靠近输出的层次主要负责对齐

所以不同于Early Exit跳过结尾、SkipDecode跳过开头,D3是在经过分析后选择跳过了中间部分:

在这里插入图片描述

而开头和结尾部分的具体范围取值,可以作为超参数来设置

二、指数扩大的跳过范围

之前提到的KV状态对齐问题,在自适应计算中是不可避免的:“自适应”一定会跳过一些模块,模块跳过后一定会导致对齐问题

所以作者退而求其次,观察从不同层次开始复制,对模型性能的影响

在这里插入图片描述

如上图所示,越从浅层开始影响模型,对模型效果的伤害越大

此外,还发现大模型在推理时,位置越往后的token困惑度越低,表明生成任务的难度随文本长度的增加而减少

在这里插入图片描述

于是作者设计了这样一种简单的方法:让灵活层参与计算的layer随着推理步的增加而指数衰减

在这里插入图片描述

注:为什么不适用分类器?作者认为会引入新的复杂度,当前方式效果已足够好

效果

在这里插入图片描述

由图可见,D3推理优化训练,可以在不更改大模型自身参数,通过提高过某些层次的计算,实现更高效的推理速度,并且推理准确性保持不下降,甚至会提高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值