LLM×MapReduce 是什么?像分工协作一样处理超长文本
LLM×MapReduce 是一个让大模型处理超长文本的框架,由厦门大学和北京大学等 6 个机构在 2024 年联合提出,论文标题是《LLM×MapReduce:用大语言模型简化长序列处理》。它借鉴了大数据处理中经典的 MapReduce 思想。
MapReduce 是什么
MapReduce 是谷歌在 2004 年提出的大规模数据处理模型。面对海量的数据,它分两步处理:Map(映射)阶段,把大任务拆成很多小块,分给许多机器同时处理;Reduce(归约)阶段,把各个小块的处理结果汇总起来,得到最终结果。就像统计一本厚书里每个词出现的次数:先让很多人各自数一章,再把大家的结果加起来。
用在长文本上
大模型的上下文窗口是有限的,即使支持很长的上下文,处理几十万字的文档时,效果也会下降,而且计算成本很高。LLM×MapReduce 的做法是:把长文本切分成多个片段,让模型分别、并行地阅读每个片段,从中提取与问题相关的关键信息(Map),然后再把各个片段提取的信息汇总起来,综合得出最终的答案(Reduce)。这样,一个上下文窗口不大的模型,也能处理远超其窗口长度的文本。
关键难点和解决办法
把文本切开之后,会遇到一个难题:有些重要的信息被切断了,分散在不同的片段里;有些片段之间的信息相互依赖,甚至相互矛盾。单独看一个片段,模型可能做出错误的判断。论文针对这些问题设计了两项关键机制。一是结构化的信息协议:规定每个片段的处理结果要以统一的结构输出,包括提取的信息、推理的依据、给出的答案,以及对这个答案的置信度。二是上下文置信度校准:在汇总时,根据各个片段答案的置信度来权衡和整合,处理片段之间的冲突,避免被某个只看到片面信息的错误结论误导。
效果
论文报告,LLM×MapReduce 在多个长文本基准上的表现优于当时的开源和商用长上下文模型,并且可以用在不同的大模型上。面壁智能的 MiniCPM3-4B 也采用了这一方法来支持超长文本的处理。这类分而治之的方法,为在有限的资源下处理超长文档提供了一种实用的思路。