大模型解码与部署
一、解码策略
- 背景
解码策略将主要关注如何基于概率分布𝑃 选择合适的下一个词𝑢′
- 贪心搜索(Greedy Search):在每个生成步骤中都选择概率最高的词元
优缺点:确定性策略,任务输出高度依赖于输入内容,贪心搜索通常能够获得不错的结果(如翻译和摘要)。开放式任务(对话和故事生成等)过于关注局部最优,会生成不自然重复的句子。 - 概率采样(Probability Sampling):根据模型建模的概率分布采样得到下一个词元,旨在增强生成过程中的随机性和结果的多样性
- 贪心搜索的改进
- 束搜索(Beam Search)保留前𝑛 个具有最高概率的句子,并最终选取整体概率最高的生成回复
- 长度惩罚:束搜索中需要比较不同长度候选句子的概率(会倾向于生成较短的句子),需要引入长度惩罚(Length Penalty)(亦称为长度归一化)技术。句子概率除以其长度的指数幂𝛼
- 重复惩罚:𝑛-元惩罚(𝑛-gram Penalty)来强制避免生成重复的连续𝑛 个词元,通常设置为3 到5,出现惩罚将已经生成词元的logits减去惩罚项𝛼 来降低该词元之后生成的概率。频率惩罚相较于出现惩罚,会记录每个词元生成的数目,减去出现次数乘以惩罚项𝛼,因此如果一个词元生成得越多,惩罚也就越大。
- 随机采样的改进策略
基于概率采样的方法会在整个词表中选择词元,这可能会导致生成不相干的词元;改进采样策略,减少具有极低概率词汇对于生成结果的影响。
- 温度采样(Temperature Sampling):为了调节采样过程中的随机性,调整softmax 函数中的温度系数,t为温度系数,l为logits
降低温度系数𝑡 会使得概率分布更加集中,从而增加了高概率词元的采样可能性,同时降低了低概率词元的采样可能
- Top-𝑘 采样(Top-𝑘 Sampling):直接剔除概率较低的词元,限制模型从概率最高的前𝑘 个词元中进行采样
- Top-𝑝 采样(Top-𝑝 Sampling):top-𝑘 采样策略并不考虑整体概率分布,固定的常数𝑘 可能无法适应不同的上下文语境。又称为核采样,Nucleus Sampling,核心思想是从一个符合特定概率条件的最小词元集合中进行采样,要求其中包含的所有词元累积概率大于或等于预设阈值𝑝
- 对比解码(Contrastive Decoding):通过计算一个较大的语言模型(例如GPT-2 XL)和一个较小的语言模型(例如GPT-2 small)之间
的对数概率分布差值,然后基于归一化的差值分布采样下一个词元,从而有效地提升重要词元在生成过程中的影响力。
- 实际使用设置
二、解码加速算法
- 解码效率分析
- 全量解码与增量解码
可以发现后者相比前者只需要额外计算一次新生成词元𝑢′ 相关的状态
可以通过缓存之前序列的键值状态,每次生成下一个词元时利用缓存的键值矩阵计算当前的多头注意力,这称为键值缓存(Key-Value Caching)优化。
1-3行是全量解码阶段,对于输入序列一次性计算其状态并缓存键值矩阵,增量解码阶段,只计算上一步新生成词元的状态,并不断地以自回归方式生成新词元并对应更新键值缓存。
- 解码效率的定量评估指标
1)GPU算力:算力是指GPU 每秒能够进行的浮点运算次数,单位是FLOP/s;
2)带宽是该显卡每秒能够进行的显存读写量,单位是byte/s;
3)算力和带宽的比值被称为该GPU 的计算强度上限𝐼𝑚𝑎𝑥,单位为FLOP/byte
4)运算量指运行该模型需要的总浮点计算数,单位为FLOP
5)访存量是运行该模型的过程中所需的显存读写量,单位为byte
6)运算量和访存量的比值被称为该模型的计算强度𝐼,单位为FLOP/byte
当模型的计算强度𝐼 小于GPU 的计算强度上限𝐼𝑚𝑎𝑥 时,这说明GPU 的理论最高显存读写速度低于实际运算所需速度,因此模型实际的运行效率将主要受到显存读写速度的影响,这种情况称为带宽瓶颈;反之,当𝐼 大于𝐼𝑚𝑎𝑥 时,说明GPU 的理论最高浮点运算速度低于实际运算所需速度,因此模型的运行效率将主要受到算力的影响,这种情况称为计算瓶颈。 - 运算量、访存量和计算强度估计
- 系统级优化
针对“内存墙”问题,一个直观的解决方案是减少相关操作的访存量,从而达到提升计算强度的目的
- FlashAttention:尽可能减少对于中间结果的保存,进而直接得到最终结果,通过矩阵分块和算子融合等方法,将中间结果一直保留在缓存中,直到获得最终结果后再写回显存中,从而减少了显存读写量。
- PagedAttention:针对键值缓存拼接和注意力计算的优化操作,引入了操作系统中显存分页管理的方法,预先将显存划分成若干块给之后的键值缓存“预留空间”,从而显著减少了拼接时反复分配显存的操作。考虑到键值缓存通常会较长,PagedAttention采用了上述的分页管理操作,并使用算子融合的方法将查询向量与多个分页的键值缓存并行地进行计算,从而提升了计算效率。
- 批次管理优化:批次管理优化旨在通过增加计算中的批次大小来提高计算强度
1)连续批处理(Continuous Batching)技术:通过启发式算法来选择部分请求进行全量解码操作,或者选择一些请求进行单步增量解码操作。通过这样细粒度的拆分,连续批处理技术在一步操作中能够容纳更多的请求(相当于提高批次大小),从而提升了计算强度。
2)动态分割技术,将全量解码部分进一步拆分为多个子操作,其可以在一次计算中选择一些请求同时进行全量解码和增量解码操作,进而获得更大的批次和更高的解码吞吐量。
- 解码策略优化
(1)推测解码 Speculative Decoding
首先使用相对较小但解码更为高效的模型(例如𝑛 元统计模型或者小型预训练模型)自回归地生成若干个词元,然后再由大模型对这个片段进行一次验证(大模型一次验证与一次解码的时间消耗相当),来判断是否每个词元都是当前步骤概率最高的输出,随后大小模型持续迭代此过程直到解码结束。推测解码不会降低大模型解码的质量,实验测试表明能够带来约两倍左右的解码加速,是目前使用较多的解码策略优化方案。例子如下:
(2)级联解码 Cascade Inference
考虑到不同请求的难易度不同,分别使用不同规模的模型来处理请求,从而实现最小化解码时间的效果。引入了一系列模型(按照效率从高到低),然后将一个请求依次给这些模型进行生成,随后引入了一个专门训练的二分类模型来判断模型的生成结果是否符合任务要求。如果结果可靠就不需要再给之后的模型进行生成。
(3)非自回归解码 Non-autoregressive Decoding
额外训练了两个预测头来分别预测第二个词和第三个词达到一次生成三个词元的效果,尽管这些非(半)自回归策略在效率上有所提升,但仍然不能达到自回归解码的效果
(4)早退机制 Early Exiting
在模型的解码过程中,可以通过设置相应的早退判断条件。当早退条件满足时结束网络层的前向传递,直接生成相关的词元,从而提升解码效率(早期一种常见的早退判断方法是对于Transformer 每一层的输出都使用预测头得到在词表上的概率分布,然后计算该分布的熵。如果熵值小于预定义的阈值(即某一个词的概率显著较高),则可以判断为早退,不进行后续层的计算。),调整该阈值来平衡解码效率与生成质量。
三、低资源部署策略
模型量化(Model Quantization),来减少大模型的显存占用,从而使得能够在资源有限的环境下使用大模型。
- 量化基础知识
量化通常是指从浮点数到整数的映射过程,较常用的是8 比特整数量化,即INT8 量化。权重量化(也称为模型参数量化)和激活(值)量化,它们都以浮点数形式进行表示与存储。
(1)量化的数学表述
量化算法将浮点数向量𝒙 转化为量化值𝒙𝒒,𝑆 表示缩放因子,用于确定裁剪范围,𝑍 表示零点因子,用于确定对称或非对称量化,𝑅(·)表示将缩放后的浮点值映射为近似整数的取整操作。
裁剪范围对于量化性能有很大影响,通常需要根据实际数据分布进行校准,可以通过静态(离线)或动态(运行时)方式。
反量化(Dequantization)对应地从量化值中恢复原始值,该过程首先加上零点因子,然后乘以缩放因子:
(2)量化的策略
- 均匀量化和非均匀量化:根据映射函数的数值范围是否均匀区分,均匀量化在量化过程中量化函数产生的量化值之间的间距是均匀分布的,通常用于将连续的数据转换为离散的表示,以便在计算机中进行高效处理,简单高效
- 对称量化和非对称量化:均匀量化根据零点因子𝑍是否=0氛围对称和非对称
- 量化粒度的选择:针对一个批次的数据进行处理,其中批次的规模大小就反应了量化粒度。如张量粒度/通道粒度/组粒度等。从按张量到按组,量化粒度越来越小,且使用较小的粒度通常可以提高量化的准确性,有效保持原始模型的性能
- 大模型训练后量化方法
量化感知训练(Quantization-AwareTraining, QAT)和训练后量化(Post-Training Quantization, PTQ)。前者需要更新权重,训练后量化方法需要更少的算力开销,实践中应用更为广泛
- 权重量化:基于逐层量化的方法进行设计的,旨在通过最小化逐层的重构损失来优化模型的量化权重,公式中的帽子是在W上
GPTQ在以上基础上,进一步将权重矩阵按照列维度分组,对一个组内逐列进行量化,每列参数量化后,需要适当调整组内其他未量化的参数,以弥补当前量化造成的精度损失
AWQ发现在逐层和逐组权重量化过程中,对于模型性能重要的权重只占全部参数的一小部分(0.1%∼1%),并且应该更加关注那些与较大激活值维度相对应的关键权重,引入针对权重的激活感知缩放策略 - 权重和激活值量化:
- 细粒度量化减小量化误差,ZeroQuant采用了一种带有动态校准的词元级量化方法来压缩激活值,而对于更容易量化的模型权重使用了基于分组的量化方法
- 混合精度分解:当模型参数规模超过一定阈值后(如6.7B),神经网络中的激活值中会出现一些异常的超大数值,称为异常值涌现现象。
- 量化难度平衡:激活值往往比权重更加难量化
- 高效微调增强量化:直接进行低比特的量化(例如,INT4量化)通常会导致性能的严重下降,QLoRA 在量化模型中进一步引入了额外的小型可调适配器,并且使用16 比特精度进行训练与学习,用以补偿量化可能带来的损失
- 面向大语言模型的量化感知训练:通过教师模型生成的文本以及输出的预测分布来蒸馏小模型的方法,来压缩权重、激活值以及键值缓存。
- 经验性分析与相关结论
- 模型量化已经成为一种重要的提升大模型部署效率的技术途径,能够显著减少显存资源占用以及解码延迟。
- INT8 权重量化通常对于大语言模型性能的影响较小,更低精度权重量化的效果取决于具体的量化方法,越大模型受到量化影响越小
- 对于语言模型来说,激活值相对于模型权重更难量化,因为包含异常值,混合精度分解、细粒度量化和困难值迁移来减轻异常值的影响
- 轻量化微调方法可以用于补偿量化大语言模型的性能损失
四、其他模型压缩方法
通过精简模型的结构,进而减少参数的数量,模型蒸馏和模型剪枝
- 模型蒸馏(Model Distillation)
将复杂模型(称为教师模型)包含的知识迁移到简单模型(称为学生模型)中,从而实现复杂模型的压缩
- 传统的知识蒸馏方法
(1)基于反馈的知识蒸馏
关注教师模型最后一层输出的logits,这些logits 经过softmax 变换后,可以用作学生模型的“软标签”来进行学习,往往使用KL 散度作为衡量指标
(2)基于特征的知识蒸馏
关注于教师模型的中间层输出的激活值,并使用这些激活值作为监督信息训练学生模型。Φ(·) 表示变换函数用于处理输出形状不匹配的情况,L𝐹 (·) 是一个相似度函数
中间层特征提供了更为丰富的模型信息,有助于在模型蒸馏过程中实现更为有效的知识迁移。然而,这种方法也存在一些技术难点,如消除架构不一致的影响、目标层自动化选择等。 - 大语言模型的知识蒸馏方法
(1)白盒模型蒸馏方法可以获取模型的权重来指导学生模型,典型的方法为MINILLM
(2)黑盒模型蒸馏方法无法获得模型权重,只能使用其输出信息来训练小模型
关注于蒸馏大模型的关键能力,如上下文学习能力、思维链推理能力以及指令遵循能力
可以利用大语言模型生成输入样本的思维链推理过程,作为除标签以外的额外补充信息,来帮助引导小模型学习
- 模型剪枝
在尽可能不损失模型性能的情况下,努力消减模型的参数数量,最终有效降低模型的显存需求以及算力开销
(1)结构化剪枝
旨在去除对于性能影响较小的模型组件,可以删除神经元、通道甚至中间层,显著减少所需的矩阵乘法次数,实现模型的压缩和加速。
(2)非结构化剪枝
关注去除模型权重矩阵中不重要的数值,不修改模型的结构,通过创建一个包含0/1 的掩码矩阵实现,使用了𝐿1 范数来评估参数的重要性,可以实现更高的剪枝比率,不会显著加速模型的计算过程
(3)大语言模型剪枝方法
Sheared LLaMA 将结构化剪枝问题转化为一个约束优化问题,旨在得到针对不同结构的掩码变量用于去除不重要的参数
提示学习
一、基础提示
- 人工提示设计
针对特定任务设计合适的任务提示,这一过程被称为“提示工程”(PromptEngineering)。
(1)关键要素
- 任务描述:展示了大语言模型应当遵循的具体指令
- 输入数据:可以直接使用自然语言描述输入数据的内容,对于结构化数据(如知识图谱、表格等),通常使用线性化方法将其转换为易于处理的文本序列,可以使用编程代码中的数据结构进行存储表示
- 上下文信息
例如搜索引擎可以为开放问答任务提供参考文档,可以通过将检索到的参考文档以上下文信息的形式引入提示作为大语言模型的输入
- 提示策略
添加特定的前缀或后缀有助于引导大语言模型解决复杂任务。
例如,使用前缀“让我们一步一步地思考”可以激发大语言模型的逐步推理能力,而使用前缀“你是这项任务(或这个领域)的专家”可以提高大语言模型在某些特定任务(或领域)中的表现。
(2)设计原则 - 清晰地表达任务目标
一个清晰详尽的任务描述中应当包含任务的各种要素信息,如任务目标、输入/输出数据(例如,“给定一份长文档,我希望你生成一份简明摘要”)和回复限制(例如,“摘要长度不能超过50 个单词”) - 分解为简单且详细的子任务
将一个复杂任务分解为若干个相对独立但又相互关联的子任务,每个子任务都对应原始任务的某个方面或步骤 - 提供少样本示例
少样本示例有助于大语言模型在无需调整参数的前提下学习输入与输出之间的语义映射关系 - 采用模型友好的提示格式
- 自动提示优化
人工设计需要耗费较多的人工成本,同时要求设计人员具有丰富的提示工程经验,同时大语言模型对于提示设计比较敏感,人工设计的提示有时很难获得最优的效果,还可能导致任务性能的下降
(1)离散提示优化
- 基于梯度的方法:通过梯度更新技术以最大化模型的似然分数来优化离散提示的搜索过程。
- 基于强化学习的方法:可以将预训练语言模型作为强化学习中的策略网络并依次生成提示中的词元。在提示生成结束之后,策略网络可以获得任务特定的奖励信号,该奖励信号可通过强化学习算法用于策略网络参数的训练。
- 基于编辑的方法:如何通过编辑现有的提示来改进模型的性能,通常是基于模型在目标任务上的表现来判断提示的好坏
- 基于大语言模型的方法:提示优化看作一个待求解的任务,可以采用模型困惑度或任务准确率作为衡量指令质量的指标。
(2)连续提示优化 - 监督学习方法:将连续提示向量视为可训练的模型参数,基于下游任务数据,通过最小化交叉熵损失来优化连续提示。
- 迁移学习方法:首先为若干个具有代表性的源任务学习一个所有任务共享的连续提示,然后使用该提示初始化目标任务的提示
二、上下文学习(In-context learning, ICL)
- 上下文学习的形式化定义
上下文学习使用由任务描述和(或)示例所组成的自然语言文本作为提示。
2. 示例设计
(1)示例选择:
- 基于相关度排序的方法:𝑘 近邻(𝑘-Nearest Neighbors,𝑘-NN)的相似度检索算法。使用文本嵌入模型(如BERT)将所有候选样本映射到低维嵌入空间中,然后根据这些候选样本与测试样本的嵌入语义相似度进行排序,并选择出最相关的𝑘 个示例,最后将筛选出的示例作为上下文学习的示例集合
- 基于集合多样性的方法:前者简单易行但独立地评估每个示例的相关性,而忽略了示例集合的整体效果。针对特定任务选择出具有代表性的、信息覆盖性好的示例集合,从而确保所选示例能够反应尽可能多的任务信息,从而为大语言模型的推理提供更丰富、更全面的信息。MMR 算法(Maximum Margin Ranking)以及基于行列式点过程的DPP 算法(Determinantal Point Process),从而加强示例集合的多样性。
- 基于大语言模型的方法:大模型作为评分器对候选样本进行评估,进而选择出优质的示例
(2)示例格式 - 人工标注的格式:
- 自动生成的格式:借助大语言模型的上下文学习能力,进而大规模扩充新任务的示例模版
(3)示例顺序
产生示例的候选顺序和评估示例顺序的有效性。 - 产生候选示例顺序:将与测试样例相似度更高的示例放在更靠近测试样本的位置
- 评估示例顺序质量:熵值越低,意味着模型预测分布越不均匀,则模型预测的置信度更高。
- 底层机制
(1)预训练阶段对上下文学习能力的影响
- 预训练任务:训练任务越多且越多样,模型的上下文学习能力就越强
- 预训练数据:混合不同领域的预训练数据,增强预训练语料的多样性可以提高大语言模型的上下文学习能力
(2)推理阶段大语言模型执行上下文学习的方式 - 任务识别
- 任务学习
三、思维链提示
旨在增强大语言模型在各类复杂推理任务上的表现
- 思维链提示的基本形式
将原始的⟨ 输入,输出⟩ 映射关系转换为⟨ 输入,思维链,输出⟩ 这一三元组形式,思维链提供了一系列语义连贯且具有逻辑性的中间推理步骤,有效地建立起输入与输出之间的桥接关系。 - 思维链提示的优化策略
仍然存在推理过程错误、生成答案不稳定等问题
(1)思维链示例设计
针对输入端对大模型的思维链示例进行增强
- 复杂化的思维链:思维链复杂化的体现主要在于推理步骤的增多
- 多样化的思维链:为模型提供多种思考方式以及推理结构,利用聚类算法(例如𝑘-means 聚类)将训练集中的问题划分为𝑘 个簇,选择簇代表性问题,将该问题输入给大语言模型并生成对应的思维链和答案作为示例
(2)思维链生成方法
针对大模型的思维链生成过程进行改进 - 基于采样的方法:采样多条推理路径来缓解单一推理路径的不稳定问题,所得到答案中出现频率最高的那个答案作为最终输出,也可以加劝,投票等
- 基于验证的方法:顺序推理本质可能导致推理过程中出现错误传递或累积的现象,使用专门训练的验证器或大语言模型自身来验证所生成的推理步骤的准确性
(3)拓展的推理结构
整个思维链结构进行优化 - 树形结构的推理:
- 图形结构的推理:支持更为复杂的拓扑结构
- 关于思维链的进一步讨论
在一些简单任务上,思维链提示有时甚至会带来效果上的下降
- 思维链推理能力的来源:训练数据中存在很多相互重叠且互相影响的局部变量空间(例如主题、概念和关键词等)。在这个条件下,即使两个变量没有在训练数据中共现,也可以通过一系列重叠的中间变量的推理而联系起来。
- 思维链提示对模型推理的影响:主要通过对思维链提示进行扰动,然后观察模型行为上的变化来得出相应的结论,与问题的相关性以及推理过程的逻辑性强相关,与形式无关
规划与智能体
规划旨在为目标任务制定包含一系列动作的解决方案,是大语言模型解决复杂问题能力的重要体现,也是自主智能体最重要的核心能力
通过感知环境、规划解决方案以及执行相应动作,自主智能体能够有效完成既定目标任务
一、基于大语言模型的规划
在面对诸如几何数学求解、游戏、代码编程以及日常生活任务等复杂任务时仍然表现不好,可以使用基于大语言模型的规划(Planning)。
核心思想在于将复杂任务分解为若干相关联的子任务,并围绕这些子任务制定包含一系列执行动作(Action)的解决方案,从而将复杂任务的求解转换为一系列更为简单的子任务依次求解,进而简化了任务难度。
- 整体框架
任务规划器(Task Planner)、规划执行器(Plan Executor)以及环境(Environment)
- 方案生成
基于大语言模型的综合理解与推理能力,通过合适的提示让大语言模型生成目标任务的解决方案。
- 一次性方案生成:过特殊设计的提示方法让大语言模型一次性生成完整的解决方案
- 迭代式方案生成:基于历史动作和当前环境的反馈逐步规划下一步的执行动作
- 反馈获取
- 外部反馈
- 内部反馈:大语言模型本身
二、基于大语言模型的智能体
- 智能体概述
智能体(Agent)是一个具备环境感知、决策制定及动作执行能力的自主算法系统
传统智能体技术面临的主要挑战是它们通常依赖于启发式规则或受限于特定环境约束,很大程度上限制了它们在开放和动态场景中的适应性与扩展性 - 大语言模型智能体的构建
记忆组件(Memory)、规划组件(Planning)和执行组件(Execution)
(1) 记忆组件:记忆组件构成了智能体的核心存储单元,主要用于存储智能体与环境的历史交互记录,并能够随时检索使用
- 短期记忆:负责暂时存储和处理智能体相关信息,对应于模型内部的上下文窗口
- 长期记忆:存储内容具有持久性,即使在不常访问的情况下也能稳定保留,涵盖事实知识、基础概念、过往经验以及重要技能等多个层面的信息,通常使用外部存储来实现
(2)规划组件:为智能体引入了类似于人类解决任务的思考方式,将复杂任务分解为一系列简单的子任务,进而逐一进行解决
(3)执行组件:主要职责是执行由规划组件制定的任务解决方案
(4)工作流程
- 多智能体系统的构建
多智能体系统着重强调智能体间的协同合作,以发挥集体智慧的优势
(1)多智能体系统的构建方法
(2)多智能体系统的通讯协同机制 - 大语言模型智能体的典型应用
WebGPT:WebGPT 具备自主搜索、自然语言交互以及信息整合分析等特点,能够理解用户的自然语言查询,自动在互联网上搜索相关网页。根据搜索结果,WebGPT 能够点击、浏览、收藏相关网页信息,对搜索结果进行分析和整合,最终以自然语言的形式提供准确全面的回答,并提供参考文献
MetaGPT:模拟软件开发过程中的不同角色和协作 - 待解决的关键技术问题
- 智能体系统的计算资源消耗:
- 复杂工具使用
- 高效的多智能体交互机制
- 面向智能体系统的模型适配方法
- 面向真实世界的智能体模拟
评测
一、评测指标与评测方法
- 常见评测指标
(1)语言建模任务相关评测指标
-
困惑度(Perplexity, PPL):是衡量语言建模能力的重要指标,模型的困惑度越低,说明其对参考文本的建模概率越高,进而表明该模型具有更强的语言建模能力
*
(2)分类任务相关评测指标
分类任务通常采用精确率(Precision)、召回率(Recall)、F1 分数(F1 Score)等评测指标来评估模型的分类结果。
-
精确率:模型预测为正例的样本中真正为正例的比例
-
召回率:所有真正为正例的样本中被模型正确预测出来的比例
-
F1 分数:精确率和召回率的调和平均数,用于衡量模型在分类任务上的综合性能
(3)条件文本生成任务相关评测指标
目标是检查模型能否基于输入生成流畅、逻辑连贯且具有实际语义的回复 -
BLEU(Bilingual Evaluation Understudy):通过计算机器翻译输出的候选文本与参考文本之间的词汇相似度来评估翻译质量,候选文本与参考文本的𝑛 元组(𝑛-gram)共现频率,评分结果在[0, 1] 的区间内
𝑤𝑛 是𝑛 元组的权重,用于调整不同长度的𝑛 元组对最终评分的影响,者通常设𝑛 = 4,并平均分配𝑤𝑛,BP 表示长度惩罚因子,用于修正由于候选文本长度过短导致的评分偏差
𝐶 代表候选文本,𝑅 代表所有参考文本集合R 中的一个文本,count𝐶 (n-gram)和count𝑅(n-gram) 分别指𝑛 元组在候选文本和参考文本中的出现次数。 -
ROUGE(Recall-Oriented Understudy for Gisting Evaluation):侧重于召回率,即强调文本信息的覆盖度和完整性
-
ROUGE-L:“L”代表最长公共子序列(Longest Common Subsequence, LCS),以F1 分数计算,结合了精确率和召回率的信息,精确率
衡量了候选文本中有多少内容是与参考文本相关的,而召回率则衡量了参考文本中有多少内容被候选文本所覆盖。
(2)问答任务相关评测指标
通常使用准确率来评估模型的回答结果 -
对于数学推理任务,答案的正确性由参考答案表达式和预测答案表达式的等价性决定
-
对于阅读理解、知识问答等任务,研究人员通常采用精确匹配率(Exact Match, EM)指标和F1 分数
(3)执行类任务相关评测指标 -
成功率:通过衡量模型成功完成任务的次数与任务总数之间的比例,成功率能够直观展现模型在实际任务执行能力上的表现。
-
Pass@𝑘:由OpenAI 在HumanEval 数据集中提出的评测大语言模型代码合成(Code Synthesis)能力的指标。针对单个问题输入生成的𝑘 个代码输出中,至少有一个代码能够通过验证的概率。
后面一坨是对给定问题合成𝑘 个代码全部不符合要求的概率的无偏估计,将其取反即为Pass@𝑘 的无偏估计。𝑛 代表对每个测试问题合成的代码总数,𝑐 代表满足要求的代码数量
(4)偏好排序任务相关评测指标
比较和评估不同文本或选项之间的质量、相关性、重要性或满意度等方面的差异 -
Elo (Elo Rating System)评分体系:应用于各类对弈活动的评价方法,通过模型之间的成对比较来动态更新两个模型各自的评分。为每个模型分配一个初始的Elo 分数,在进行模型比较时,根据两个模型当前的Elo 分数,可以计算出它们各自的期望胜率:
根据实际的比较结果更新模型的Elo 分数。
𝐾 是一个调整系数,决定了比较结果对于Elo 分数更新的影响程度;𝑆𝐴 表示模型A 在与模型B 的比较中的实际得分
2. 评测范式与方法
- 基础大语言模型的评测
面向知识的评测数据集(如MMLU 和C-Eval )侧重于评估大语言模型对现实世界知识的理解和应用;而面向推理的评测数据集(如GSM8K、BBH和MATH)则更加关注模型在解决复杂推理问题时的表现。此外,一些综合评测体系(如OpenCompass)也尝试将这两类评测任务相结合,从而更全面地评估大语言模型的综合能力。
首先将每个评测任务的具体样本转化为模型可以理解的提示语,引导模型生成相应的结果文本,利用人工编写的规则或自动化脚本对生成的结果文本进行解析和处理,以提取出模型针对每个问题的预测答案。将预测答案与真实答案进行对比,并借助准确率等定量指标来评估模型的性能。既可以在少样本设置下进行(以测试模型的快速适配能力),也可以在零样本设置下进行(以评估模型在未见任务上的泛化能力)。
流行的大语言模型排行榜(如Open LLM Leaderboard)就是基于这种方法来同时评测基础大语言模型和微调大语言模型的性能表现。 - 微调大语言模型的评测
由于微调大语言模型旨在提升模型在通用能力范围内的表现,包括知识利用与人类对齐等,因此其评测方法也相应地更加多样化
基于人类的评测,成对比较法和单一评分法;基于模型的评测,强大的闭源大语言模型(如ChatGPT 和GPT-4)来替代人类评估员。 - 不同评测方法的利弊
二、基础能力评测
- 语言生成
- 主要问题
- 幻象
模型生成的信息与输入信息存在冲突为内在幻象,无法通过输入信息直接进行验证为外在幻象。解决方案:(1)广泛采用了基于人类对齐的策略(2)整合外部工具(如搜索引擎等)来提供可靠的信息源也有助于加强事实性内容的生成 - 知识时效性
在面对训练数据之外的知识信息时,模型通常无法表现出较好的效果;利用外部知识源(如搜索引擎)来补充大语言模型的知识储备。这些外部知识源可以与大语言模型进行联合优化,或者作为即插即用的模块使用
- 复杂推理
知识推理:旨在考察模型通过逻辑关系与事实知识解决复杂任务的能力;通常采用答案准确率、BLEU 或人工评测方法来评估模型的推理能力
符号推理:给定形式化的规则,让模型来操作预定义好的符号以实现某些特定目标
数学推理:要求模型综合利用数学知识、逻辑推演与计算能力,以解决给定数学问题或构建证明过程
三、高级能力评测
- 人类对齐