1、摘要结构
(1)当前面临问题:管理长文和扩展对话
(2)问题产生的原因:内存和推理事件的计算需求增加
(3)提出的方法:选择性上下文方法
(4)方法的大致过程:识别和修剪输入上下文中的冗余,使输入更加紧凑,提升推理效率。
(5)进行实验采用的数据:需要长上下文处理的常见数据源:arXiv论文、新闻论文、长对话、摘要总结、问答、生成回复(对话)
(6)实验的结果:显著降低内存成本和生成延迟,同时保持相当的性能。
(7)性能提升的方面:上下文成本降低50%、内存使用降低36%,推理时间降低32%,仅在四个下游应用有0.023和0.038的轻微性能下降。
2、核心过程
(1)计算每个token的自信息,再在短语和句子层面上计算每个词汇单元的自信息
使用语言模型计算每个token的自信息,然后将token和它对应的自信息融合到词汇单元,每一个词汇单元u由多个token
(
x
t
,
x
t
+
1
,
.
.
.
,
x
t
+
a
)
(x_t,x_{t+1},...,x_{t+a})
(xt,xt+1,...,xt+a)组成。根据自信息的可加性,我们通过加权求和每个token的自信息,来计算词汇单元u的自信息:
I
(
u
)
=
∑
i
=
t
α
I
(
x
i
)
I
(
x
i
)
=
−
l
o
g
2
P
(
x
i
∣
x
0
,
x
1
,
.
.
.
,
x
i
−
1
)
I(u)=\sum^{\alpha}_{i=t}I(x_i) \\ I(x_i)=-log_2P(x_i|x_0,x_1,...,x_{i-1})
I(u)=i=t∑αI(xi)I(xi)=−log2P(xi∣x0,x1,...,xi−1)
使用NLTK句子标记器来获取句子级别的词汇单元,我们使用spacy将标记合并成名词短语。因为合并出动词短语后,可能会产生很长的短语,因此我们并不会去合并出动词短语。
(2)选择性保留上下文信息
首先,我们根据(1)中计算出的词汇单元的自信息值,对其从大到小进行排序。然后,我们计算所有词汇单元自信息值的第p个百分位数。
I
p
=
n
p
.
p
e
r
c
e
n
t
i
l
e
(
[
I
(
u
0
)
,
.
.
.
,
I
(
u
k
)
]
,
p
)
I_p=np.percentile([I(u_0),...,I(u_k)],p)
Ip=np.percentile([I(u0),...,I(uk)],p)
然后,我们有选择性地保留自信息值大于或等于第p个百分位数的词汇单元,构建一个过滤后的上下文C’:
C
′
=
U
i
∣
I
(
U
i
)
≥
I
p
,
1
≤
i
≤
n
C'=U_i|I(U_i)≥I_p,1≤i≤n
C′=Ui∣I(Ui)≥Ip,1≤i≤n
本文提出基于百分比而不是基于固定阈值或取前几个数的方法,这种方法的过滤是一种更灵活的方法,可以根据给定上下文中自信息值的分布保留信息量最大的内容。
3、评测数据
BBCNew:包含BBC新闻的数据集,含有各种主题:政治、商业、体育和技术。
arXiv Articles:最新的学术文章数据集,跨越各个学科。例如:计算机、物理和数学等。
ShareGPT.com:ChatGPT用户分享他们和ChatGPT的聊天对话内容的网站,涵盖不同语言和不同场景下的对话(例如,编码、聊天、写作助理)。
4、基座模型
GPT-3.5、GPT-4、LLaMA-7B, 13B, 30B、Vicuna-7, 13B
4、评测任务和指标
评测任务:原始文本重构、摘要总结、问答、对话
评测指标:
BLEU:计算n-gram精确度。最初是在机器翻译领域,用于评测文本生成的精确程度。
METEOR:添加额外的特征,例如:同义词、词干、词序等附加特征。可以进行更全面的评估。综合考虑了精确度和召回率,并使用外部知识源来解决同义词和形态变化问题。
ROUGE:基于句子中有多少重叠字符进行评估。评估生成的摘要中,有多少文字被召回是术语参考摘要集中,侧重于评估生成文本的召回程度。
BERTScore:使用BERT的上下文embedding计算生成文本和参考文本embedding之间的余弦相似度。比传统的基于N-gram度量更有效地捕获语义相似度。
5、实验结论
我们引入了选择性上下文,通过删除自信息度量的冗余内容来提高llm推理的上下文效率。我们在arXiv论文、BBC新闻文章和对话文本上的大量实验表明,我们提出的方法可以显著降低GPU内存成本,在性能下降较小的情况下加速生成,并可能使LLMs能够处理长文档和扩展的对话,而不存在上下文截断的风险。其中,在短语层面上构建词汇单元效果最好,在句子层面上构建词汇单元不够稳定。
6、局限性
选择性上下文显示了有较好的结果,但仍然有必要注意几个潜在的限制。首先,我们的方法受到短语边界检测过程的影响。在实验中,我们采用了space提供的名词短语标记化算法。然而,我们不考虑动词短语,因为没有成熟的解决方案的动词短语标记化。我们推测,通过基于依赖树的过滤过程,我们可以获得更好的压缩性能,从而更好地识别词法单元的边界。其次,在实验部分,我们使用百分位数来控制修剪过程。然而,最佳压缩百分位数会根据特定的任务和上下文而变化。开发一种寻找最优阈值的工具可以进一步提高选择上下文的有效性。