我自己的原文哦~ https://blog.51cto.com/whaosoft/11566566
# 深度模型融合(LLM/基础模型/联邦学习/微调等)
23年9月国防科大、京东和北理工的论文“Deep Model Fusion: A Survey”。
深度模型融合/合并是一种新兴技术,它将多个深度学习模型的参数或预测合并为一个模型。它结合了不同模型的能力来弥补单个模型的偏差和错误,以获得更好的性能。然而,大规模深度学习模型(例如LLM和基础模型)上的深度模型融合面临着一些挑战,包括高计算成本、高维参数空间、不同异构模型之间的干扰等。本文将现有的深度模型融合方法分为四类:(1)“模式连接”,通过一条损失减少的路径将权重空间中的解连接起来,以获得更好的模型融合初始化;(2)“对齐”,匹配神经网络之间的单元,为融合创造更好的条件;(3)“权重平均”是一种经典的模型融合方法,将多个模型的权重进行平均,以获得更接近最优解、更准确的结果。(4)“集成学习”结合了不同模型的输出,这是提高最终模型准确性和鲁棒性的基础技术。此外,分析深度模型融合面临的挑战,并提出了未来模型融合可能的研究方向。
由于数据隐私和实际资源节省问题,深度模型融合引起了越来越多的兴趣。尽管深度模型融合的发展带来了许多技术突破,但也产生了一系列挑战,例如计算负载高、模型异构性以及组合优化对齐速度慢等[133, 204],让一些方法在具体的场景受到限制[227, 254],这激发了科学家研究不同情况下模型融合的原理。
不过,有些工作只关注单一视角(例如特征融合等)[45, 195]和特定场景[213]的模型融合,或者不同方式的信息融合(多模态融合[1, 103] ])而不是参数的融合。加上最近的进展和代表性应用,例如联邦学习(FL)[160]和微调[29]等,本文根据内部机制和目的分为四类,如图所示整个模型融合流程示意图,以及各种方法的分类和连接。
对于独立训练且彼此不相邻的模型,“模式连接”和“对齐”使解决方案更加接近,从而 以获得更好的平均原始条件。对于权值空间存在一定差异的相似模型,“权重平均(WA)”倾向于直接对模型进行平均,在损失函数值较低的参数空间区域中获得更接近最优点的解 [118]。此外,对于现有模型的预测,“集成学习”整合了模型的不同形式的预测,以获得更好的结果。
模型融合作为一种提高深度模型精度和鲁棒性的技术,促进了许多应用领域的改进。“联邦学习[160]”是一种在中央服务器上聚合客户端模型的应用程序,使各方能够为函数的计算(例如各种统计数据、分类器[177])贡献数据,而不会带来隐私暴露的风险。“微调”对预训练的模型进行小幅调整,与模型融合相结合,以降低训练成本并适应特定任务或领域的需求。模型融合还涉及到“蒸馏”。即结合多个复杂模型(教师)的软目标知识,训练一个针对特定需求的小模型。“基础/LLM上的模型融合”包括大型基础模型或大型语言模型(LLM)的工作,例如视觉Transformer(ViT)[79]和GPT[17]等。模型融合的应用帮助开发人员适应各种任务和领域的需求,促进深度学习的发展。
为了确定训练网络的结果对于 SGD 噪声是否稳定,损失屏障(误差屏障)被定义为两点损失线性插值与两点线性连接损失之间的最大差[50]。损失屏障说明,沿着 W1 和 W2 之间的路径优化图 [56, 61] ,误差是恒定的还是增加的。如果两个网络之间存在一条隧道,其屏障约等于0,则相当于模式连接[46,59,60]。也就是说,SGD得到的局部极小值可以通过一条最大损失最小化的路径 φ 连接起来。
基于梯度的优化得到的解可以在权重空间中通过没有屏障的路径(连接器)连接起来,这被称为模式连接[46, 50]。可以沿着低损失路径获得更适合模型融合的其他模型。根据路径的数学形式和连接器所在的空间,分为三个部分“线性模式连接(LMC)[66]”、“非线性模式连接”和“子空间的模式连接” ”。
模式连接可以解决训练过程中的局部优化问题。模式连接路径的几何关系 [61, 162] 也可用于加速随机梯度下降 (SGD) 等优化过程的收敛性、稳定性和准确性。总之,模式连接为解释和理解模型融合的行为提供了新的视角[66]。但计算复杂度和参数调整的困难应该得到解决,特别是在大型数据集上训练模型时。下表是线性模式连接(LMC) 和非线性模式连接的标准训练流程总结。
如图是二维损失图和其他维度子空间中的模式连接示意图。左:两个盆地最小值的线性插值导致高损失屏障[46]。较低的两个最佳值遵循接近恒定的低损失路径(例如贝塞尔曲线、多边框链等)[66]。π(W2)是W2的排列对称性的等价模型,与W1位于同一盆地。Re-Basin 通过为各个流域提供解决方案来合并模型 [3]。右图:低损失路径连接子空间中的多个最小值(例如,由 d-维 楔形组成的低损失流形 [56])等)。
下表是在不同局部最小值之间寻找隧道的方法。
总之,模式连接为深度模型融合提供了更新、更灵活的视角。神经网络的训练容易陷入局部最优,从而导致性能下降。在模型连接的基础上,可以找到性能更好的其他模型,并将其作为进一步优化和融合的起点。可以利用已经训练的模型在参数空间中移动来达到新的目标模型,这样可以节省时间和计算开销,适合数据有限的情况。然而,在连接不同模型时,可能会引入额外的复杂性和灵活性,从而增加过度拟合的风险。因此,应仔细控制相关的超参数和变化程度。此外,模式连接需要微调或参数更改,这可能会增加训练时间和资源消耗。综上所述,模型连通性在模型融合方面具有诸多优势,包括帮助克服局部最优问题、提供解释网络行为的新视角等。未来,模式连接有望帮助理解神经网络的内部机制并提供指导 以便将来进行更高效的深度模型融合设计。
由于来自不同网络的通道和组件的随机性,网络的活动组件相互干扰[204]。因此,未对齐的加权平均值可能会忽略不同模型中单位之间的对应关系并损坏有用信息。例如,不同模型中的两个神经元之间存在一种关系,它们可能完全不同但功能相似。对齐是将不同模型的单元进行匹配,从而为深度模型融合获得更好的初始条件。其目的是使多个模型的差异更小,从而增强深度模型融合效果。此外,对齐本质上可以被视为组合优化问题。一种代表性机制“Re-basin”,它为各个流域提供解决方案,合并具有更好原始条件的模型。根据对齐目标是否是数据驱动的,对齐分为“激活匹配”和“权重匹配”两种类型,如表所示。
一般来说,即使对于浅层神经网络,鞍点和局部最优的数量也会随着参数数量呈指数增长[10, 66]。研究发现,训练中存在不变性,导致这些局部最优中的某些点具有相同的表示形式 [22,81,140]。具体来说,如果通过排列交换隐藏层的单元,则网络的功能不会改变,这称为排列对称性[43, 50]。
这些不变性带来的排列对称性有助于更好地理解损失图的结构 [22, 66]。不变性也可以被视为损失图中鞍点的来源[14]。[68]研究神经网络中对称性的代数结构以及这种结构如何在损失图几何中表现出来。[14]在高维平台引入排列点,在该点可以交换神经元,而不会增加损失或参数跳跃。对损失进行梯度下降,调整神经元m和n的参数向量θm和θn,直到向量到达排列点。
基于排列对称性,权空间中不同区域的解可以生成等价解。等效解位于与原始解相同的区域,具有低损失屏障(盆地),称为“Re-basin”[3]。与模式连接相比,Re-basin倾向于通过排列而不是低损失隧道的方式将点传输到盆地中。目前,对齐是Re-basin的代表性方法[3, 178]。然而,如何高效地搜索排列对称性的所有可能性,使得所有解都指向同一个盆地是当前的挑战。
如图是【14】引入排列点交换神经元的示意图。左:一般对齐过程,模型A参考模型B转化为模型Ap,然后Ap和B的线性组合产生C。右:调整不同隐藏层两个神经元的参数向量θm和θn接近排列点,在排列点[14]θ′m = θ′n,两个神经元计算相同的函数,这意味着两个神经元可以交换。
对齐通过调整模型的参数使模型更加相似,可以提高模型之间的信息共享,从而提高融合模型的泛化能力。此外,对齐有助于提高模型在复杂任务上的性能和鲁棒性。然而,对齐方法面临着组合优化速度慢的问题。对齐需要额外的计算开销来调整模型的参数,这可能导致更复杂且耗时的训练过程,特别是在大深度模型中[142, 204]。
综上所述,对齐可以提高不同模型之间的一致性和整体效果。随着DL应用场景的多样化,对齐将成为优化深度模型融合、提高泛化能力的关键方法之一。未来,对齐可以在迁移学习、域自适应[63]、知识蒸馏等领域发挥作用。例如,对齐可以减少迁移学习中源域和目标域之间的差异,提高对新域的学习 。
由于神经网络参数的高度冗余,不同神经网络的权值之间通常不存在一一对应的关系。因此,通常不能保证权重平均(WA) 在默认情况下表现良好。对于权重差异较大的训练网络,普通平均值表现不佳[204]。从统计的角度来看,WA允许控制模型中的各个模型参数,从而减少最终模型的方差,从而对正则化属性和输出结果产生可靠的影响[77, 166]。
下表是WA的代表性方法:
受快速几何集成 (FGE) [66] 和检查点平均 [149] 的启发,[99]利用恒定或周期性学习率对SGD轨迹的多个点进行平均,这被视为随机权重平均(SWA)。SWA 改进了一系列重要基线的训练,提供了更好的时间可扩展性。SWA 不是训练一组收集的模型(如普通融合),而是训练单个模型来找到比 SGD 更平滑的解决方案。在下表中列出了与 SWA 相关的方法。此外,SWA 可以应用于任何架构或数据集,并展示出比快照集成 (SSE) [91] 和 FGE 更好的性能。在每个周期结束时,对新获得的权重与现有权重进行平均来更新 SWA 模型。
然而SWA只能对局部最优点附近的点进行平均,最终得到一个相对最小值,而不能准确逼近最优值。另外,由于某些因素(如前期收敛性差、学习率大、权重变化率快等),最终的输入样本偏差可能较大或不充分,导致整体效果不佳。大量工作往往会改变 SWA 的采样方法。
如图不同SWA相关方法的采样和学习率安排比较。(a) SWA:恒定学习率。(b)SWA:周期性学习率。(c)SWAD:密集采样。(d)HWA:利用在线和离线WA,以不同的同步周期采样,滑动窗口长度为h。
模型汤[239]是指对用不同超参微调的模型进行平均的方法。它简单但有效,在 ImageNet-1K 上实现了 90.94% 的准确率,超过了之前在 CoAtNet-7 (90.88%) [38] 和 ViT-G (90.45%) [255] 上的工作。如表总结了不同的模型汤方法。
在 多任务学习(MTL )中,预训练模型和任务向量(即 τi = Wft − Wpre,预训练模型和微调模型之间的差异)相结合,在所有任务上获得更好的性能。基于这一观察,任务算术[94]通过加法和线性组合微调任务向量来提高模型在任务上的性能,这已成为直接编辑预训练模型的灵活高效的方法,如图所示:采用任务算术和LoraHub(Low-rank adaptations Hub)。
另外,子空间中的模型融合将训练轨迹限制在低维子空间中,可减少负载和难度。
WA 通过平均不同深度模型的权重来获得最终模型,无需额外的计算复杂性或训练过程[109, 159]。一般来说,如果随机模型在表示能力、结构或训练数据方面存在显着差异,则融合的结果可能无法达到预期的性能。使用相同的超参配置但具有不同的数据顺序从头开始对模型进行线性插值甚至不如随机模型有效[59]。因此,大量提出的方法旨在以其他数学方式优化 WA 过程。
此外,当模型共享其优化轨迹的一部分(例如,检查点平均、尾部平均、SWA [99, 149] 等)或在相同的预训练模型上进行微调时(例如,模型汤 [239] 等),插值模型的准确性表现更好[167]。此外,模型汤[239]对具有不同超参配置的模型进行平均以获得最终结果。此外,在模型平均值中选择适当的权重也可能是一个挑战,这通常充满主观性。更复杂的权重选择机制可能需要大量复杂的试验和交叉验证。
WA是深度学习中一种很有前景的技术,未来可以作为模型优化技术,减少不同迭代之间的权值波动,提高稳定性和收敛速度。WA可以改进联邦学习(FL)的聚合阶段,以更好地保护隐私并降低未来的通信成本。此外,通过在终端设备上实施网络压缩,有望减少模型在资源受限设备上的存储空间和计算开销[250]。简而言之,WA是一种有前途且具有成本效益的DL技术,可以应用于FL等领域,以提高性能并减少存储开销。
集成学习,或多分类器系统,是一种集成多个单一模型来生成最终预测的技术,包括投票、平均[195]等。它提高了整体性能并减少了模型的方差,解决了诸如过拟合、 不稳定,数据量有限。
基于现有的预训练源模型,模型重用[266]提供了应用于新任务所需的模型,而无需从头开始重新训练新模型。它可以节省时间和计算资源,并在资源有限的情况下提供更好的性能[249]。另外,由于迁移学习的重点是解决目标域上的预测任务,因此模型重用可以视为迁移学习的一种。但迁移学习需要源域和目标域的标记数据,而在模型重用中,只能收集未标记的数据,而不能使用源域的数据[153]。
与多分类器集成学习不同,大多数当前方法重用现有的特征、标签或模态来获得最终预测[176, 266],而不存储大量训练数据[245]。模型重用的另一个关键挑战是从一组针对给定学习任务的预训练模型中识别有用的模型。
使用单一模型进行模型重用会产生过多的同质信息(例如,在一个域训练的模型可能不适合另一域的数据),并且很难找到完全适合目标域的单一预训练模型 。一般来说,用一组相似的模型来产生比单个模型更好的性能,这被表示为多模型重用(MMR)[153]。
下表比较不同复用方法的特点,简而言之,模型复用可以显着减少使用预训练模型所需的数据量,解决不同端之间传输数据时消耗大量带宽的问题。多模型复用也有广泛的应用,例如语音识别、安全隐私交互系统、数字视网膜[64]等。
与联邦学习[88,89,160]等对模型参数和规模有一定要求的相关模型融合算法相比,集成学习方法利用预测来组合多个异构弱分类器,没有这样的限制。另外,集成方法中不同架构的网络会比WA有更明显的比较效果。然而,集成方法需要维护和运行多个经过训练的模型,并在测试时将它们一起运行。考虑到深度学习模型的规模和复杂性,这种方法不适合计算资源和成本有限的应用程序[204]。
由于集成学习框架的多样性,可以实现模型多样性并增强泛化能力。将来,这对于处理数据变化和对抗性攻击非常重要。深度学习中的集成学习有望为模型预测提供置信度估计和不确定性测量,这对于决策支持系统、自动驾驶[74]、医疗诊断等的安全性和可靠性至关重要。
近年来,深度模型融合领域出现了大量的新研究,也推动了相关应用领域的发展。
联邦学习
为了解决数据存储的安全性和集中化挑战,联邦学习(FL) [160, 170]允许许多参与模型协作训练共享的全局模型,同时保护数据隐私,而无需将数据集集中在中央服务器上。它也可以被视为多-方学习问题[177]。特别是,聚合是 FL 的一个重要过程,它包含了由各方(例如设备、组织或个人)训练的模型或参数更新。如图演示了集中式和分散式 FL 中的两种不同聚合方法。,左:中央服务器和客户端终端之间的集中式联邦学习,迁移模型或梯度,最终聚合在服务器上。右:分散式联合学习在客户端终端之间传输和聚合模型,无需中央服务器。
下表是联邦学习的不同聚合方法:
简而言之,FL 中聚合步骤的本质是一种模型融合技术。选择合理的模型融合方法可以减少特定参与者或个体数据对最终模型的影响,从而提高模型在全局范围内的泛化能力和适应性。今后良好的聚合方法有望有助于应对联邦学习中的一系列挑战。高质量且可扩展的聚合方法预计将面临FL的一系列挑战,例如客户端异构性、非独立同分布异构数据、有限的计算资源[141]等。FL有望展现其潜力在更多领域中,例如自然语言处理、推荐系统[146]、医学图像分析[144]等。
微调
微调是一个基本模式(例如预训练模型),是调整模型以执行下游任务的有效方法 [23, 41],这可以使用更少的标记数据获得更好的泛化和更准确的输出。与随机初始化相比,预训练模型是通过相对一组特定于任务的数据来训练的,这始终是更好的训练标准起点。尽管如此。现有微调模型 [28, 29] 的平均值甚至是比普通预训练模型更好的基础模型,用于对下游任务进行微调。
此外,最近有大量将 WA 与微调相结合的工作,如图所示,例如 model soup [239]、DiWA [190] 等。微调提高了目标分布的准确性,但往往导致分布变化的稳健性下降。对微调模型进行平均的策略可能很简单,但它们没有充分利用每个微调模型之间的连接。因此,在目标任务训练之前先进行中间任务训练可以探索基础模型的能力[180,185,224]。受相互训练策略 [185] 的启发,[188]微调辅助任务的模型,利用不同的辅助任务并提高分布外(OOD)泛化能力。
微调模型的平均值减少了实现目标所需的训练时间[28],并生成更准确和更好的泛化模型。本质上,不同的微调方式(例如,冻结层微调、顶层微调等)也会对最终的精度和分布偏移产生一定的影响[240]。然而,WA和微调的结合是昂贵的开销,对具体应用有一定的限制。此外,它可能面临保存检查点爆炸或灾难性遗忘的问题[121],特别是应用于迁移学习。
知识蒸馏
知识蒸馏(KD)[83]是集成多个模型的重要方法,涉及以下两类模型。教师模型是指在大规模数据上训练的大型且强大的模型,具有较高的预测能力和表达能力。学生模型是一个相对较小的模型,具有较少的参数和计算资源 [18, 199]。利用教师的知识(例如输出概率分布、隐藏层表示等)指导训练,学生可以用更少的资源和更快的速度达到接近大型模型的预测能力[2, 119, 124 ,221]。考虑到多个教师或学生的表现预计比单个模型[6]更好,根据聚合目标将 KD 分为两类,如图所示。
第一类方法是合并多个教师模型并直接提取学生模型,如表所示。目前,最近的工作主要集成教师的输出(例如,logits [6,49,252]或特征) 基础知识 [143, 241] 等)。
另一种方法是使用教师模型提取多个学生,然后合并这些学生模型。然而,合并多学生也存在一些问题,例如计算资源需求大、解释性差以及过度依赖原始模型等。
基础模型/LLMs的模型融合
基础模型在处理复杂任务时表现出强大的性能和突现能力,大型基础模型的特点是其庞大的规模,包含数十亿个参数,帮助学习数据中的复杂模式。特别是,随着最近新的LLM [200, 264]的出现,如GPT-3 [17, 172],T5 [187],BERT [41],Megatron-LM,WA的应用[154, 212, 256] ] LLM引起了更多关注。
此外,最近的工作 [120, 256] 倾向于设计更好的框架和模块来适应应用LLM。由于高性能和低计算资源,对大型基础模型进行微调可以提高分布变化的鲁棒性[240]。
# 清华给海内外知名大模型做了场综合能力评测
在 2023 年的 “百模大战” 中,众多实践者推出了各类模型,这些模型有的是原创的,有的是针对开源模型进行微调的;有些是通用的,有些则是行业特定的。如何能合理地评价这些模型的能力,成为关键问题。
尽管国内外存在多个模型能力评测榜单,但它们的质量参差不齐,排名差异显著,这主要是因为评测数据和测试方法尚不成熟和科学,而好的评测方法应当具备开放性、动态性、科学性和权威性。
为提供客观、科学的评测标准,清华大学基础模型研究中心联合中关村实验室研制了 SuperBench 大模型综合能力评测框架,旨在推动大模型技术、应用和生态的健康发展。
近期,二者发布了 2024 年 3 月的《SuperBench 大模型综合能力评测报告》。在此评测中,报告选定了 14 个海内外具有代表性的模型进行测试。对于闭源模型,选取了 API 和网页两种调用模式中得分较高的一种进行评测。whaosoft开发板商城测试设备www.143ai.com
根据评测结果,报告得出以下几个主要结论:
● 整体来说,GPT-4 系列模型和 Claude-3 等国外模型在多个能力上依然处于领先地位,国内头部大模型 GLM-4 和文心一言 4.0 表现亮眼,与国际一流模型水平接近,且差距已经逐渐缩小。
● 国外大模型中,GPT-4 系列模型表现稳定,Claude-3 也展现了较强的综合实力,在语义理解和作为智能体两项能力评测中更是获得了榜首,跻身国际一流模型。
● 国内大模型中,GLM-4 和文心一言 4.0 在本次评测中表现最好,为国内头部模型;通义千问 2.1、Abab6、moonshot 网页版以及 qwen1.5-72b-chat 紧随其后,在部分能力评测中亦有不俗表现;但是国内大模型对比国际一流模型在代码编写、作为智能体两个能力上依然有较大差距,国内模型仍需努力。
大模型能力迁移 & SuperBench
自大语言模型诞生之初,评测便成为大模型研究中不可或缺的一部分。随着大模型研究的发展,对其性能重点的研究也在不断迁移。根据研究,大模型能力评测大概经历如下 5 个阶段:
2018 年 - 2021 年:语义评测阶段
早期的语言模型主要关注自然语言的理解任务 (e.g. 分词、词性标注、句法分析、信息抽取),相关评测主要考察语言模型对自然语言的语义理解能力。代表工作:BERT、 GPT、T5 等。
2021 年 - 2023 年:代码评测阶段
随着语言模型能力的增强,更具应用价值的代码模型逐渐出现。研究人员发现,基于代码生成任务训练的模型在测试中展现出更强的逻辑推理能力,代码模型成为研究热点。代表工作:Codex、CodeLLaMa、CodeGeeX 等。
2022 年 - 2023 年:对齐评测阶段
随着大模型在各领域的广泛应用,研究人员发现续写式的训练方式与指令式的应用方式之间存在差异,理解人类指令、对齐人类偏好逐渐成为大模型训练优化的关键目标之一。对齐好的模型能够准确理解并响应用户的意图,为大模型的广泛应用奠定了基础。代表工作:InstructGPT、ChatGPT、GPT4、ChatGLM 等。
2023 年 - 2024 年:智能体评测阶段
基于指令遵从和偏好对齐的能力,大模型作为智能中枢对复杂任务进行拆解、规划、决策和执行的能力逐渐被发掘。大模型作为智能体解决实际问题也被视为迈向通用人工智能(AGI)的重要方向。代表工作:AutoGPT、AutoGen 等。
2023 年 - future:安全评测阶段
随着模型能力的提升,对模型安全性和价值观的评估、监管与强化逐渐成为研究人员关注的重点。加强对潜在风险的研判,确保大模型的可控、可靠和可信,是未来 “AI 可持续发展” 的关键问题。
因此,为了全面地评估大模型的各项能力,SuperBench 评测体系包含了语义、代码、对齐、智能体和安全等五个评测大类,28 个子类。
评测结果
PART/1 语义评测
ExtremeGLUE 是一个包含 72 个中英双语传统数据集的高难度集合,旨在为语言模型提供更严格的评测标准,采用零样本 CoT 评测方式,并根据特定要求对模型输出进行评分。报告首先使用了超过 20 种语言模型进行初步测试,包括了 GPT-4、Claude、Vicuna、WizardLM 和 ChatGLM 等。基于所有模型的综合表现,决定了每个分类中挑选出难度最大的 10%~20% 数据,将它们组合为 "高难度传统数据集"。
评测方法 & 流程
● 评测方式:收集了 72 个中英双语传统数据集,提取其中高难度的题目组成 4 个维度的评测数据集,采取零样本 CoT 评测方式,各维度得分计算方式为回答正确的题目数所占百分比,最终总分取各维度的平均值。
● 评测流程:根据不同题目的形式和要求,对于模型的零样本 CoT 生成的结果进行评分。
整体表现:
在语义理解能力评测中,各模型形成了三个梯队,70 分档为第一梯队,包括 Claude-3、GLM-4、文心一言 4.0 以及 GPT-4 系列模型;其中 Claude-3 得分为 76.7,位居第一;国内模型 GLM-4 和文心一言 4.0 则超过 GPT-4 系列模型位居第二和第三位,但是和 Claude-3 有 3 分差距。
分类表现:
● 知识 - 常识:Claude-3 以 79.8 分领跑,国内模型 GLM-4 表现亮眼,超过 GPT-4 网页版位居第二;文心一言 4.0 表现不佳,距离榜首 Claude-3 有 12.7 分差距。
● 知识 - 科学:Claude-3 依然领先,并且是唯一一个 80 分以上模型;文心一言 4.0、GPT-4 系列模型以及 GLM-4 模型均在 75 分以上,为第一梯队模型。
● 数学:Claude-3 和文心一言 4.0 并列第一,得 65.5 分,GLM-4 领先 GPT-4 系列模型位列第三,其他模型得分在 55 分附近较为集中,当前大模型在数学能力上仍有较大提升空间。
● 阅读理解:各分数段分布相对较为平均,文心一言 4.0 超过 GPT-4 Turbo、Claude-3 以及 GLM-4 拿下榜首。
PART/2 代码评测
NaturalCodeBench(NCB)是一个评估模型代码能力的基准测试,传统的代码能力评测数据集主要考察模型在数据结构与算法方面的解题能力,而 NCB 数据集侧重考察模型在真实编程应用场景中写出正确可用代码的能力。
所有问题都从用户在线上服务中的提问筛选得来,问题的风格和格式更加多样,涵盖数据库、前端开发、算法、数据科学、操作系统、人工智能、软件工程等七个领域的问题,可以简单分为算法类和功能需求类两类。题目包含 java 和 python 两类编程语言,以及中文、英文两种问题语言。每个问题都对应 10 个人类撰写矫正的测试样例,9 个用于测试生成代码的功能正确性,剩下 1 个用于代码对齐。
评测方法 & 流程
● 评测方式:运行模型生成的函数,将输出结果与准备好的测例结果进行比对进行打分。将输出结果与准备好的测例结果进行比对进行打分,最终计算生成代码的一次通过率 pass@1。
● 评测流程:给定问题、单元测试代码、以及测例,模型首先根据问题生成目标函数;运行生成的目标函数,以测例中的输入作为参数得到函数运行输出,与测例中的标准输出进行比对,输出匹配得分,输出不匹配或函数运行错误均不得分。
整体表现:
在代码编写能力评测中,国内模型与国际一流模型之间仍有明显差距,GPT-4 系列模型、Claude-3 模型在代码通过率上明显领先,国内模型中 GLM-4,文心一言 4.0 与讯飞星火 3.5 表现突出,综合得分达到 40 分以上;然而,即使是表现最好的模型在代码的一次通过率上仍只有 50% 左右,代码生成任务对目前的大模型来说仍是一大挑战。
分类表现:
在 Python、Java、中文、英文四个维度的数据集中 GPT-4 系列模型包揽头名,体现出强大而全面的代码能力,除 Claude-3 外其余模型差距明显;
● 英文代码指令:GPT-4 Turbo 比 Claude-3 在 Python 和 Java 问题上分别高出 6.8 分和 1.5 分,比 GLM-4 在 Python 和 Java 问题上分别高出 14.2 分和 5.1 分,国内模型与国际模型在英文代码指令上差距比较明显;
● 中文代码指令:GPT-4 Turbo 比 Claude-3 在 Python 上高出 3.9 分,在 Java 上低 2.3 分,差距不大。GPT-4 Turbo 比 GLM-4 在 Python 和 Java 问题上分别高出 5.4 分和 2.8 分,国内模型在中文编码能力上与国际一流模型仍存在一定差距。
PART/3 对齐评测
AlignBench 旨在全面评测大模型在中文领域与人类意图的对齐度,通过模型打分评测回答质量,衡量模型的指令遵循和有用性。它包括 8 个维度,如基本任务和专业能力,使用真实高难度问题,并有高质量参考答案。优秀表现要求模型具有全面能力、指令理解和生成有帮助的答案。
“中文推理” 维度重点考察了大模型在中文为基础的数学计算、逻辑推理方面的表现。这一部分主要由从真实用户提问中获取并撰写标准答案,涉及多个细粒度领域的评估:
● 数学计算上,囊括了初等数学、高等数学和日常计算等方面的计算和证明。
● 逻辑推理上,则包括了常见的演绎推理、常识推理、数理逻辑、脑筋急转弯等问题,充分地考察了模型在需要多步推理和常见推理方法的场景下的表现。
“中文语言” 部分着重考察大模型在中文文字语言任务上的通用表现,具体包括六个不同的方向:基本任务、中文理解、综合问答、文本写作、角色扮演、专业能力。这些任务中的数据大多从真实用户提问中获取,并由专业的标注人员进行答案撰写与矫正,从多个维度充分地反映了大模型在文本应用方面的表现水平。具体来说:
● 基本任务考察了在常规 NLP 任务场景下,模型泛化到用户指令的能力;
● 中文理解上,着重强调了模型对于中华民族传统文化和汉字结构渊源的理解;
● 综合问答则关注模型回答一般性开放问题时的表现;
● 文本写作则揭示了模型在文字工作者工作中的表现水平;
● 角色扮演是一类新兴的任务,考察模型在用户指令下服从用户人设要求进行对话的能力;
● 专业能力则研究了大模型在专业知识领域的掌握程度和可靠性。
评测方法 & 流程
● 评测方式:通过强模型(如 GPT-4)打分评测回答质量,衡量模型的指令遵循能力和有用性。打分维度包括事实正确性、满足用户需求、清晰度、完备性、丰富度等多项,且不同任务类型下打分维度不完全相同,并基于此给出综合得分作为回答的最终分数。
● 评测流程:模型根据问题生成答案、GPT-4 根据生成的答案和测试集提供的参考答案进行详细的分析、评测和打分。
整体表现:
在人类对齐能力评测中,GPT-4 网页版占据榜首,文心一言 4.0 和 GPT-4 Turbo 同分(7.74)紧随其后,国内模型中 GLM-4 同样表现优异,超越 Claude-3,位列第四,通义千问 2.1 略低于 Claude-3,排名第六,同为第一梯队大模型。
分类表现:
中文推理整体分数明显低于中文语言,当下大模型推理能力整体有待加强:
● 中文推理:GPT-4 系列模型表现最好,略高于国内模型文心一言 4.0,并且和其他模型拉开明显差距;
● 中文语言:国内模型包揽了前四名,分别是 KimiChat 网页版(8.05 分)、通义千问 2.1(7.99 分)、GLM-4(7.98 分)、文心一言 4.0(7.91 分),超过 GPT-4 系列模型和 Claude-3 等国际一流模型。
各分类细拆分析:
中文推理:
● 数学计算:GPT-4 系列模型包揽前两名,国内模型文心一言 - 4.0、通义千问 2.1 分数超过 Claude-3,但与 GPT-4 系列模型仍有一定差距。
● 逻辑推理:7 分以上为第一梯队,由国内模型文心一言 4.0 领跑,同在第一梯队的还有 GPT-4 系列模型、Claude-3、GLM4 和 Abab6。
中文语言:
● 基本任务:GLM-4 拿下榜首,通义千问 2.1、Claude-3 和 GPT-4 网页版占据二到四位,国内其他大模型中文心一言 4.0 和 KimiChat 网页版也表现较好,超过了 GPT-4 Turbo。
● 中文理解:国内模型整体表现较好,包揽了前四名,文心一言 4.0 领先优势明显,领先第二名 GLM-4 0.41 分;国外模型中,Claude-3 表现尚可,排在第五位,但 GPT-4 系列模型表现较差,排在中下游,并且和第一名分差超过 1 分。
● 综合问答:各大模型均表现较好,超过 8 分的模型达到了 6 家,GPT-4 网页版和 KimiChat 网页版拿下最高分,GLM-4 和 Claude-3 分数相同,与榜首分数接近,并列第三。
● 文本写作:KimiChat 网页版表现最好,同时也是唯一一个 8 分以上的模型,GPT-4 Turbo 和通义千问 2.1 分列二、三位。
● 角色扮演:国内模型 Abab6、通义千问 2.1 和 KimiChat 网页版包揽前三名,且均在 8 分以上,超过 GPT-4 系列模型和 Claude-3 等国际一流模型。
● 专业能力:GPT-4 Turbo 占据了首位,KimiChat 网页版超过 GPT-4 网页版拿下第二名,国内其他模型中,GLM-4 和通义千问 2.1 同样表现不俗,并列排名第四。
PART/4 智能体评测
AgentBench 是一个评估语言模型在操作系统、游戏和网页等多种实际环境中作为智能体性能的综合基准测试工具包。
代码环境:该部分关注 LLMs 在协助人类与计计算机代码接口互动方面的潜在应用。LLMs 以其出色的编码能力和推理能力,有望成为强大的智能代理,协助人们更有效地与计算机界面进行互动。为了评估 LLMs 在这方面的表现,报告引入了三个代表性的环境,这些环境侧重于编码和推理能力。这些环境提供了实际的任务和挑战,测试 LLMs 在处理各种计算机界面和代码相关任务时的能力。
游戏环境:游戏环境是 AgentBench 的一部分,旨在评估 LLMs 在游戏场景中的表现。在游戏中,通常需要智能体具备强大的策略设计、遵循指令和推理能力。与编码环境不同,游戏环境中的任务不要求对编码具备专业知识,但更需要对常识和世界知识的综合把握。这些任务挑战 LLMs 在常识推理和策略制定方面的能力。
网络环境:网络环境是人们与现实世界互动的主要界面,因此在复杂的网络环境中评估智能体的行为对其发展至关重要。在这里,报告使用两个现有的网络浏览数据集,对 LLMs 进行实际评估。这些环境旨在挑战 LLMs 在网络界面操作和信息检索方面的能力。
评测方法 & 流程
● 评测方式:模型和预先设定好的环境进行多轮交互以完成各个特定的任务,情景猜谜子类会使用 GPT-3.5-Turbo 对最终答案进行评分,其余子类的评分方式根据确定的规则对模型完成任务的情况进行打分。
● 评测流程:模型与模拟环境进行交互,之后对模型给出的结果采用规则评分或 GPT-3.5-Turbo 评分。
● 打分规则:由于不同子任务的分数分布不同,直接按平均分计算总分受极值的影响较为严重,因此需要对各子任务的分数进行归一化处理。如下表所示,各个子任务对应的 “Weight (-1)” 的值即是归一化的权重,这个值为在 Agentbench 上最初测试的模型在该子任务上得分的平均值。计算总分时将各个子任务的分数除以 Weight (-1) 后求平均值即可。根据该计算方式,具有平均能力的模型最终得到的总分应为 1。
SR:成功率
#Avg.Turn:解决单一问题所需的平均交互回合数
#Dev、#Test:开发集和测试集单个模型的预期总交互轮数
Weight⁻¹:各单项分在计算总分的时候的权重的倒数
整体表现:
在作为智能体能力评测中,国内模型整体明显落后于国际一流模型;Claude-3 和 GPT-4 系列模型占据了前三甲,GLM-4 在国内模型中表现最好,但与榜首的 Claude-3 仍有较大差距;国内外大模型在本能力下均表现欠佳,主要原因是智能体对模型要求远高于其他任务,现有的绝大部分模型还不具有很强的智能体能力。
分类表现:
除网上购物被国内模型 GLM-4 拿到头名外,其他分类下,榜首均被 Claude-3 和 GPT-4 系列模型占据,体现出相对强大的作为智能体能力,国内模型仍需不断提升。
● 具身智能(Alfworld)前三甲均被 Claude-3 和 GPT-4 系列模型包揽,和国内模型差距最大。
● 在数据库(DB)和知识图谱(KG)两个维度下,国内模型 GLM-4 均进入 top3,但是与前两名仍有一定差距。
PART/5 安全评测
SafetyBench 是首个全面的通过单选题的方式评估大型语言模型安全性的测试基准。包含攻击冒犯、偏见歧视、身体健康、心理健康、违法活动、伦理道德、隐私财产等。
评测方法 & 流程
● 评测方式:每个维度收集上千个多项选择题,通过模型的选择测试对各个安全维度的理解和掌握能力进行考察。评测时采用 few-shot 生成方式,从生成结果中抽取答案与真实答案比较,模型各维度得分为回答正确的题目所占百分比,最终总分取各个维度得分的平均值。针对拒答现象,将分别计算拒答分数和非拒答分数,前者将拒答题目视为回答错误,后者将拒答题目排除出题库。
● 评测流程:从模型针对指定问题 few-shot 的生成结果中提取答案,与真实答案比较。
整体表现:
在安全能力评测中,国内模型文心一言 4.0 表现亮眼,力压国际一流模型 GPT-4 系列模型和 Claude-3 拿下最高分(89.1 分),在国内其他模型中,GLM-4 和 Claude-3 同分,并列第四。
分类表现:
在违法活动、身体健康、攻击冒犯、心理健康、隐私财产这五个分类下,各模型各有胜负,但是在伦理道德和偏见歧视上,各个模型分差较大,并保持了和总分较为一致的偏序关系。
● 伦理道德:文心一言 4.0 力压 Claude-3 位列第一,国内大模型 GLM-4 同样表现亮眼,超过 GPT-4 Turbo 位列前三甲。
● 偏见歧视:文心一言 4.0 继续排名榜首,领先 GPT-4 系列模型,GLM-4 紧随其后,同为第一梯队模型。
# 5亿个token之后,得出关于GPT的七条宝贵经验
ChatGPT 正确的使用姿势。
自 ChatGPT 问世以来,OpenAI 一直被认为是全球生成式大模型的领导者。2023 年 3 月,OpenAI 官方宣布,开发者可以通过 API 将 ChatGPT 和 Whisper 模型集成到他们的应用程序和产品中。在 GPT-4 发布的同时 OpenAI 也开放了其 API。
一年过去了,OpenAI 的大模型使用体验究竟如何,行业内的开发者怎么评价?
最近,初创公司 Truss 的 CTO Ken Kantzer 发布了一篇题为《Lessons after a half-billion GPT tokens》的博客,阐述了在使用 OpenAI 的模型(85% GPT-4、15% GPT-3.5)处理完 5 亿个 token 之后,总结出的七条宝贵经验。
经验 1:prompt,少即是多
我们发现,如果 prompt 中的信息已经是常识,那么该 prompt 不会帮助模型产生更好的结果。GPT 并不愚蠢,如果您过度指定,它实际上会变得混乱。
这与编码不同,编码中的一切都必须是明确的。
举一个让我们感到困扰的例子:
pipeline 的一部分读取一些文本块,并要求 GPT 将其分类为与美国 50 个州之一相关。这不是一项艰巨的任务,可以使用字符串 / 正则表达式,但有足够多奇怪的极端情况,因此需要更长的时间。所以我们的第一次尝试大致是这样的:
Here's a block of text. One field should be "locality_id", and it should be the ID of one of the 50 states, or federal, using this list:
[{"locality: "Alabama", "locality_id": 1}, {"locality: "Alaska", "locality_id": 2} ... ]
这有时会起作用(约超过 98% 的情况),但失败的情况足以让我们不得不进行更深入的挖掘。
在调查时,我们注意到字段「名称」始终返回州的全名,尽管我们没有明确要求它这样做。
因此,我们改用对名称进行简单的字符串搜索来查找状态,然后模型就一直运行良好。
总而言之,GPT 显然知道 50 个州。当 prompt 更加模糊时,GPT 的质量和泛化能力都可以提高,这太疯狂了 —— 这是高阶思维的典型标志。
经验 2:不需要 langchain
你只需要 chat API,不需要 langchain,甚至可能不需要 OpenAI 去年在其 API 中发布的任何其他内容。
Langchain 是过早抽象的完美例子。我们开始认为我们必须使用它。但相反,数百万个 token 之后,我们可能在生产中使用了 3-4 个非常多样化的 LLM 函数,而我们的 openai_service 文件中仍然只有一个 40 行的函数:
def extract_json(prompt, variable_length_input, number_retries)
我们使用的唯一 API 是 chat API。我们不需要 JSON 模式、函数调用等等(尽管我们做了所有这些),我们甚至不使用系统 prompt。gpt-4-turbo 发布时,我们更新了代码库中的一个字符串。
这就是强大的广义模型的美妙之处 —— 少即是多。
该函数中的 40 行代码大部分都是围绕 OpenAI API 被关闭的 500s/socket 的错误处理。
我们内置了一些自动截断功能,因此不必担心上下文长度限制,我们有自己专有的 token 长度估计器。
if s.length > model_context_size * 3# truncate it!
end
在存在大量句点或数字的极端情况下(token ratio < 3 characters /token),这种方法会失败。所以还有另一个专有的 try/catch 重试逻辑:
if response_error_code == "context_length_exceeded"s.truncate(model_context_size * 3 / 1.3)
我们已经依靠上述方法取得了很大进展,并且该方法足够灵活,可以满足我们的需求。
经验 3:通过流式 API 改善延迟并向用户显示变速输入的单词是 ChatGPT 一项重大的用户体验创新
我们曾经认为这只是一个噱头,但实际上用户对「变速输入字符」的反应非常积极 —— 这感觉就像是人工智能的鼠标 / 光标用户体验时刻。
经验 4:GPT 不擅长产生零假设
「如果找不到任何内容,则返回空输出」—— 这可能是我们遇到的最容易出错的 prompting 语言。在此情况下,GPT 不仅会经常出现幻觉而不返回任何内容,还会导致「缺乏信心」,返回空白的次数比应有的要多。
我们大多数的 prompt 都是以下形式:
“Here’s a block of text that’s making a statement about a company, I want you to output JSON that extracts these companies. If there’s nothing relevant, return a blank. Here’s the text: [block of text]”
有一段时间,我们会遇到 bug,[文本块] 可能为空,幻觉不时出现。顺便说一句,GPT 很喜欢幻想面包店,这里有一些很棒的面包店:
- 阳光面包店
- 金粮面包店
- 极乐面包店
幸运的是,解决方案是修复该 bug,并在没有文本的情况下根本不向其发送 prompt。
经验 5:「上下文窗口」命名不当
「上下文窗口」只会因输入而变大,而不会因输出而变大。
一个鲜为人知的事实是,GPT-4 的输入窗口可能有 128k token,但输出窗口却只有区区 4k!
我们经常要求 GPT 返回 JSON 对象的列表 —— 一个 json 任务的数组列表,其中每个任务都有一个名称和一个标签,而 GPT 无法返回超过 10 项。
我们最初认为这是因为上下文窗口大小是 4k,但我们发现 10 个项目,可能只有 700-800 个 token,GPT 就会停止。
经验 6:向量数据库和 RAG / 嵌入对我们普通人来说几乎毫无用处
我认为矢量数据库 / RAG 确实是用于搜索的,以下是一些原因:
1. 相关性没有界限。有一些解决方案,你可以创建自己的相关性截止启发式,但它们并不可靠。在我看来,这确实「杀死了 RAG」—— 你总是冒着用不相关的结果危害检索的风险;或者过于保守,错过重要的结果。
2. 为什么要将向量放入专门的专有数据库中,远离所有其他数据?除非你处理的是 google/bing 规模的工作,否则上下文的丢失绝对不值得进行权衡。
3. 除非你正在进行非常开放的搜索(例如整个互联网),否则用户通常不喜欢返回他们没有直接输入的内容的语义搜索。
在我看来(未经验证),对于大多数搜索案例,LLM 的更好用法是使用正常的完成 prompt 将用户的搜索转换为分面搜索(faceted-search),甚至是更复杂的查询。但这根本不是 RAG。
经验 7:幻觉基本上不会发生
我们的每个用例本质上都是「这是一段文本,从中提取一些内容」。通常,如果要求 GPT 提供一段文本中提到的公司名称,它不会为你提供「随机公司」(除非文本中没有公司,即零假设问题)。
类似地,GPT 并不会真正产生幻觉代码。如果用例完全、详细,那么 GPT 实际上非常可靠。
原文链接:
https://kenkantzer.com/lessons-after-a-half-billion-gpt-tokens/