w~大模型~合集6

我自己的原文哦~      https://blog.51cto.com/whaosoft/12286795

# 深度模型融合(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 和网页两种调用模式中得分较高的一种进行评测。

根据评测结果,报告得出以下几个主要结论:

● 整体来说,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/​

# LLaMA-Adapter

LLaMA-Adapter,现在已经完全解锁了。通用多模态工具,微调7B模型只用单GPU

作为一个通用的多模态基础模型,它集成了图像、音频、文本、视频和3D点云等各种输入,同时还能提供图像、文本和检测的输出。

相比于之前已经推出的LLaMA-Adapter,这次的升级版研究人员将它命名为LLaMA-adapter V2。

论文:https://arxiv.org/abs/2304.15010

这是升级之后的多模态和双语功能示意图:

它是唯一可以结合多种模态的模型,例如,从3D点云和背景音频生成真实的图像。

而且,它还支持双语功能,能接收和生成多种语言的文本。

它还能和LLaMA / ImageBind,Falcon,LangChain等模型整合。

在8个A100 GPU上,仅用15个小时就训练出了LLaMA-Adapter,仅仅引入了650M的参数。

真·多模态

接下来,让我们体验下LLaMA-Adapte的魔力。

无论是文本、图像、视频、音频还是3D点云,这些真实世界的输入都可以通过它转换为高质量的文本。

输入一个三角钢琴的3D点云,它就会详细描述出这个三维物体的细节。

显然,英文的回答会比中文的回答详细得多。

3D点云输入令人非常印象深刻,因为它提供了比照片更准确的信息,并且可以集成到摄影测量应用中。

输入一段街道上车辆正在行驶的语音,问它当事人会是什么心情,它就猜测出,现在当事人可能比较愤怒和不满。

输入一段LOL的游戏视频,它就能识别出游戏的名字,还能答出里面的人物。

LLaMA-Adepter不仅仅是可以创建文本,还能够生成检测结果,这就为我们理解世界和与世界互动带来新的维度。

把检测GPT-4的这幅图输给它,它也很顺利地描述出了这幅图的怪异之处在哪里。

从3D点云或音频中,LlaMA-Adapter可以唤起一个生动而令人惊叹的视觉世界。它不仅仅是数据处理,它是从原始输入 创造艺术。

输入一阵海浪声,它会给你生成对应语音的图片。

根据3D点云,它可以生成很生动的图片。

LLaMA-Adapter会模拟人类互动,听声音、看视频,还能生成文本,从而与世界建立更深层次的联系,实现AI通信的飞跃。

输入一个视频,它就会告诉你,图中人物正在做瑜伽。

更精彩的是,只要输入3D点云和背景音频,LLaMA-Adapter就可以重建现实世界的镜像。这是一种沉浸式体验的突破!

LLaMA-Adapter由LangChainAI提供支持,不仅可以与人类通信,还可以释放AI交互的无限潜力。

LLaMA-Adapter,这是一种轻量级适配方法,用于微调指令遵循和多模态LLaMA模型。

下图是LLaMA-Adapter和Alpaca的参数对比。

通过将适配器插入LLaMA的Transformer,研究者只引入了1.2M的可学习参数,并在1小时内将LLaMA转换为指令跟随模型。

为了在早期阶段稳定训练,研究者提出了一种具有zero gating机制的新型Zero-init注意力机制,以自适应地合并教学信号。

经过微调后,LLaMA-Adapter可以生成高质量的指令跟随句子,可与完全微调的Alpaca和Alpaca-Lora相媲美。

此方法可以简单地扩展到多模态输入指令。用于ScienceQA的图像条件LLaMA-Adapter的推理框架如下,其他模态(如音频和视频)也共享该框架。

LLaMA-Adapter V2让多模态和语言能力进一步提升

针对LLaMA-Adapter V2的重要改进,知友「星空」做了一个比较清晰的总结:

1. 通过线性层的偏差调整来增强语言模型的性能。

2. 使用不相交参数进行联合训练来平衡视觉指令调整。

3. 使用视觉知识的早期融合增强文本和图像的理解能力。

4. 通过与专家集成来提高了多模态的推理能力。

线性层的偏差调整

LLaMA-Adapter在冻结的LLaMA模型上采用可学习的适应提示和零初始化注意机制,从而可以有效地整合新知识。

但是,参数更新受限于自适应提示和门控因子,没有修改LLMs的内部参数,这限制了它进行深度微调的能力。

鉴于此,研究人员提出了一种偏差调整策略,除了适应提示和门控因素之外,进一步将指令提示融合到LLaMa中。

具体来说,为了自适应地处理指令跟随数据的任务,研究人员首先解冻LLaMA 中的所有规范化层。

对于Transformer中的每个线性层,研究人员添加一个偏差和一个比例因子作为两个可学习的参数。

研究人员将某个线性层的输入和预训练权重分别表示为 x 和 W。在LLaMA-Adapter V2中,研究人员使用偏置 b 和尺度 s 修改线性层为

与零初始化注意力类似,研究人员分别用零和一初始化偏差和比例因子,以稳定早期阶段的训练过程。

通过结合偏置调整策略和高质量指令数据,LLaMA-Adapter V2获得了卓越的指令跟随能力。

值得注意的是,新增参数的数量仅占整个LLaMA的 0.04%(∼5M),表明 LLaMA-Adapter V2仍然是一种参数高效的方法。

使用不相交参数进行联合训练

研究人员目标是同时赋予LLaMA-Adapter V2生成长语言响应和多模态理解的能力。

下图所示,研究人员提出了LLaMA-Adapter V2的联合训练范例,以利用图像文本字幕数据和纯语言指令示例。

由于500K图像文本对和50K指令数据之间的数据量差异,直接将它们组合起来进行优化会严重损害LLaMA-Adapter的指令跟随能力。

因此,研究人员的联合训练策略优化了LLaMA-Adapter V2中不相交的参数组,分别用于图像文本对齐和指令跟随。

具体来说,只有视觉投影层和带门控的早期零初始化注意力针对图文字幕数据进行训练,而后期适应提示与零门控、未冻结范数、新添加的偏差和比例因子(或可选的低秩适应)被用于从指令跟随数据学习。

不相交的参数优化很好地解决了图文理解和指令跟随之间的干扰问题,这有助于 LLaMA-Adapter V2的视觉指令跟随能力。

视觉知识的早期融合

为了避免视觉和语言微调之间的干扰,研究人员提出了一种简单的早期融合策略,以防止输入视觉提示和适应提示之间的直接交互。

在LLaMA-Adapter中,输入的视觉提示由具有可学习视觉投影层的冻结视觉编码器顺序编码,然后在每个插入层添加到自适应提示。

在LLaMA-Adapter V2中,研究人员将编码的视觉标记和自适应提示注入不同的Transformer层,而不将它们融合在一起,如下图所示。

对于数据集共享的自适应提示,研究人员跟随LLaMA-Adapter,将它们插入到最后L层(比如,L=30)。

对于输入的视觉提示,研究人员直接将它们与单词标记连接起来,这是具有零初始化注意力的Transformer层,而不是将它们添加到自适应提示中。

与提出的联合训练一起,这种简单的视觉标记早期融合策略可以有效地解决两类微调目标之间的冲突。

这样就使得参数高效的LLaMA-Adapter V2具有良好的多模态推理能力。

与专家集成

最近的视觉指令模型,如MiniGPT4和LLaMA需要大规模的图像文本训练来连接视觉模型和LLM。

相比之下,研究人员的LLaMA-Adapter V2对更小规模的常见图像字幕数据进行了微调,使其数据效率更高。

然而,研究人员的方法的图像理解能力相对较弱,导致偶尔出现不准确或无关的响应。

研究人员建议集成字幕、OCR和搜索引擎等专家系统,以补充LLaMA-Adapter V2额外的视觉推理能力,而不是收集更多的图像文本数据或采用更强大的多模态模块。

如下图所示,研究人员利用字幕、检测和OCR等专家系统来增强LLaMA-Adapter V2的视觉指令跟随能力。

小编立马上手试了一波,输入这幅图。

Prompt是,可以向我介绍一下这个电脑游戏吗?

它就会在输出中告诉你,这是“塞尔达传说:旷野之息”,并为你详细介绍游戏内容。

针对双语表现比较好的模型Bilingual (CN / EN) ImageBind-LLM,我们先测了一个比较简单的问题,找了一幅梵高的自画像来给它看。

中文的回答内容上没有问题,但是表达上最后一句话似乎没有说完就断了,类似的情况在后面的测试里还反复出现了。 

英文的回复内容和表达上都没有问题。

但是如果问题稍微难一点,小编实测后发现,它的英文能力很强,但中文的理解力明显就不是很行。

测狗狗币的时候,它就闹笑话了。

没有看出图片的精髓,还“指狗为猫”。

英文生产的答案明显在表达上好一些,但是还是没有识别出狗狗币。

应该是它识别的时候忽略了图中最关键的那一圈文字信息。

在视频的表现中我们找了一段Dota2 TI8的名局片段,用中文问它,他的回答就完全是不懂装懂。

但是同样的游戏录像,用英文提问,回答得就比较令人满意。

游戏识别对了,而且介绍的内容也都很靠谱。

我们再测了一下声音,找了一首霉霉的歌放进去。

他能识别出人声声音的音调,但是听不出歌曲。

英文的回复直接猜了一个歌手,但是没猜对。

网友反应

前威斯康星大学教授第一时间发推说自己上手用LLaMA-Adapter微调了一个40B Falcon的模型。

在这条微博下面他回复了大家提出的相关问题,对LLaMA-Adapter的评价非常高。

他说如果不用LLaMA-Adapter微调7B的模型,至少需要8个A100GPU,自己用了LLaMA-Adapter只用了一块GPU,门槛大大降低!

 另外一位网友询问和Lora/qlora/full相比,推理质量如何,他回答说自己正在体验,进一步的信息稍后带来。

参考资料:

​https://twitter.com/lupantech/status/1668387311011401728​

# MeshGPT

在计算机图形学中,「三角形网格」是 3D 几何物体的主要表现形式,也是游戏、电影和 VR 界面中主要使用的 3D 资产表示方法。业界通常基于三角形网格来模拟复杂物体的表面,如建筑、车辆、动物,常见的几何变换、几何检测、渲染着色等动作,也需要基于三角形网格进行。

连续「预测下一个 token」能生成句子,同理,连续「预测下一个三角形网格」也能生成 3D 模型。Transformer变革3D建模,MeshGPT生成效果惊动专业建模师,网友:革命性idea

与点云或体素等其他 3D 形状表示法相比,三角形网格提供了更连贯的表面表示法:更可控、更易操作、更紧凑,可直接用于现代渲染流水线,以更少的基元获得更高的视觉质量。

此前,已有研究者尝试过使用体素、点云和神经场等表示方法生成 3D 模型,这些表示也需要通过后处理转换成网格以在下游应用中使用,例如使用 Marching Cubes 算法进行 iso-surfacing 处理。

遗憾的是,这样做的结果是网格密度过高、网格划分过细,经常出现过度平滑和等值曲面化带来的凹凸不平的错误,如下图所示:

相比之下,3D 建模专业人员建模的 3D 网格在表示上更加紧凑,同时以更少的三角形保持了清晰的细节。

一直以来,很多研究者都希望解决自动生成三角形网格的任务,以进一步简化制作 3D 资产的流程。

在最近的一篇论文中,研究者提出了新的解决方案:MeshGPT,将网格表示直接生成为一组三角形。

论文链接:https://nihalsid.github.io/mesh-gpt/static/MeshGPT.pdf

受语言生成模型 Transformer 的启发,他们采用了一种直接序列生成方法,将三角形网格合成为三角形序列。

按照文本生成的范式,研究者首先学习了三角形词汇,三角形被编码为潜在量化嵌入。为了鼓励学习到的三角形嵌入保持局部几何和拓扑特征,研究者采用了图卷积编码器。然后,这些三角形嵌入由 ResNet 解码器解码,该解码器将其处理表示三角形的 token 序列,生成三角形的顶点坐标。最终,研究者在所学词汇的基础上训练基于 GPT 的架构,从而自动生成代表网格的三角形序列,并获得了边缘清晰、高保真度的优势。

在 ShapeNet 数据集上进行的多个类别的实验表明,与现有技术相比,MeshGPT 显著提高了生成 3D 网格的质量,形状覆盖率平均提高了 9%,FID 分数提高了 30 个点。

在社交媒体平台上,MeshGPT 也引发了热议:

有人说:「这才是真正革命性的 idea。」

一位网友指出,该方法的亮点在于克服了其他 3D 建模方法的最大障碍,即编辑能力。

有人大胆预测,或许每一个自上世纪 90 年代以来尚未解决的难题,都可以从 Transformer 中得到启发:

也有从事 3D / 电影制作相关行业的用户对自己的职业生涯表示担忧:

不过,也有人指出,从论文给出的生成示例来看,这一方法还未达到大规模落地的阶段,一位专业建模人员完全可以在 5 分钟内制作出这些网格。

这位评论者表示,下一步可能是由 LLM 控制 3D 种子的生成,并将图像模型添加到架构的自回归部分。走到这一步后,游戏等场景的 3D 资产制作才能实现大规模的自动化。

接下来,就让我们看看 MeshGPT 这篇论文的研究细节。

方法概述

受大语言模型进步的启发,研究者开发了一种基于序列的方法,将三角形网格作为三角形序列进行自回归生成。这种方法能生成干净、连贯和紧凑的网格,具有边缘锐利和高保真的特点。

研究者首先从大量的 3D 物体网格中学习几何词汇的嵌入,从而能够对三角形进行编码和解码。然后,根据学习到的嵌入词库,以自回归下索引预测的方式训练用于网格生成的 Transformer。

为了学习三角形词汇,研究者采用了图形卷积编码器,对网格的三角形及其邻域进行操作,以提取丰富的几何特征,捕捉 3D 形状的复杂细节。这些特征通过残差量化被量化为 codebook 中的 Embedding,从而有效减少了网格表示的序列长度。这些内嵌信息在排序后,在重建损失的指导下,由一维 ResNet 进行解码。这一阶段为 Transformer 的后续训练奠定了基础。

然后,研究者利用这些量化的几何嵌入,训练出一个 GPT 类型的纯解码器 transformer。给定从网格三角形中提取的几何嵌入序列,训练 transformer 来预测序列中下一个嵌入的 codebook 索引。

训练完成后,transformer 可以自回归采样,以预测嵌入序列,然后对这些嵌入进行解码,生成新颖多样的网格结构,显示出与人类绘制的网格类似的高效、不规则三角形。

MeshGPT 采用图卷积编码器处理网格面,利用几何邻域信息捕捉表征 3D 形状复杂细节的强特征,然后利用残差量化方法将这些特征量化成 codebook 嵌入。与简单的向量量化相比,这种方法能确保更好的重建质量。在重建损失的指导下,MeshGPT 通过 ResNet 对量化后的嵌入进行排序和解码。

该研究使用 Transformer 从预先学习的 codebook 词汇中生成网格序列作为 token 索引。在训练过程中,图形编码器会从网格面提取特征,并将其量化为一组面嵌入。这些嵌入会被扁平化,用开始和结束 token 进行标记,然后送入上述 GPT 类型的 transformer。该解码器通过交叉熵损失进行优化,预测每个嵌入的后续 codebook 索引。

实验结果

该研究将 MeshGPT 与常见的网格生成方法进行了比较实验,包括:

  • Polygen,通过首先生成顶点,然后生成以顶点为条件的面来生成多边形网格;
  • BSPNet,通过凸分解来表征网格;
  • AtlasNet,将 3D 网格表征为多个 2D 平面的变形。

此外,该研究还将 MeshGPT 与基于神经场的 SOTA 方法 GET3D 进行了比较。

如图 6、图 7 和表 1 所示,在全部的 4 个类别中,MeshGPT 都优于基线方法。MeshGPT 可以生成尖锐、紧凑的网格,并具有较精细的几何细节。

具体来说,与 Polygen 相比,MeshGPT 能生成具有更复杂细节的形状,并且 Polygen 在推理过程中更容易积累错误;AtlasNet 经常出现折叠瑕疵(folding artifact),导致多样性和形状质量较低;BSPNet 使用平面的 BSP 树往往会产生具有不寻常三角测量模式的块状形状;GET3D 可生成良好的高层次形状结构,但三角形过多,且平面不完美。

如表 2 所示,该研究还让用户对 MeshGPT 生成网格的质量进行了评估,在形状和三角测量质量方面,MeshGPT 明显优于 AtlasNet、Polygen 和 BSPNet。与 GET3D 相比,大多数用户更喜欢 MeshGPT 生成的形状质量(68%)和三角测量质量(73%)。

形状新颖性。如下图 8 所示,MeshGPT 能生成超出训练数据集的新奇形状,确保模型不仅仅是检索现有形状。

形状补全。如下图 9 所示,MeshGPT 还可以基于给定的局部形状推断出多种可能的补全,生成多种形状假设。

# BlueLM

大语言模型,vivo 也做到了几个「业内第一」,发布蓝心大模型,手机端运行且开源,自研系统亮相

国内头部手机厂商,最近正在集中发布通用大模型和自研操作系统,而 vivo 正在把两者高度融合在一起。

11 月 1 日,vivo 在 2023 开发者大会上正式发布了自研 AI 大模型「蓝心 BlueLM」和全平台自研操作系统「蓝河 BlueOS」。与此同时,最新一代手机系统 OriginOS 4 也进行了正式亮相。

「经过多年的准备,今天 vivo 发布自研大模型矩阵,其中也包含手机行业内的首个开源大模型。」vivo 高级副总裁、首席技术官施玉坚说道。「我们的自研大模型可以把新的用户体验带到每个用户手中,它可以完成各种你想做的事情。」

昨天 vivo 正式发布的自研蓝心大模型 BlueLM 经历了六年研究,覆盖了十亿、百亿、千亿三个参数量级,全面覆盖了目前应用的核心场景。

在这其中,10 亿量级模型是主要面向端侧场景打造的专业文本大模型,在手机上进行推理的速度可达 64 字 / 秒,具备本地化的文本总结、摘要等能力。70 亿模型是面向手机打造的端云两用模型,具有优秀的语言理解、文本创作能力。

同时,上述两个量级的模型支持高通和联发科(MTK)最新旗舰平台(也就是骁龙 8Gen3 和天玑 9300)的端侧化部署,在保证数据安全的同时,在 token 输出速度、响应时间、内存占用等方面也非常优秀。

除了面向端侧的模型,vivo 在更大体量的模型上也做到了较好的效果。蓝心大模型 70B 是面向云端服务的主力模型,用于角色扮演、知识问答等任务,其综合能力,在 C-Eval、CMMLU、SuperCLUE(10 月)等榜单中均处于中文大模型的第一梯队。另外,vivo 提供的 1300 亿、1750 亿参数大模型将在更为复杂的场景,如逻辑推理、任务编排中为用户带来更专业的体验。

什么样的大模型才能在今天的「百模大战」中脱颖而出?vivo 副总裁、OS 产品副总裁、vivo AI 全球研究院院长周围认为,真正优秀的大模型需要五个特点:

  • 首先是模型规模足够大,支持模态要全,这样才能让人工智能具备人类的很多能力。
  • 其次是算法强,要在基础算法上不断突破,在评测榜单中领先。
  • 第三是安全性,要保证大模型的价值观、道德规范符合要求,同时保证数据和隐私安全。此外还要不断提升模型训练的数据安全,提升抗攻击能力。
  • 第四是自我进化能力,大模型需要不断更新数据以提升能力,适应用户的需求。
  • 最后是开源开放,vivo 希望降低模型应用的门槛和成本,推动整个产业的共同进步。

据介绍,为了构建自有大模型体系,vivo 组建了千人规模的 AI 专家团队,自 2018 年成立人工智能图谱研究院以来,已经积累了 13000T 的多种模态数据以及 2800T 高质量中文文本数据。其工程师不断从多维度入手持续丰富训练数据,强化算法,同时通过信息技术应用创新去解决算力问题并不断提升技术安全能力。

在大会现场,vivo 还表示刚刚在工程上实现了 13B 参数大模型在手机 SoC 上的完整跑通。可以预见,随着移动端算力提升和模型的不断优化,我们很快就会拥有更加强大的移动版通用 AI。

基于开源的大模型和 API 工具,vivo 推出了蓝心大模型开发套件 Bluekit,中小开发者可以直接调用大模型的端侧推理能力,真正实现了大模型的开箱即用。另一方面,对于希望进行微调的开发者,vivo 提供模型参数热插拔机制,通过系统级计算调度,将开发者模型进行组合推理,帮助构建高自由度的定制化模型。

蓝心大模型在 vivo 的生态中已经有了两种应用,首先是类似于 ChatGPT 应用的自然语言对话 APP「蓝心千询」:

和目前我们能看到的很多大模型应用一样,蓝心千询不仅可以与你进行自然对话,搜索整合知识,还可以进行文学创作、图片生成,甚至还能编写程序。

在现场,vivo 着重展示了代码生成的能力。「即使是编写量化框架这样的复杂任务,用蓝心千询来写,你只需要提出需求,大模型 30 秒就能搞定,」周围说道。「它也可以用来写 Python 界面、写算法、写表格、处理数据库。以后写代码,不用动手,开口即可。」

vivo 表示,蓝心千询将登录应用市场,vivo 品牌以外的手机也将可以使用这款 APP。

还有融合在 OriginOS 4 系统里的首款全局智能助理蓝心小 V。在大模型的加持下,这个智能助理拥有行业领先的智慧,它可以通过语音、文字、文件拖拽等方式接收信息进行处理。如果遇到简单的问题,小 V 会以文字或图片进行回复。面对复杂的问题,它还可以通过 SWOT 模型或思维导图的形式输出回答。

比如手机上刚收到一个英文的论文,想让 AI 帮你写个摘要,只需要在小 V 的对话框里写:总结一下刚接收到文件的内容,保存到原子笔记里。

只用几秒钟的时间,你就可以快速地了解论文的主要内容了。

蓝心小 V 还可以帮助你整理复杂内容的逻辑,生成企划,构建日程等等。当然,目前生成式 AI 主打的生成图片、知识问答等能力它也都有。

有了相比以往更强的 AI 算法,vivo 的新一代系统会是什么样子?在开发者大会上,OriginOS 4 正式亮相,新一代系统在在设计、场景应用、AI 能力、系统底层等方面进行了很多升级。

为了解决用户的部分痛点场景,OriginOS 4 带来了全链路解决方案。例如专门针对地下停车场的定位进行优化,新增了停车助手等功能,让用户在停车、寻车、离库等场景下拥有更优的体验。

针对办公场景,OriginOS 4 打造了全链路会议助手,可以在你开在线会议的时候,实时以文字方式进行会议内容速记,并自动添加你截好的图片。任何安装 vivo 办公套件的电脑都可以自动连接手机,互相分享文件,也可以搜索手机中的内容。 

此外,OriginOS 4 还升级了超级省电、AI 离线翻译等实用功能。

在系统性能的优化上,OriginOS 4 的改进包括通过「虚拟显卡」实现更快的应用程序响应。它将应用程序的打开和关闭时间减少了 36%,并将帧速率稳定性提高了 70%。对于多任务算力的分配也有了进一步优化,操作系统会优先分配 CPU 和 GPU 资源处理屏幕上的任务,并阻止「不相关的计算」。

最近,国内头部厂商正在比拼自研系统。vivo 打造的自主研发的全新智慧操作系统 —— 蓝河操作系统 BlueOS 也在昨天首次亮相。

蓝河操作系统从底层引入了蓝心 AI 大模型能力,支持复杂的意图识别和交互方式,既为用户提供了声音、图片、手势等自由交互方式,也为开发者提供了自动编写代码等应用开发新范式。

「BlueOS 可以了解你的需求,自动生成代码,生成专属于你的桌面主题、壁纸和挂件。随着大模型能力的增强,我们都可以在其中进行创作,人人都可以成为软件工程师和 UI 工程师。」周围表示。

vivo 表示,蓝河操作系统没有安卓的虚拟机层,作为一个标准的操作系统,兼容不同的硬件体系结构。通过内核抽象层实现了对不同内核兼容,蓝河是符合 Posix 标准的操作系统,支持 Linux 内核,RTOS 内核。它结合了先进的 AI 大模型,从系统、应用,到工具链进行了全新的设计,会接入蓝心大模型的多模态能力。

蓝河不只是面向手机的系统,它可以运行在 CPU 频率 200MHz,内存 32MB 的可穿戴设备上。第一个搭载此系统的是智能手表 vivo Watch 3,它将在本月面世。

由于是 Linux/RTOS 为底层的自研架构,因此 BlueOS 不兼容安卓应用。目前支付宝、百度地图、喜马拉雅等应用已为蓝河开发了定制版的应用。蓝河生态为开发者提供了蓝河开发套件,包括蓝河 SDK 和蓝河 Studio,为开发者提供了开发套件支持。

另外有趣的是,蓝河操作系统是行业首个系统框架由 Rust 语言编写的操作系统,在根本上解决了内存使用不当引起的安全漏洞问题。

有了包括大模型的 AI 技术、自研操作系统和新一代硬件,vivo 迈出了大模型时代移动交互的重要一步,将实现「1+2+N」的智能系统体验。

在这其中:1 是指 vivo 自研的通用大模型矩阵 —— 蓝心大模型 BlueLM;2 是指系统全局智能辅助应用「蓝心小 V」和以公版 APP 形式推出的自然语言对话机器人「蓝心千询」;N 则是指开发者依托 vivo 70 亿蓝心大模型及其微调框架、大模型开发套件 BlueKit 打造的高效、低成本专属大模型。

正如主 Keynote 所提到的,目前想要在端侧运行大模型,我们需要使用最新一代旗舰级芯片的手机。在昨天开发者大会的展台上,iQOO 12 真机已被提前曝光了。这款手机搭载骁龙 8Gen3,16+16G 内存,还有自研电竞芯片 Q1。

我们期待大模型在新一代移动设备上的表现。

# OpenAgents

1开源版「ChatGPT Plus」来了,能做数据分析、插件调用、自动上网,落地真实世界的智能体

OpenAI ChatGPT Plus 订阅付费功能强大,可以实现高阶「数据分析」(Advanced Data Analysis)、「插件调用」(Plugins)以及「自动网页浏览」(Browse with Bing),能够作为日常生活中的重要生产力工具。可是因为商业原因而选择了闭源,研究者和开发者也只能使用而没有办法在其上面做任何的研究或改进。

基于此,来自香港大学、XLang实验室、Sea AI实验室和Salesforce的研究者联合打造了一款用于真实世界生产力工具的开源智能体框架——OpenAgents,并开源了全栈代码(完整前后端,研究代码),以满足从研究者到开发者再到用户的所有人的需要。

OpenAgents 用基于「大语言模型」(LLMs)的技术和全栈工程代码尝试近似复刻了 ChatGPT Plus 的功能。智能体能执行 Python/SQL 代码,熟练调用工具,也能上网找地图发帖子,一路从研究代码实现到后端前端,让其变成了人人都能用的落地级别应用。OpenAgents 完整披露了他们采用的技术和遇到的困难,完全开源了代码,包含从科研到逻辑代码到前端代码的一切。代码完善、易于拓展,本地直接可以一键部署,配套提供了含有丰富的使用案例的文档,帮助研究者和开发者在模型上搭建自己的智能体和应用。

OpenAgents 总览图,面向用户的网页界面,面向开发者的本地部署,面向研究者的语言智能体。

  • 代码链接:https://github.com/xlang-ai/OpenAgents
  • 论文链接:https://arxiv.org/abs/2310.10634
  • Demo 链接:https://chat.xlang.ai/
  • 文档链接:https://docs.xlang.ai/

与 ChatGPT Plus 的 “一样” 和 “不一样”

左边是 OpenAgents 的实现,右边是 ChatGPT Plus:

先来看看「数据分析」功能。同一个分析股票价格的任务,OpenAgents 和 ChatGPT 都能不错地完成用户对股价和交易的分析要求。不过 OpenAgents 可以自动搜索 Kaggle 数据集并下载,ChatGPT 需要用户从本地上传。

再试试 OpenAI 最早推出的「插件」功能。用户想要画一些八面体,两者都成功调用了 Wolfram 插件画出多种八面体的图片。

最后看看「网页浏览」。用户想要查询 10 月 20 日从中国香港到纽约的机票,OpenAgents 识别用户意图后直接跳转到 Skycanner,像 “真人” 一样一边思考一边在网站中填入信息,最后回到聊天页面总结信息;而 ChatGPT 处于安全考虑保证可控性,和调用插件类似,在云端做网页浏览,将最后搜寻到的信息返回。

由于 OpenAgents 提供了开源的代码,开发者和研究者可以定制,若干行代码适配自己想要的模型,改进、创造自己想要的功能,甚至创造新的 Agent。这对于该方向的进一步开展开发和研究至关重要。

看似简单,「生产力能用」的智能体为什么踩坑这么多?

智能体的开源框架不少,基于大模型的中间件更是层出不穷,为什么搭建一个真正方便可用的智能体并不容易,OpenAgents 在他们论文中与其他智能体框架进行了对比:

对比 OpenAgents 和其他的框架。

从表格中可以看出,「界面」(Interface) 和「配套环境」(Environment) 是 OpenAgents 与众不同的两个因素。现有的开源框架比如 LangChain,AutoGPT 和 BabyAGI 等旨在为开发者提供早期概念验证实现和控制台界面,但在真实世界中却不够鲁棒,这限制了更广泛受众的接入,特别是那些不熟悉编程或控制台的普通用户。而在闭源体系中,OpenAI 在 ChatGPT Plus 中部署了精心设计的产品,尤其是高级数据分析(之前称为代码解释器)、插件和 Bing 浏览等功能,利用进一步训练的模型、业务逻辑代码和培育的软件社区(例如,插件商店)。但是闭源导致它们难以作为开发和研究平台使用,社区无法站在巨人肩膀上探索、评估和改进。在侧重考量这些维度之后,OpenAgents 作为面向真实场景的开源 Agent 框架,为社区提供了一个可与 ChatGPT Plus 一较高下的平台。

在「界面」上,OpenAgents 提供线上的网页 demo (以及配套的开源代码),非程序员背景的普通用户也可轻松与智能体进行交互,而之前的工作通常不提供或者以「控制台指令界面」(CLI) 形式提供交互,极大地提高了智能体的使用门槛。在「配套环境」上,OpenAgents 支持真实世界环境和可控环境,支持超过 200 + 的日常工具调用,支持网页自动浏览。

这些功能侧重和配备使得 OpenAgents 成为对于普通用户最没有门槛的选择;也为研究、开发人员等提供可能是最好的直接面向用户的机会。

作为生产力的 Agent 未来的第一步:「用户」,「开发人员」,「研究人员」都能用的 Agent 平台

为了解决上述问题,OpenAgents 的动机是作为一个开源平台,为使用和部署智能体提供,目前包括三个关键智能体:

  • 用于 Python 和 SQL 的数据智能体;
  • 200 多个工具使用的插件智能体;
  • 自动网络浏览的 Web 智能体。

OpenAgents 相信,为了让大语言模型发挥其全部潜力,它们必须从纯粹的理论或面向开发者的工具转变为为广泛用户群提供的动态、交互式系统。「普通用户」可以通过在线 Web UI 轻松探索智能体功能,无需编码专业知识。此外,OpenAgents 为「开发者」提供完整的业务逻辑和研究代码,以便在本地轻松部署,「研究人员」可以进一步构建语言智能体。最后,OpenAgents 旨在成为一个真实而全面的人类可交互的智能体评估平台:根据真实需求,真实用户与智能体互动以完成其任务,并记录整个用户 - 智能体互动过程和用户反馈以供进一步评估。与现有的基准测试和平台相比,OpenAgents 提供了一个真实环境,智能体可以满足各种真实的用户需求。

面临和克服的挑战

挑战 1: 基于提示来构建真实世界语言模型的弊端

在为真实用户构建基于提示的应用程序时,使用提示中的指令来设定特定要求。这些指令有不同目的,有一些是为了确保大语言模型的输出符合后端逻辑处理的特定格式(以特定键的字典形式输出);有一些是提升输出的美观度(尽可能一条条单独列出项目);有一些是用于防止潜在的攻击(拒绝用户恶意构造的无限循环程序并且执行)。

这些带着约束目的提示来约束语言模型需要开发者研究者反复调试出来一些可以使用的指令,这些指令加在一起通常会是几百个「词元」(token)甚至上千个词元,这些指令作为前缀会被反复输入到模型造成显卡资源的大量消耗;另外一方面,词元越多越依赖 LLM 有很好的性能,所以说这一条技术路线对大语言模型的指令跟踪能力和支持的上下文长度提出了一定的要求。

当前的开源模型在这些方面已经取得了显著的改进,但是在实验中仍然是不足以用来实际使用的,这方向的研究还可以继续。此外,需要更加重视智能体模型的基础开发和研究,以及针对特定领域和要求训练专用的智能体模型。这种方法可能比仅依赖于提示一个通用强大但固定模型更高效,也更可控。

挑战 2: 无法控制的现实因素

实现真实世界的语言智需要面对很多无法控制的现实因素,这些因素包括用户行为、互联网的基础设施和业务逻辑等,它们在过去的研究中并未得到充分建模。这就需要重新评估,甚至推翻许多过去研究中的假设和方法。必须考虑到的事是,调用的 API 所在的服务器可能会崩溃。这种情况需要监控并稳定地完成用户命令,而不是像过去的工具使用研究中所假设的那样。在生成回复的过程中,用户可能会感到不满意,这可能导致语言模型在生成过程中被中断。

此外,像 CAPTCHA 弹出或广告改变网页这样的不可预测事件,可能会在相对稳定的网页结构中引入一定程度的随机性,这在以前的自动浏览网页的工作中未曾考虑过。诸如此类的问题还有很多,比如说在智能体反应和思考的时间内(现在往往需要数秒)就改变的环境,等等。

挑战 3: 来自真实场景的额外指标

具体的研究通常过于强调性能指标,而忽视了现实场景中的基本需求。例如,使用流式(即每生成一个词元都尽快显示给用户)可以让用户能够快速感知系统的反馈,而无需等待长篇大论的文本生成完毕再一起看到。特意设计的提示可以让智能体的回复格式更加美观,这对用户体验有着显著影响。然而,现有的方法并未充分考虑这些影响。导致了尽管在准确性上的性能指标优秀,但在实际应用中,它们可能导致响应时间过长、文本可读性差等等导致用户体验不佳的问题,接下来的研究需要进一步考虑性能和用户体验之间的权衡问题。

挑战 4: 由系统问题引发的评估复杂性

构建直接针对应用程序的智能体可以满足更多用户需求,同时也能揭示更多评估挑战。但基于 LLM 的应用程序构建会带来额外的复杂性,使得难以判断失败案例是来源于 LLM 应用的限制还是逻辑代码的不足。举例说明,如果说一个用户因为没法从界面中直接拖拽上传文件而造成没有完成用户想要的操作而判断智能体能力不行是不合理的。因此,对智能体设计和操作逻辑的系统进行改进,简化智能体流程以及用户使用逻辑,或者构建一个更加完善的设计和实现逻辑,是有前景且必要的。

未来展望

OpenAgents 可以怎么样帮助社区做下一步的研究和开发?在他们的构想中至少有如下几点:

未来工作 1: 搭建更多智能体应用

OpenAgents 打通了一套完整的应用级语言智能体开发流程以及所需要的技术,并且开放了代码。这为其他创新应用与终端用户提供了可能。开发者们可以基于此开发任何自己想要的新应用,比如说多模态对话、语音对话、库级别代码助手等。 

未来工作 2: 工具和组件集成

OpenAgents 致力于探索和解决构建实用级智能体应用的基本需求,为社区提供了一个强大的基础,使得社区可以轻松地通过集成其他组件进行水平扩展。同时,还可以扩展更多的基础模型,比如最近的大型多模态模型,以及适应新的 UI 设计等。

未来工作 3: 人机交互领域研究

开发者和研究者基于 OpenAgents 平台能轻松构建基于大语言模型的新智能体应用程序。OpenAgents 因此能帮助构建应用程序演示,供人机交互(HCI)研究人员深入研究更直观、更用户友好的界面设计。这将提升用户的参与度和满意度。

未来工作 4: 自适应用户界面生成

自动创建用户界面是一个有趣且具有挑战性的领域。这些界面能根据特定标准,如用户的设备、偏好或上下文,进行自我调整或定制。研究人员可以深入研究在基于 OpenAgents 的自适应 UI 中,如何应用大语言模型,以及它们对用户体验的影响。

未来工作 5: 大语言模型在实际应用场景下的评估

为大语言模型建立公正且稳健的评估方法,对于公平评价其能力和性能至关重要。目前,通过使用预先收集的数据和受控环境,对智能体进行基准测试。虽然这些评估非常关键,但它们往往无法全面反映真实世界中的动态挑战。鼓励社区对这些评估指标和平台进行扩展或完善,这将显著推动该领域的发展,并为大语言模型的实际性能和能力提供更准确的评估和洞察。

# MimicGen

千亿级大模型正迅速耗尽世界的高质量数据。对此,英伟达和UT提出了MimicGen系统。从人工合成数据中获得人工智能,将是未来的发展方向。AI智能超越人类终破解!李飞飞高徒新作破圈,5万个合成数据碾压人类示例,备咖啡动作超丝滑

AI巨佬Geoffrey Hinton称,「科技公司们正在未来18个月内,要使用比现在GPT-4多100倍的算力训练新模型」。

更大参数的模型,对算力需求巨大的同时,对数据也提出了更高的要求。

但是,更多的高质量数据该从何来?

英伟达高级科学家Jim Fan表示,「合成数据,将为我们饥渴的模型提供万亿个token」。

作为例证,英伟达与UT的研究人员在最新研究中,提出了一个MimicGen系统,能够大量生成机器人训练数据。

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

具体过程是,通过在模拟环境中,使用数字孪生技术复制真实世界中,人类的操作数据。

仅用了不到200个人类演示,MimicGen实现了在18个任务、多个模拟环境,甚至是现实世界中,自主生成5万个训练数据。

值得一提的是,这项研究所有数据集全部开源。

在Jim Fan看来,合成数据和模拟对AI发展非常重要,可以获得更多训练数据,维持学习算法的进步。它不仅适用于机器人领域,也会应用到其他AI领域。

我们正在迅速耗尽来自网络的高质量的真实token。从人工合成数据中获得人工智能,将是未来的发展方向。

恰恰,MimicGen展示了合成数据和模拟的力量,让「缩放法则」(scaling law)得以延续。

准备咖啡,操作如此丝滑

MimicGen实际表现如何,一起看些演示。

在下图的示例中,MimicGen仅从10个人类演示中,为3种不同的环境分布生成了1000个演示。

下面,将展示MimicGen在跨多个不同任务和环境分布中生成的几个数据集,比如积木堆叠、「穿针引线」、咖啡准备、拼装等等。

对于从未见过的杯子,MimicGen也能够将其收纳到抽屉里。

不同的机械臂,也能灵活自如地操作。

MimicGen在长期复杂的任务中的表现。

另外,MimicGen适用于需要毫米级精度的接触式任务。

准备咖啡的过程很丝滑。

而在其他生成示例中,合成数据都能完成高性能的展示,效果惊人!

MimicGen:生成式数据无限扩展

可以看到,从人类演示中进行模仿学习,已成为训练机器人执行各种操作行为的有效范例。

最为常见的方法是,人类通过不同的控制接口远程操作机器臂,生成执行各种任务的示例,然后用这些数据训练机器人自己完成这些任务。

然鹅,这种方法既费时,又费力。

另外,研究人员提出了另一个问题,在这些数据集中,实际上有多少数据包含了独特的操作技能?

在最新研究中,作者提出了一种新型系统MimicGen,通过对人类演示进行处理,自动生成不同场景下的大规模数据集,进而用于机器人的模仿学习。

具体来说:

- 人类远程操控机器人完成一个任务,生成非常高质量演示数据,但缓慢且昂贵。

- 在高保真的GPU加速的模拟环境中,创建机器人和场景的数字孪生。

- 在模拟环境中移动对象,替换新的物体,甚至改变机械臂,基本上是使用程序生成的方式扩充训练数据。

- 导出成功的场景,提供给神经网络进行训练。这样就获得了一个近乎无限的训练数据流。

总而言之,这项研究的主要贡献在于,展示了MimicGen可以在各种新的场景配置、对象实例和机械臂上生成高质量数据,来通过模仿学习训练出熟练的智能体,这些都是人类演示中没有的。

MimicGen广泛适用于需要不同操作技能的长序列任务和高精确度任务,比如抓放、组装等。

在2个模拟环境和1个物理机械臂上,只用大约200个人类演示就生成了5万个新的演示,涵盖18个任务。

与收集更多人类演示相比,这一方法更加优越。

使用MimicGen生成的合成数据(例如从10个人类演示生成200个演示)与200个人类演示训练出的智能体性能相当。

论文细节

问题设定

模仿学习

研究人员将每一个机器人操纵任务视为一个马尔可夫决策过程(MDP),并旨在学习一个将状态空间S映射到动作空间A的机器人操纵策略。

问题陈述和假设

研究人员的目标是使用一个源数据集D1,该数据集由在任务M上收集的一小组人类演示组成,并用它来生成一个大型的数据集D(用于相同任务或任务变体,其中初始状态分布 D、对象或机器人臂可能发生变化)。

生成新演示的步骤如下:

(1)从研究人员想要生成数据的任务中抽样一个起始状态,

(2)从D1中选择并适应一个演示以生成一个新的机器人轨迹τ',

(3)机器人在当前场景中执行轨迹τ',如果任务成功完成,则将状态和动作的序列添加到生成的数据集D中(具体的每一步请参见方法)。接下来,研究人员概述系统利用的一些假设。

假设 1:增量末端执行器位姿( delta end effector Pose)动作空间。动作空间(action space)A包括用于末端执行器控制器和夹持器开/关命令的增量位姿命令。

这使研究人员能够将演示中的动作视为末端执行器控制器的一系列目标位姿。

假设 2:任务由已知的对象中心子任务序列组成。设 O = {o₁, ..., oₖ} 为任务 M 中的对象集合。

研究方法

研究人员展示了如何使用一个小型的人类演示源数据集来生成新的演示(下图 2 )。

MimicGen首先将源数据集解析为多个段(segment) — 每个段对应于任务中的一个对象中心子任务。

然后,为了在新场景中生成一个演示,MimicGen会为每一个子任务生成并执行一个轨迹(末端执行器控制位姿的序列,sequence of end-effector control poses)。

方法是从源示例中选择一个参考段,根据新场景中对象的位姿进行转换,然后使用末端执行器控制器执行目标位姿的序列。

将源数据集解析为对象中心的段

每个任务都由一系列对象中心的子任务组成 — 研究人员希望将源数据集中的每个轨迹τ解析为多个段 {τᵢ}ₘⁱ=₁,其中每个段τᵢ对应于一个子任务Sᵢ(oₛᵢ)。

为新场景转换源数据段

为了在新场景中生成一个任务演示,MimicGen会为任务中的每一个对象中心子任务生成并执行一个段。如上图2(右)所示,这包括每个子任务的三个关键步骤:

(1)在源数据集中选择一个参考子任务段,

(2)为新的上下文转换子任务段,

(3)在场景中执行该段。

转换源子任务段:研究人员可以将选定的源子任务段 τᵢ 视为末端执行器控制器的目标位姿序列。

执行新段(Executing the new segment)

最后,MimicGen通过在每个时间步取目标位姿,将其转换为增量位姿动作,与源段中相应的抓取器打开/关闭动作配对,并执行新动作来执行新段τ′ᵢ。

以上步骤重复每个子任务,直到执行了最后一个段。

然而,这个过程可能是不完美的——由于控制和手臂运动学问题导致的小轨迹偏差可能导致任务失败。

因此,MimicGen在执行所有段后检查任务成功与否,并仅保留成功的演示。研究人员将成功生成轨迹的数量与总尝试次数之间的比率称为数据生成率。

这个流程只依赖于对象框架和机器人控制器框架——这使得数据生成可以在具有不同初始状态分布、对象(假设它们有规范框架定义)和机器人手臂(假设它们共享末端执行器控制框架的约定)的任务之间进行。

在研究人员的实验中,研究人员为每个机器人操作任务设计了任务变体,其中研究人员改变初始状态分布(D)、任务中的一个对象(O)或机器人手臂(R),并表明 MimicGen 支持这些变体之间的数据收集和模仿学习。

175个人类演示,生成5万个数据集

研究人员将MimicGen应用于多种不同的任务(见下图3)和任务变体,以展示它如何为模仿学习在包括拾取-放置、富有接触性的交互以及关节动作在内的多样化的操控行为生成有用的数据。

实验和结果

研究人员进行了实验,目的是(1)突出显示MimicGen能够生成数据的多样情境;(2)展示MimicGen与收集额外人类示范相比在努力和数据下游政策性能方面都有优势;(3)提供系统不同方面的洞见;(4)证明MimicGen能在真实世界的机器人手臂上工作。

MimicGen的应用

研究人员概述了几个展示MimicGen有用属性的应用场景。

MimicGen数据大幅提升了代理在源任务上的性能。MimicGen一个直接的应用就是收集某个感兴趣任务的小型数据集,然后为该任务生成更多数据。与在小型源数据集上训练的代理相比,使用MimicGen生成的D0数据集训练的代理表现有显著提升。

MimicGen数据能在广泛的初始状态分布下生成高性能的代理。如下图4所示,使用在广泛的初始状态分布(D1、D2)上生成的数据集训练的代理具有很高的性能。

MimicGen能为不同对象生成数据。例如,在「Mug Cleanup(马克杯收纳)」任务的源数据集中只有一个马克杯,但研究人员用MimicGen为一个未见过的马克杯(O1)和一组12个马克杯(O2)生成了演示。

MimicGen可以为多种机器人硬件生成数据。研究人员将MimicGen应用于使用Panda手臂的Square和Threading源数据集,并为Sawyer、IIWA和UR5e生成了跨D0和D1重置分布变体的数据集。

将MimicGen应用于移动操纵。在「Mobile Kitchen(移动厨房)」任务中,MimicGen使得成功率从2.0%提升到46.7%。

MimicGen是模拟器不可知的。研究人员证明MimicGen不仅限于一个模拟框架,通过将其应用于在Isaac Gym之上构建的Factory模拟框架中需要毫米级精度的高精度任务。

MimicGen和人类数据对比

MimicGen可以利用少量人类示例生成大规模数据集:

在18个任务中,只用175个人类示例就生成了超过5万个示例。在Square任务中,只用10人类示例就生成了1000个示例,覆盖不同场景配置。

而且MimicGen生成的数据集可以训练出高性能策略,甚至比人类示例的效果好很多:

在Square任务中,从10人类示例的数据集成功率11.3%,从生成数据集成功率可达90.7%。

在复杂的Coffee Preparation任务中,成功率从12.7%提升到97.3%,在高精度装配任务Gear Assembly中,成功率从14.7%提升到98.7%。

MimicGen生成的数据集与人类数据集性能相当:

在Square任务中,200人类示例成功率为12%,200个生成示例成功率为11.3%,在Three Piece Assembly任务中,200人类示例成功率为14%,200生成示例成功率为13.3%。

在机械臂上的表现上,MimicGen生成的数据的Stack任务从源域0%的成功率提升到了36%,Coffee任务,成功率从源域的0%成功率到目标域14%成功功率。

网友热议

合成数据将主导大部分生成式人工智能行动!

终有一天,人类标注和演示成为过去。

有网友惊呼,这与AGI大差不差了,人类灵巧程度的机器人也会突然能力大爆发。

这正是我之前思考的AI智能超越人类智能,大概率只是时间问题:因为真实世界有限的数据并不是限制,数据可以通过AI合成,之后再投入到模型训练中:Artificial synthetic data ⇒ Training AI ⇒ AI smarter ⇒ Generating more synthetic data ⇒ more into trianing AI model;  Feedback Loop已建立。

有网友表示,「这可以用来生成自动驾驶训练集吗?这样汽车公司就不必仅仅依靠真实世界的数据来训练他们的模型了?」

参考资料:

​https://twitter.com/DrJimFan/status/1717930311869444477​

​https://arxiv.org/abs/2310.17596​

# LLaVA-UHD

GPT-4V 的推出引爆了多模态大模型的研究。GPT-4V 在包括多模态问答、推理、交互在内的多个领域都展现了出色的能力,成为如今最领先的多模态大模型。

然而,近期很多工作发现 GPT-4V 在很多基本能力上却意外的出现短板。例如,在微软一篇长达 166 页的技术报告《The Dawn of LMMs:Preliminary Explorations with GPT-4V (ision)》中,作者发现,对于一个不太复杂的图像中的苹果数量,GPT-4V 竟然怎么数也数不对。

然而,学术界和工业界尚不清楚导致这些问题的底层原因。

这个问题在清华大学、新加坡国立大学和中国科学院大学的一篇题为《LLaVA-UHD: an LMM Perceiving Any Aspect Ratio and High-Resolution Images》的论文中得到了解释。

  • 论文链接:https://arxiv.org/pdf/2403.11703.pdf
  • 项目链接:github.com/thunlp/LLaVA-UHD

其原因在于 GPT-4V 很可能存在:视觉编码漏洞。

该工作对当前最强的商业大模型 GPT-4V 和最受欢迎的开源模型 LLaVA-1.5 进行了实验,揭示了目前多模态大模型中的视觉编码漏洞。

漏洞 1:GPT-4V 将图像进行有重叠的切片后再编码

作者首先设计了一个实验来观察:图像中的位置如何影响 GPT-4V 的计数回答。

具体来说,作者合成了如图 1 (a) 所示的图像,并向 GPT-4V 提问题:“图像中有多少个圆圈?” 同时,通过改变圆圈的位置而保持提问不变,进一步生成了一系列图像变体。

图 1 (b) 中以热图的形式显示了 GPT-4V 对图像中每个位置平均回答的数量,作者发现了一个与图像中目标位置高度相关的有趣模式如图 1(b)所示,具体表现为被 256×256 的正方形网格分割的三种不同模式:

(1) 中央正方形区域展示了最高的响应数量,

(2) 中间边缘区域的响应数量较低,

(3) 角落区域的响应数量最接近于真实值。

在对 GPT-4V 的响应进行数值区分后,作者发现除了正确答案和接近正确答案的情况,还有两种异常答案(8 个圆和 16 个圆),这些异常答案呈现了答案数量翻倍或四倍的错误模式。结合 OpenAI 公开的信息,这一现象的最可能原因是,当图像分辨率无法被 512 整除时,GPT-4V 处理图像的切片之间会出现重叠。如图 1 (e) 所示,两个切片之间的重叠区域导致数量翻倍,而四个切片的交叉重叠区域会使得识别出的数量增加至四倍。

作者设计了另一个实验来观察:图像分辨率如何影响 GPT-4V 的计数回答。

具体来说,作者将图 2 (a) 中的图像按比例缩放至连续递增的分辨率,并询问 GPT-4V 其中圆圈的个数。

图 2 (b) 中展示了 GPT-4V 的回答结果。随着图像分辨率的变化,GPT-4V 的回答显示出显著的相位变化:(1)在第 1 阶段,由于没有图像切片,大多数答案是正确的;(2)在第 2 阶段,答案 12 在响应中占主导地位,可能是由于每个切片中的圆不完整;(3)第 3 阶段显示了 9、12 和 16 的混合答案。请注意,16 可以很好地解释图 1 (e) 中的错误模式。

以上两个实验结果揭示了 GPT-4V 在处理高分辨率图像时存在重叠切片,导致错误响应,启发作者需要进一步研究更合理的图像预处理和编码方式。

漏洞 2:LLaVA-1.5 进行大范围的图像填充(Padding)

LLaVA-1.5 作为出色的开源多模态大模型被学术界广泛关注。

为了处理具有不同长宽比的图像,LLaVA-1.5 在将图像输入视觉编码器之前将其填充为正方形。这种编码方法导致非正方形图像的计算浪费。例如,将 1:4 图像填充为正方形后,有效计算量仅为 25%。

更重要的是,LLaVA-1.5 实际上无法确定填充像素是来自图像预处理还是原始输入图像的实际部分。

为了演示这个问题,作者合成了一系列输入图像,如图 3(右)所示,其中不同长宽比的绿色矩形被灰色(即填充对应的 RGB 值)所包围。给定输入图像,作者提示:“最左 / 最右 / 最上 / 最下区域的颜色是什么?” 从图 3(左)的结果中,作者观察到 LLaVA-1.5 忽略了灰色输入区域(将其视为填充),并置信地回答了中心矩形的颜色。

综合以上 2 个明显的视觉编码漏洞可以知道,多模态模型中的视觉策略必须谨慎设计。常见做法,如填充、形状扭曲调整和重复切片,可能导致计算资源的浪费、模型能力的丧失,甚至容易受到对抗性攻击。

于是,作者提出 LLaVA-UHD,该模型可以对 180 万像素任意长宽比图像进行编码,相比于 LLaVA-1.5 在 9 个主流评测基准实现提升,训练和推理计算开销相比于 LLaVA-1.5 均有显著下降。

LaVA-UHD 包括三个关键部分:一种图像模块化策略,将原始分辨率的图像分成更小的可变大小的切片,以便进行高效和可扩展的编码;一个压缩模块,进一步压缩来自视觉编码器的图像 tokens,一个空间装饰模式,用于为 LLMs 组织片段 tokens。

图像模块化策略中主要包含两个部分:

1. 高分辨率图像划分策略(如图 4 左侧)。目标是确定高分辨率图像的划分方式,使每个切片的分辨率变化最小。给定图像分辨率和和在固定分辨率上预训练的 ViT,首先确定处理图像所需的切片数。然后将切片数因式分解为和几种划分方式。为了选择最合适的划分,作者定义一个评分函数来衡量与 ViT 标准预训练设置的偏差,进而选择最佳的划分方法。

2. 任意宽高比切片编码(如图 4 右侧)。目的是等比例调整图像以适应预训练模型的位置嵌入数量。首先将 ViT 的 1D 位置嵌入转换为 2D 格式,并进行插值以匹配动态切片分辨率,从而获得自适应图像尺寸的视觉编码。实验表明,此方法在保持 ViT 和位置嵌入参数不变的情况下,通过后期微调即可提升性能。此外,还编码一张低分辨率概览图像,有助于提供全局语义信息,增强模型对图像的整体理解。 

LLaVA-UHD 利用压缩模块(Resampler)压缩每张切片的 tokens,实现比 LLaVA-1.5 在 336×336 分辨率图像中更低的计算成本来编码 672×1008 分辨率的图像。由于图像切片在不同图像之间是动态的,因此有必要通过位置修饰符来告知 LLM 图像切片的相对位置。

表 1 报告了主要的实验结果。在性能表现上,LLaVA-UHD 相对于 LLaVA-1.5 取得了显著的改进。通过简单地感知原生高分辨率图像,LLaVA-UHD 在 TextVQA 上实现了 6.4 的准确率提升,在 POPE 上实现了 3.2 的准确率提升。原因在于低分辨率图像中的模糊内容可能会阻止 LMMs 准确识别具有挑战性的细粒度目标和 OCR 字符。在计算效率和可拓展性上,LLaVA-UHD 仅使用 94% 的推理计算即支持任意宽高比的 672×1088 分辨率图像,能够适应更大分辨率的拓展。

为了更直观地展示 LMM 在处理高分辨率图像方面的能力,在图 5 中提供了 LLaVA-UHD 和 LLaVA-1.5 的定性结果。可以看到,LLaVA-UHD 可以正确识别课表上的密集内容,小海报上的文字以及手机上的图标和文字,实现了细粒度的识别和推理。

未来展望

LLaVA-UHD 将图像分辨率限制在最大 672×1008。但是在未来,考虑到其具有潜力的效率和可扩展性,将探索更高分辨率的图像以及更具挑战性的任务,如小目标检测和分割。此外,目前图像片段是独立编码的,只在 LLMs 中进行交互。计划通过改进的视觉编码策略,在图像片段之间建立高效的连接,实现细粒度全局信息交互。

# DeLVM

本文提出了一种只在序列化的视觉数据上面训练,不使用文本数据,且数据高效的大视觉模型。

本文提出了一种只在序列化的视觉数据上面训练,不使用文本数据,且数据高效的大视觉模型,属于大视觉模型的行列。这类模型的特点是训练好之后,无需微调,即可迁移到多种不同的下游任务上面。当前的代表性工作就是大视觉模型 (Large Visual Model, LVM)[1]。LVM 依赖较大的模型尺寸 (通常 3B 以上),以及较大的训练数据 (约 400B tokens)。

本文提出数据高效的大视觉模型 (Data Efficient Large Visual Model, DeLVM),是一种数据高效的自回归的视觉模型。DeLVM 相比于 LVM 的特点是显著减少了对模型尺寸和所需的训练数据的需求,从而为通用视觉模型进步减少了阻碍。

本文工作

  1. 研究了针对 LVM 的数据增强策略,尤其是在跨不同任务的长尾分布场景。证明了与 Re-Sampling 相比,简单的数据增强就能有很不错的效果。
  2. 使用知识蒸馏方法设计更小的 LVM,使得验证集损失明显降低,困惑度降低,精度提升。这说明 KD 能够提升尺寸较小的自回归 LVM 模型的性能,弥合其与大模型之间的差距。

1 数据高效的自回归视觉模型训练

论文名称:Data-efficient Large Vision Models through Sequential Autoregression (Arxiv 2024.02)

论文地址:​http://arxiv.org/pdf/2402.04841.pdf​

代码地址:​http://github.com/ggjy/DeLVM​

1.1 LVM 的相关背景

LVM 的相关背景如下图1所示。受 LLM 自回归训练范式的启发,LVM (Large Vision Model) 的目的是为视觉任务开发类似的大视觉模型。代表性工作 LVM[1]将图片转化成视觉句子 (visual sentences),从而实现对于不同视觉任务的建模。LVM 利用视觉橘子来统一建模原始图片和注释图片,为视觉领域通用模型的设计带来了新的视野。LVM 包含2部分:VQGAN 分词器,将图片转化成离散的 tokens;自回归 Transformer 模型,做序列自回归预测。

VQGAN 包括 Encoder,codebook,Decoder 和 Discriminator。在训练 VQGAN 模型时,Encoder 以图片作为输入并将其映射为一系列特征,继而再映射到 codebook 中的特定离散化向量。解码器根据这些离散化向量来重建原始图像。那么 Encoder 输出的这些离散化 tokens 的序列在使用 scan-line 排序之后,就可以使用自回归模型来建模了。

LVM 在下游任务上的推理过程使用 Visual Prompting。首先,将几个输入输出图像示例连接成视觉句子,作为任务的定义。然后,将新的 query 图像连接在最后,且测试图像也通过 VQGAN Encoder 进行标记。基于这个拼接的整体句子,自回归 Transformer 模型根据输入的序列 tokens 生成输出 tokens。最后,使用 VQGAN Decoder 解码成最终的输出图片。

图1:LVM 的训练和推理过程

1.2 LVM 训练数据的不平衡

训练一个可以执行多种不同下游任务的通用模型,且面对新的下游任务时,只需要给几个例子就能够解决新的这个任务,是计算机视觉领域向前迈进的关键一步。在自然语言处理 (NLP) 领域,通过自回归训练的大语言模型 (LLM),例如 GPT,已经表现出了强大的理解和生成自然语言的能力,尤其是在复杂的环境中。LLM 以语言作为媒介,通过 Prompt 和示例快速适应各种以语言为中心的下游任务。

在计算机视觉领域,不像语言任务那样输入输出的格式比较均匀,视觉任务的格式很丰富,也就为视觉领域通用模型的设计带来了巨大挑战。上面介绍的 LVM 就是一个很经典的例子。但是,LVM 也不是完美无缺的。比如其训练过程需要 1.64B 这么多的数据,导致了LVM训练过程比较复杂。

而且,不同任务的数据集尺寸也会有很大不平衡:一些任务的数据量较大,而另一些任务的数据量则不足。当不同任务的数据分布不均匀时,模型的整体性能会大大受损。比如,segmentation benchmark SA-1B[2]包含 11M 图片,相比于 keypoint detection benchmark COCO[3]的仅仅 0.2M 数据就会少很多。如果使用这两个数据集的组合来训练模型,那最后得到的模型就会没法做 keypoint detection 任务,因为 segmentation 的数据量太多了。

1.3 使用数据增强策略训练 LVM

LLM 的训练过程一般来讲只训练 1 Epoch 以防止对数据过拟合。但是 NLP 领域的大规模语料库很容易获得,CV 领域却不是这样。因此,作者探索了数据增强方法训练 LVM。

单任务模式

作者首先使用了一个包含 300M 参数的 causal LLaMA 模型来进行自回归建模。对于 VQGAN tokenizer,作者使用的是 Muse[4]的实现,它将每张图像转换为 256 个离散 tokens。VQGAN 的 codebook 大小为 8192,codebook 的 code 的维度是64。为了将 code 的维度与 Transformer 模型的维度对齐,作者在这两个模块之间插入一个可学习的线性层。

1 SA-1B 分割实验 (数据量充足)

对于数据量充足的 SA-1B[2]的各种子集,从 1% 到 10%。所有模型的 training steps 都是 12K。评测的指标是 SA-1B 的保留子集 (数据集的 1%) 的交叉熵损失和困惑度。

如下图2所示的前两个图展示了数据规模对于模型性能的影响。当在训练期间引入更多新数据之后,模型的性能显著提高。比如当使用数据从 1% 增加到 10% (0.34B tokens 增加到 3.43B tokens) 时,验证集损失减少 0.19,困惑度降低 22.4。也就是说,在分割任务中,增加训练数据量可以提升模型的性能。

图2:数据增强与引入新数据产生的效果类似。在 SA-1B 的子集和固定 12K training steps 的设置下训练了 LLAMA-300M 模型,数据集为 SA-1B 和 augmented COCO-Pose 数据集。在分割任务中,增加训练数据量可以提升模型的性能。在人体姿态估计任务中,对数据集做数据增强可以起到类似效果

2 COCO-Pose 人体姿态估计实验 (数据量不足)

对于数据量不足的 COCO-Pose 数据集而言,做人体姿态估计实验。这就需要对数据量进行扩张。作者使用数据增强技术来增强现有数据集。具体来说,对于数据集中的每个样本,作者都使用随机裁剪 (Random Crop) 和随机翻转 (Random Flip) 来生成几个增强版本。这些增强的样本由 VQGAN 模型进行 tokenization,并与原始数据集一起训练。数据增强的强度从 10 到 100 都有测评。

如下图2所示的后两个图展示了数据增强对于模型性能的影响。在人体姿态估计任务中,对数据集做数据增强也有助于提高模型的性能。随着数据增强程度的增加,验证集损失下降,困惑度减少。这个结果说明数据增强具有与引入新训练数据相似的效应,为有限数据下训练 LVM 模型提供了新的思路。

多任务模式

在实际场景中,我们的目标通常是训练一个通才 LVM 模型,能够处理多种任务,且无需微调其参数。但是,数据的不平衡为这个过程带来了挑战。有些任务有足够多数据,但是有些任务数据量有限。如果直接简单地把所有数据混合起来训练模型,就会影响整体性能。

作者探索的任务是图像分割,人体姿态估计和图像去雨。使用的数据集分别是 SA-1B (整体的10%),全部的 COCO-Pose 数据集,全部的 Rain13K[5]数据集。模型在训练过程中总共训练 35K iterations。为了评估模型的性能,作者使用 SA-1B 的保留子集以及 MPII[6]数据集,和 Test2800[7]数据集。

实验结果如下图3所示。作者在涉及3个任务的混合数据集上训练 LLaMA-300M,并比较了处理不平衡训练数据的3种实验设置。可以发现,与直接使用不平衡训练数据来训练相比,通过 Re-Sampling 减轻长尾分布的影响来平衡数据分布的做法会导致较差结果,尤其是在人体姿态估计和图像去雨任务里面。相反,使用数据增强结果较好,也是在人体姿态估计和图像去雨任务比较明显。值得注意的是,当使用不平衡数据时,在图像分割任务上产生了最好的结果,这也可能是因为这个任务训练数据最多的原因。

图3:通过数据增强在跨多任务之间来平衡数据集可以提升性能。在涉及3个任务的混合数据集上训练 LLaMA-300M,并比较了处理不平衡数据的3种设置。可以发现,与直接在不平衡数据集上进行训练相比,通过 Re-Sampling 减轻长尾分布的影响会导致较差的结果。相反,使用数据增强结果较好          天皓智联 

如下图4所示,作者还可视化了使用不同平衡方案在数据集上训练的模型生成的推理结果。当使用不平衡数据进行训练时,该模型在图像分割任务中表现出色。然而,对于人体姿态估计和图像去雨的任务,训练数据较少,其性能就比较差。尤其是 Test case 2,尽管要求是图像去雨任务,但是模型好像被过量的分割数据给混淆了,所以依然输出了类似分割的结果。这说明了使用不平衡的训练数据并不能得到很好的 LVM 模型。当模型使用重采样平衡的任务数据进行训练时,得到的性能更差了,比如在图像分割和去雨任务中,有的结果很不满意,有的甚至干脆失败了。当使用数据增强来实现数据平衡时,训练的模型在所有3个任务中都表现较为出色。

图4:使用不同平衡方案在数据集上训练的模型生成的推理结果的可视化

1.4 使用知识蒸馏策略训练 LVM

前面的实验中作者发现,训练数据量大幅减少不会对模型的有效性产生不利影响。因此,这是否意味着模型的参数也存在冗余呢?因此,作者继续采用知识蒸馏 (Knowledge Distillation, KD) 技术提高小的 LVM 模型的性能。

知识蒸馏 (Knowledge Distillation, KD) 是一种提升模型性能的技术。KD 利用预先训练的更大的教师模型来指导更小、更有效的学生模型来模拟教师的输出。但是,之前的 KD 方法大多是为 CNN 和 Transformer 设计。DeLVM 进一步把 KD 方法扩展到了 LVM 模型。

单任务模式

作者首先使用了一个 LLaMA-1B 作为教师模型,并在图像分割和人体姿态估计任务上训练。然后训练了一个 LLAMA-300M 作为学生模型。

图5:KD 被证明有利于提高 LVM 的单任务性能。以 LLaMA-1B 作为教师模型,LLaMA-300M 作为学生模型,与从头开始训练学生模型相比,KD 的引入显著提高了图像分割和人体姿态估计任务的性能

LLAMA-1B 教师模型拥有最多的模型参数,在这两个任务上表现出卓越的性能,大大优于 LLAMA-300M。但是,随着 KD 的引入,性能差距明显减小。所有模型的推理结果如下图6所示。可以看到视觉结果与定量结果一致,表明 LLaMA-1B 模型作为教师模型,在其输出图像中的可视化细节做得更好。但是,LLaMA-300M 的模型在没有 KD 的情况下,推理结果的细节不够,并且这些模型被使用 KD 方法的模型超越了。

图6:所有模型单任务推理结果的可视化

多任务模式

作者首先使用了一个 LLaMA-1B 作为教师模型,用一个 LLAMA-300M 作为学生模型。通过使用3个数据集的组合发生进行知识蒸馏。数据集的组合是通过数据增强技术来实现平衡的。实验结果如下图7所示,即使在多任务场景的更实际和复杂的上下文中,KD 仍然提升了学生模型在所有任务上的性能。

图7:KD 还有助于提高 LVM 的多任务性能。以 LLaMA-1B 作为教师模型,LLaMA-300M 作为学生模型,在3个任务上评测了 KD 的有效性。KD 提升了学生模型在所有任务上的性能

前景分割任务

此外,作者还对蒸馏模型在前景分割任务上进行了定量的评估。任务的目标是将给定的查询图像二值分割成前景和背景。任务提示由3个示例图像对组成,然后是测试 (query) 图像。作者将这个 Prompt 输入给 DeLVM 模型,并要求其生成后面 256 个 tokens,再由解码器解码为输出图像。评测时为与之前工作一致,作者按照了 LVM[1]的方式,使用了 Pascal-5i[8]数据集作为 Benchmark。作者报告了 mean Intersection Over Union (mIOU) 结果,并分别在 Zero-Shot 和 Finetuning 的设置下检查了模型的性能。

实验结果如下图8所示,蒸馏的 LLAMA-300M 模型优于从头开始训练的模型。尽管本文模型在 SAM 数据集上进行了训练,其中的 Objects 的颜色是随机的,并且 DeLVM 使用具有黑色背景的 Prompt 图片,但是生成的图像仍然表现出一些颜色的随机性。这种随机性为后处理过程的分离 binary segments 带来挑战。为了解决这个问题,作者使用 Pascal-5i 的 training split 来微调模型。经过微调后,mIoU 出现显著改善。

图8:前景分割实验结果

实用的 LLaMA-80M 模型

为了更深入地研究高效 LVM 的性能,作者通过使用数据增强和知识蒸馏训练了一个 LLaMA-80M 模型。为了获得强大的 LLAMA-1B 教师模型,作者将额外的无标注图像和视频数据集成到训练过程中。如下图9所示是所有模型在验证集上的 Perplexity 结果。可以发现用 KD 训练的 LLaMA-80M 模型超过了从头开始训练的模型。

图9:使用和不使用 KD 得到的 LLaMA-80M 的结果

作者也评测了 LLaMA-80M 的 ImageNet 图像理解能力。训练的方式是 MAE[9]自监督训练:把 VQGAN Encoder 替换为 Patch Embedding 层,并集成一个 Average Pooling 层和一个分类头来执行图像分类任务。LLAMA-80M 在 ImageNet 上实现了 83% 的 top-1 精度。尽管这个精度不算高,但优于从头训练的方法。这表明同时学习生成任务和理解任务可能是一种有潜力的方向,即这两个方面之间存在联系。

# TinyLLaVA

模块化重构LLaVA,替换组件只需添加1-2个文件,开源TinyLLaVA Factory来了

TinyLLaVA 项目由清华大学电子系多媒体信号与智能信息处理实验室 (MSIIP) 吴及教授团队和北京航空航天大学人工智能学院黄雷老师团队联袂打造。清华大学 MSIIP 实验室长期致力于智慧医疗、自然语言处理与知识发现、多模态等研究领域。北航团队长期致力于深度学习、多模态、计算机视觉等研究领域。

近日,清华和北航联合推出了 TinyLLaVA Factory, 一款支持定制、训练、评估多模态大模型的代码库,代码和模型全部开源。该代码库以软件工程的工厂模式作为设计理念,模块化地重构了 LLaVA 代码库,注重代码的可读性、功能的扩展性、和实验效果的可复现性。方便研究者和实践家们更容易地探索多模态大模型的训练和设计空间。

  • Github 项目:https://github.com/TinyLLaVA/TinyLLaVA_Factory
  • 论文地址:https://arxiv.org/abs/2405.11788
  • Hugging Face 模型地址:https://huggingface.co/tinyllava/TinyLLaVA-Phi-2-SigLIP-3.1B or https://huggingface.co/bczhou/TinyLLaVA-3.1B-SigLIP

LLaVA 作为多模态社区的优质开源项目,备受研究者和开发者的青睐;新入坑多模态大模型的初学者们也习惯以 LLaVA 项目作为起点,学习和训练多模态大模型。但是 LLaVA 项目的代码较为晦涩难懂,一旦不慎更改错误,就可能会影响训练效果,对于新手来说,往往不敢轻易修改其中的细节,给理解和探索多模态大模型的本质细节造成了一定的困难。

近日,清华和北航联合推出 TinyLLaVA Factory,将本来的 LLaVA 代码进行模块化重构,专注于简洁的代码实现、新功能的可扩展性、以及训练结果的可复现性,让你以最小的代码量,定制并训练属于自己的多模态大模型,同时减少代码错误率!相同的模型配置、训练数据和训练策略条件下,使用 TinyLLaVA Factory 可训练出比用 LLaVA 代码性能略胜一筹的模型。为了让用户更容易地读懂代码和使用模型,TinyLLaVA Factory 项目还配备了代码文档和 Demo 网站。其总体架构图如下。

数据预处理部分,TinyLLaVA Factory 摒弃了 LLaVA 代码中烧脑的图片处理和 Prompt 处理过程,提供了标准的、可扩展的图片和文本预处理过程,清晰明了。其中,图片预处理可自定义 Processor,也可使用一些官方视觉编码器的 Processor,如 CLIP ViT 和 SigCLIP ViT 自带的 Image Processor。对于文本预处理,定义了基类 Template,提供了基本的、共用的函数,如添加 System Message (Prompt)、Tokenize、和生成标签 Ground Truth 的函数,用户可通过继承基类就可轻松扩展至不同 LLM 的 Chat Template。

模型部分,TinyLLaVA Factory 很自然地将多模态大模型模块化成 3 个组件 —— 大语言模型组件、视觉编码器组件、中间的连接器组件。每个组件由一个工厂对象控制,负责新模型的注册和替换,使用户能够更容易地替换其中任何一个组件,而不会牵连到其他部分。

TinyLLaVA Factory 为每个组件提供了当前主流的模型,如下表所示。

训练器仍然仿照 LLaVA,采取 Hugging Face 自带的 Trainer,集成了 Gradient Accumulation,Wandb 做日志记录等特性,同样支持 DeepSpeed ZeRO2/ZeRO3 并行训练。对于评估部分,TinyLLaVA Factory 提供了 SQA/GQA/TextVQA/VQAv2/POPE/MME/MM-Vet/MMMU 8 个 Benchmark 的评估。   

接下来,划重点!TinyLLaVA Factory Github 项目还手把手教你定制自己的多模态大模型。只需简单地添加 1-2 个文件,就可以轻松替换 LLM 组件、视觉编码器组件、连接器组件。

拿替换 LLM 模型举例。据使用过 LLaVA 代码库的同学反应,LLaVA 代码想替换非 Llama 系列的语言模型容易出错。而 TinyLLaVA Factory 可以方便地替换语言模型,只需添加 2 个 py 文件,一个是 Chat Template 文件,一个是模型文件。替换视觉编码器时,也只需添加 1 个 py 文件,继承视觉编码器的基类即可。

TinyLLaVA Factory 还支持对训练策略进行定制,对使用者来说只需在配置文件中进行修改,就能在 pretraining 和 finetuning 阶段对 3 个模块组件(LLM / 视觉编码器 / 连接器)实现冻住 / 全量微调 / 部分微调 /lora 微调的任意组合。堪称小白易上手式的教程!

早在今年 2 月,TinyLLaVA 项目就敏锐地捕捉到了 3B 以下 LLM 在多模态大模型中的潜力,利用市面主流的小规模 LLM,训练了一系列多模态大模型,参数量在 0.89B-3.1B。实验结果表明经过高质量的数据选择和更加细致的训练策略,利用小规模 LLM 同样可以实现和大模型相近甚至更加优越的任务表现。(细节详见技术报告 https://arxiv.org/abs/2402.14289)

# Emote Portrait Alive

之前也有个EMO 不过不是一个啊 明明Emote Portrait Alive是框架全称~~

有了阿里的 EMO,AI 生成或真实的图像「动起来说话或唱歌」变得更容易了。 让Sora东京女郎唱歌、高启强变声罗翔,阿里人物口型视频生成绝了

最近,以 OpenAI Sora 为代表的文生视频模型又火了起来。

而除了文本生成视频之外,以人为中心的视频合成也一直是研究的焦点,比如专注于说话人头部(Talking Head)的视频生成,它的目标是根据用户提供的音频片段来生成面部表情。

从技术上来看,生成表情需要捕获说话人微妙和多样化的面部动作,由此对此类视频合成任务提出了重大挑战。

传统方法通常会对最终的视频输出施加限制,以简化任务。比如,一些方法使用 3D 模型来限制面部关键点, 另一些方法则从原始视频中提取头部运动的序列以指导整体运动。这些限制虽然降低了视频生成的复杂性,但也往往限制了最终面部表情的丰富度和自然度。

在阿里智能计算研究院近日的一篇论文中,研究者通过关注音频提示和面部动作之间的动态和细微联系,来增强说话人头部视频生成的真实度、自然度和表现力。

研究者发现,传统方法往往无法捕捉完整范围的说话人表情和不同说话人独特的面部风格。基于此,他们提出了 EMO(全称为 Emote Portrait Alive)框架,该框架可以直接利用音频 - 视频合成方法,不再需要中间 3D 模型或面部标志。

  • 论文标题:EMO: Emote Portrait Alive- Generating Expressive Portrait Videos with Audio2Video Diffusion Model under Weak Conditions
  • 论文地址:https://arxiv.org/pdf/2402.17485.pdf
  • 项目主页:https://humanaigc.github.io/emote-portrait-alive/

就效果而言,阿里的方法可以确保整个视频的无缝帧过渡,并保持身份一致,进而产生表现力强和更加逼真的角色化身视频,在表现力和真实感方面显著优于当前 SOTA 方法。

比如 EMO 可以让 Sora 生成的东京女郎角色开口唱歌,歌曲为英国 / 阿尔巴尼亚双国籍女歌手 Dua Lipa 演唱的《Don't Start Now》。 

视频都发不了啊...

EMO 支持包括英文、中文在内等不同语言的歌曲,可以直观地识别音频的音调变化,生成动态、表情丰富的 AI 角色化身。比如让 AI 绘画模型 ChilloutMix 生成的小姐姐唱陶喆的《Melody》。

EMO 还能让角色化身跟上快节奏的 Rap 歌曲,比如让小李子来一段美国说唱歌手 Eminem 的《哥斯拉》(Godzilla)。

当然,EMO 不仅仅能让角色开口唱歌,还支持各种语言的口语音频,将不同风格的肖像画、绘画以及 3D 模型和 AI 生成的内容制作成栩栩如生的动画视频。比如奥黛丽赫本的谈话。

最后,EMO 还能实现不同角色之间的联动,比如《狂飙》高启强联动罗翔老师。

方法概览

给定人物肖像的单张参考图像,本文方法可以生成与输入语音音频片段同步的视频,还能保留人物非常自然的头部运动和生动的表情,并且与所提供的声音音频的音调变化相协调。通过创建一系列无缝的级联视频,该模型有助于生成具有一致身份和连贯运动的长时间说话肖像视频,这对于现实应用至关重要。

网络 Pipeline

方法概览如下图所示。主干网络接收多帧噪声潜在输入,并尝试在每个时间步骤中将它们去噪为连续的视频帧,主干网络具有与原始 SD 1.5 版本相似的 UNet 结构配置,具体而言

  1. 与之前的工作相似,为了确保生成帧之间的连续性,主干网络嵌入了时间模块。
  2. 为了保持生成帧中人像的 ID 一致性,研究者部署了一个与主干网络并行的 UNet 结构,称为 ReferenceNet,它输入参考图像以获取参考特征。
  3. 为了驱动角色说话时的动作,研究者使用了音频层来编码声音特征。
  4. 为了使说话角色的动作可控且稳定,研究者使用脸部定位器和速度层提供弱条件。

对于主干网络,研究者没有使用提示嵌入,因此,他们将 SD 1.5 UNet 结构中的交叉注意力层调整为参考注意力层。这些修改后的层将从 ReferenceNet 获取的参考特征作为输入,而非文本嵌入。

训练策略

训练过程分为三个阶段:

第一阶段是图像预训练,其中主干网络、ReferenceNet 和面部定位器被纳入训练过程中,在这个阶段,主干网络以单一帧作为输入,而 ReferenceNet 处理来自同一视频剪辑的不同的、随机选择的帧。主干网络和 ReferenceNet 都从原始 SD 初始化权重。

在第二阶段,研究者引入了视频训练,并且加入了时间模块和音频层,从视频剪辑中采样 n+f 个连续帧,其中起始的 n 帧为运动帧。时间模块从 AnimateDiff 初始化权重。

最后一个阶段集成了速度层,研究者只在这个阶段训练时间模块和速度层。这种做法是为了故意忽略训练过程中的音频层。因为说话人的表情、嘴部运动和头部运动的频率主要受音频的影响。因此,这些元素之间似乎存在相关性,模型可能会根据速度信号而不是音频来驱动角色的运动。实验结果表明,同时训练速度层和音频层削弱了音频对角色运动的驱动能力。

实验结果

实验过程中参与比较的方法包括 Wav2Lip、SadTalker、DreamTalk。

图 3 展示了本文方法与先前方法的比较结果。可以观察到,当提供单个参考图像作为输入时,Wav2Lip 通常会合成模糊的嘴部区域并生成以静态头部姿态和最小眼部运动为特征的视频。就 DreamTalk 而言,其结果可能会扭曲原始面孔,也会限制面部表情和头部运动的范围。与 SadTalker 和 DreamTalk 相比,该研究提出的方法能够生成更大范围的头部运动和更生动的面部表情。

该研究进一步探索了各种肖像风格的头像视频生成,如现实、动漫和 3D。这些角色使用相同的声音音频输入进行动画处理,结果显示,生成的视频在不同风格之间产生大致一致的唇形同步。

图 5 表明本文方法在处理具有明显音调特征的音频时能够生成更丰富的面部表情和动作。例如下图第三行,高音调会引发角色更强烈、更生动的表情。此外,借助运动帧还可以扩展生成的视频,即根据输入音频的长度生成持续时间较长的视频。如图 5 和图 6 所示,本文方法即使在大幅运动中也能在扩展序列中保留角色的身份。   

表 1 结果表明本文方法在视频质量评估方面具有显著优势:

# LLaMA-7B

现如今已有大量提供深度学习服务的供应商,在使用这些服务时,用户需要将自己的信息包含在 prompt 中发送给这些服务商,这会导致隐私泄漏等问题。另一方面,服务商基本不愿意公开自己辛苦训练得到的模型参数。

针对这一问题,蚂蚁集团的一个研究团队提出了 PUMA 框架,可以在不影响模型性能的前提下实现安全的推理。不仅如此,他们也开源了相关代码。

  • 论文:https://arxiv.org/abs/2307.12533
  • 代码:https://github.com/secretflow/spu/blob/main/examples/python/ml/flax_llama7b/flax_llama7b.py

预训练 Transformer 模型在许多实际任务上都表现优良,也因此受到了很大关注,并且现在已经出现了不少基于这类技术的工具,它们常以「深度学习即服务(DLaaS)」范式提供服务。但是,这些服务常会有隐私问题,比如假如用户要使用 ChatGPT, 要么就需要用户向服务提供商提供自己的私人 prompt,要么就需要服务提供商将自己专有的训练得到的权重配置交给用户。

为了解决 Transformer 模型服务的隐私问题,一种解决方案是安全多方计算(Secure Multi-Party Computation),这可以在推理过程中保证数据和模型权重的安全。但是,多方计算(MPC)中简单基础的 Transformer 推理的时间成本和通信成本都很高,难以用于实际应用。为了取得更好的效率,已经有一些研究成果提出了多种加速 Transformer 模型安全推理的方法,但这些方法仍然存在以下一个或多个缺点:

  • 替换很困难。近期一些工作提出,为了降低成本,可使用二次函数和 ReLU 函数等快速近似方法来替代高成本的 GeLU 和 softmax 等函数。但是,如果只是简单替换这些函数,可能会导致 Transformer 模型性能大幅下降(这可能就会需要额外再对模型进行训练,即微调)以及出现部署问题。 
  • 推理成本高。有研究提出使用更准确的多项式函数来近似高成本的非线性函数,但其近似方法并未考虑 GeLU 和 Softmax 的特殊性质。因此,使用近似之后,这种方法的成本依然很高。 
  • 不容易部署。最近也有些研究提出通过修改 Transformer 的模型架构来加速安全推理,例如分解嵌入过程并重新组织线性层。更糟糕的是,由于 Crypten 框架不支持安全 LayerNorm,因此如果仅使用 BatchNorm 模拟成本,就会导致安全推理得到不正确的结果。这些修改方式与现有的明文 Transformer 系统存在冲突。

综上所述,在 MPC Transformer 推理领域,模型性能和效率难以兼得,而人们可能会有如下问题: 

能否安全又高效地评估预训练大型 transformer 模型,同时无需进一步再训练也能达到与明文模型相近的准确度。 

蚂蚁集团提出的 PUMA 框架正是为了解决这一难题而生,该框架能够安全又准确地执行端到端的安全的 Transformer 推理。这篇论文的主要贡献包括:

  • 用于近似非线性函数的新方法。文中提出了更加准确和快速的近似方法,可用于近似 Transformer 模型中高成本的非线性函数(如 GeLU 和 Softmax)。不同于之前的方法,新提出的近似方法基于这些非线性函数的特殊性质,可以兼顾准确度和效率。 
  • 更快更准确的安全推理。研究者使用 6 个 transformer 模型和 4 个数据集进行了广泛的实验,结果表明,相比于 MPCFORMER,当使用 PUMA 框架时,准确度在接近明文模型的同时,速度和通信效率都提高了 2 倍左右(并且注意 MPCFORMER 的准确度不及 PUMA)。PUMA 甚至可以在 5 分钟内完成对 LLaMA-7B 的评估,生成一个词。作者表示这是首次采用 MPC 评估如此大的语言模型。 
  • 开源的端到端框架。蚂蚁集团的这些研究者成功以 MPC 形式设计并实现了安全的 Embedding 和 LayerNorm 程序。得到的结果是:PUMA 的工作流程遵照明文 Transformer 模型,并未改变任何模型架构,能够轻松地加载和评估预训练的明文 Transformer 模型(比如从 Huggingface 下载的模型)。作者表示这是首个支持预训练 Transformer 模型的准确推理的开源 MPC 解决方案,同时还无需再训练等进一步修改。

PUMA 的安全设计

PUMA 概况

PUMA 的设计目标是让基于 Transformer 的模型能安全地执行计算。为了做到这一点,该系统定义了三个实体:模型所有者、客户端和计算方。模型所有者提供经过训练的 Transformer 模型,客户端负责向系统提供数据和收取推理结果,而计算方(即 P_0、P_1 和 P_2)执行安全计算协议。注意模型所有者和客户端也可以作为计算方,但为了说明方便,这里会将它们区分开。

在安全推理过程中需要保持一个关键的不变量:计算方开始时总是有客户端输入中三分之二的复制的机密份额以及模型的层权重中三分之二的权重,最终计算方也有这些层的输出中三分之二的复制的机密份额。由于这些份额不会向各方泄漏信息,这就能确保这些协议模块能以任意深度按顺序组合起来,从而为任意基于 Transformer 的模型提供安全计算。PUMA 关注的主要问题是降低各计算方之间的运行时间成本和通信成本,同时维持所需的安全级别。通过利用复制的机密份额和新提出的 3PC 协议,PUMA 能在三方设置下让基于 Transformer 的模型实现安全推理。

安全嵌入协议 

当前的安全嵌入(secure embedding)流程需要客户端使用 token id 创建一个 one-hot 向量,这偏离了明文工作流程并会破坏 Transformer 结构。因此,该方法并不容易部署到真实的 Transformer 模型服务应用中。

如此一来,这里的 Π_Embed 就不需要显式地修改 Transformer 模型的工作流程。

安全 GeLU 协议

目前大多数方法都将 GeLU 函数看作是由更小的函数组成的,并会尝试优化其中每一部分,这就让它们错失了从整体上优化私密 GeLU 的机会。给定 GeLU 函数:

过去的一些方法关注的重心要么是 tanh 函数设计高效的协议,要么是将现有的求幂和倒数的 MPC 协议用于 Sigmoid。但是,这些方法都没有用到这一事实:GeLU 函数两边基本都是线性的,即当 x<−4 时 GeLU (x) ≈ 0,当 x>3 时 GeLU (x) ≈ x。研究者提出在 GeLU 的 [−4,3] 的短区间内,低次多项式的分段近似是一种更高效且更容易实现的安全协议选择。具体来说,这个分段式低次多项式如下 (2) 式所示:

其中多项式 F_0 和 F_1 的计算是通过软件库 numpy.ployfit 实现,如 (3) 式所示。研究者发现,这种多项式拟合虽然简单,但表现却出人意料地好;实验结果的最大误差 < 0.01403,中值误差 < 4.41e−05,平均误差 < 0.00168。 

安全 Softmax 协议 

安全 LayerNorm 协议 

实验评估 

图 1:在 GLUE 和 Wikitext-103 V1 基准上的性能表现,模型方面,a 是 Bert-Base,b 是 Roberta-Base,c 是 Bert-Large,d 包括 GPT2-Base、GPT2-Medium、GPT2-Large。 

表 1:对于一个长度为 128 的输入句,Bert-Base、Roberta-Base 和 Bert-Large 的成本。时间成本以秒计算,通信成本以 GB 计算。 

表 2:GPT2-Base、GPT2-Medium 和 GPT2-Large 的成本。输入句的长度为 32,这些是生成 1 个 token 的成本。 

表 3:对于 {2, 4, 8, 16} 句子的批次,Bert-Base 和 GPT2-Base 的成本。Bert-Base 和 GPT2-Base 的输入长度分别设定为 128 和 32,GPT2 的数据是生成 1 个 token 的成本。 

表 4:不同输入长度(#Input)下 Bert-Base 和 GPT2-Base 的成本。Bert-Base 和 GPT2-Base 的输入长度分别设定为 {64, 128, 256, 512} 和 {16, 32, 64, 128}.GPT2 的数据是生成 1 个 token 的成本。 

图 2:GPT2-Base 生成不同输出 token 的成本,输入长度为 32。a 是运行时间成本,b 是通信成本。 

表 5:用 LLaMA-7B 执行安全推理的成本,#Input 表示输入句的长度,#Output 表示所生成的 token 的数量。

只需五分钟就能扩展用于 LLaMA-7B。研究者在 3 个阿里云 ecs.r7.32xlarge 服务器上使用 PUMA 评估了大型语言模型 LLaMA-7B,其中每个服务器都有 128 线程和 1 TB RAM,带宽为 20 GB,往返时间为 0.06 ms。如表 5 所示,只需合理的成本,PUMA 就能支持大型语言模型 LLaMA-7B 实现安全推理。举个例子,给定 8 个 token 构成的输入句,PUMA 可以在大约 346.126 秒内以 1.865 GB 的通信成本输出一个 token。研究者表示,这是首次使用 MPC 方案对 LLaMA-7B 实施评估。

PUMA虽然取得了一系列突破,但是它依然是一个学术成果,其推理耗时依然离落地存在一些距离。研究者相信未来与机器学习领域最新的量化技术、硬件领域量新的硬件加速技术相结合之后,真正保护隐私的大模型服务将离我们不再遥远。

# MLLM~

马毅团队新作!微调多模态大模型会「灾难性遗忘」,让性能大减

模型灾难性遗忘,成为当前一个关键热门话题,甚至连GPT-4也无法避免。

近日,来自UC伯克利、NYU等机构研究人员发现,微调后的多模态大模型,会产生灾难性遗忘。

论文地址:https://arxiv.org/abs/2309.10313

论文中,研究团队引入了首个研究MLLM灾难性遗忘的评估框架——EMT(Evaluating MulTimodality)。(老二次元的基因动了)

在多个基准上评估4个模型后,发现多数模型无法保持与其基础视觉编码器(CLIP)相似的分类性能。

同时,在一个数据集上对LLaVA进行微调会导致在其他数据集上出现灾难性遗忘。

MLLM的EMT评估流程如下:

通过 (1) 提示每个MLLM作为图像分类器输入来自分类任务的图像;(2) 要求MLLM明确回答分类任务中的单个标签。并使用另一个LLM评估每个输出的正确性。

马毅教授对这项研究也做了推荐,在一些新任务上通过微调得到的性能提升,是以以前能力大幅下降为代价。

一起来看看究竟怎么回事?

微调后,大模型忘性更严重了

GPT-4之后,一系列多模态大语言模型(MLLM)的研究喷涌而出。

业界常用的做法是将预训练的视觉编码器与开源LLM集成,以及对生成视觉语言模型进行指令调优。

虽然许多经过微调的MLLM在通用视觉语言理解方面,展现出卓越的能力,但这些模型仍然遭受灾难性遗忘。

也就是说,模型往往会过度拟合微调数据集,从而导致预训练任务的性能下降。

图像分类中的灾难性遗忘,已在CV和ML领域中有着广泛的研究。

然而,MLLM的最新发展主要集中在,创建用于视觉问答多模态聊天机器人,而没有评估其基本图像分类能力,更不用说探索MLLM中的灾难性遗忘了。

话虽如此,先前的MLLM评估框架主要侧重于评估「认知推理能力」或「幻觉」,而忽略了研究如何在MLLM中灾难性遗忘的必要性。

总而言之,最新研究做出了2个关键贡献:

- 提出了EMT,一个专门设计用于评估MLLM中灾难性遗忘现象的评估框架。

据研究人员所知,它是第一个通过分类研究MLLM灾难性遗忘的评估框架。通过EMT,研究团队发现几乎所有测试的模型都无法保留其视觉编码器的分类性能。

- 对LLaVA进行了微调实验。

实验结果表明,适度的微调对于非微调任务是有利的,但过度的微调最终会导致这些任务中的灾难性遗忘。

EMT:评估开源多模态大模型

具体来讲,EMT的工作原理如下:

(1) 首先输入来自分类任务的图像;

(2) 然后,根据每个数据集,要求测试MLLM对输入图像进行分类,并通过提供的提示收集其输出;

(3) 接下来,由于MLLM的输出可能不遵循特定格式,因此研究人员用GPT-3.5来评估分类精度;

(4) 最后,输出测试MLLM在不同数据集上的预测精度

开源MLLM灾难性遗忘

研究人员首先用EMT来评估四个模型:LLaVA、Otter、LENS和InstructBLIP。

它们在MNIST、CIFAR10、CIFAR100和miniImageNet上的分类准确率介绍如下。研究团队按基本ViTCLIP模型对所展示的径向图进行了区分。

尽管大多数测试的MLLM无法获得与其基础视觉编码器相似的性能,但仍有几处值得注意:

- InstructBLIP-7b是唯一的例外,其性能优于视觉编码器

- 在所有测试模型中,LENS的整体分类性能最差

不同MLLM在MNIST、CIFAR-10、CIFAR-100和miniImagenet上的EMT评估精度

检验预测结果

研究人员对不同模型在不同数据集上的输出结果进行了分析,并找出了影响分类准确性的三大因素:

- 错误预测:与其他分类任务一样,MLLM有时也会做出错误的预测。

在如下示例中,LLaVA-7B在MNIST分类中错误地将0看做成8。

- 内在幻觉:经过测试的MLLM有时会生成看似相关,但不正确或无法验证的内容,简之,生成的输出与源内容直接矛盾。

其中一个例子是,要求LENS对CIFAR-10进行分类。

值得注意的是,EMT提示明确指示,测试MLLM仅识别所有类标签中的单个对象。

尽管有这些明确的说明,LENS仍然会产生本质上幻觉的输出——飞机、汽车、鸟、猫、鹿、狗、青蛙、马,一个包含多个标签的答案。

- 外在幻觉:输出与原始源内容没有可验证的联系。

如下示例中,虽然生成的输出文本部分包含标签「观赏鱼」,但它还显示了附加描述符,这些描述符不仅难以验证,而且与提示概述的原始请求无关。

微调LLaVA

接下来,研究人员使用EMT来评估LLaVA微调过程中的精度变化。

在此,他们使用LLaVA-7b和LLaVA-13b作为基础MLLM进行微调,并且分别在MNIST、CIFAR-10、CIFAR-100和 miniImagenet上进行微调实验。

具体方法是微调(1)线性适配器层(表示为线性);(2)线性适配器层和使用Lora的LLM(表示为lora)。

下图展示了3个epoch微调结果。虽然LLaVA的性能确实在微调数据集上有所提高,但图中揭示了MLLM微调的一个关键问题:

在一个数据集上微调MLLM会降低另一非微调数据集上的性能。

这种现象虽然并不出人意料,但却值得注意。由于该模型除了经过微调的数据集之外没有接触过其他数据集,因此理所当然会观察到与灾难性遗忘类似的影响。

经过微调实验表明:

- 在一个数据集上进行微调会导致其他数据集上的灾难性遗忘,这种现象在线性微调和Lora微调中都会发生    

- Lora微调比线性微调导致更多遗忘

接下来,研究人员将通过提供精确度曲线,来更详细地研究微调过程。

从分类曲线中可以看出:

- 线性微调具有普适性,因为使用RGB数据集(CIFAR10、CIFAR100、miniImageNet)进行线性微调也能在第一个epoch提高其他RGB数据集的准确率

- Lora微调不具备线性微调的通用性

检验预测结果

当研究人员检查微调LLaVA的输出时发现:

它会输出与其微调数据集相关的文本,同时忽略与其原始提示相关的问题,从而产生幻觉。

为了进一步说明这一现象,研究团队提供了对LLaVA-7b和LLaVA-13b进行分类的明确示例,这些示例已使用EMT提示在不同数据集上进行了微调。

如下的演示说明,当CIFAR-10微调模型在CIFAR10上进行测试时,LLaVA确实能成功识别物体。

然而,在其他数据集上进行微调后,LLaVA模型在CIFAR-10分类中开始出现幻觉。

在这个例子中,通过MNIST微调模型对CIFAR-10进行分类时,模型不仅部分生成了关键词「飞机」,而且同时产生了数字「8」的幻觉输出。

另外,研究人员在CIFAR-100和miniImagenet微调模型中也观察到了类似的现象。

具体来说,这些微调模型开始产生幻觉,将「飞机」预测为与「飞机」相似或相关的类别,如CIFAR-100模型中的「蝴蝶」和miniImagenet模型中的「航空母舰」。

上述例子表明:

- 微调MLLM确实提高了微调数据集的分类性能

- 微调MLLM在其他数据集上会导致灾难性遗忘,因为微调MLLM会记忆微调数据集,从而产生幻觉文本

参考资料:

​https://yx-s-z.github.io/emt/​

# LLaMA-VID

这是贾佳亚团队自8月提出主攻推理分割的LISA多模态大模型、10月发布的70B参数长文本开源大语言模型LongAlpaca和超长文本扩展术LongLoRA后的又一次重磅技术更新。而LongLoRA只需两行代码便可将7B模型的文本长度拓展到100k tokens,70B模型的文本长度拓展到32k tokens的成绩收获了无数好评。

这次,贾佳亚团队的新作多模态大模型LLaMA-VID,可支持单图、短视频甚至长达3小时电影的输入处理。须知当前,包括GPT-4V在内的多模态模型 [1,2,3]基本只能支持图像输入,面对实际场景中对多图像长视频的处理需求支持十分有限,面对几十分钟甚至几个小时的长视频更显无能为力。

可以说,LLaMA-VID的出现填补了大语言模型在长视频领域的空白。

电影搭子LLaMA-VID的一手体验

先拿最近爆火的GTA6预告片试试手感。

LLaMA-VID能够准确理解预告片里出现的场景,并能分析预告片中游戏吸引人的地方在于广泛的活动场景和惊艳的视觉效果。

而根据游戏中的场景和特征,LLaMA-VID还能推测出预告片是Rockstar公司游戏GTA6的推广,并说出游戏的背景城市为迈阿密。

针对网络上流行的短视频和图片,LLaMA-VID也不在话下。

LLaMA-VID能够分析短视频中知名表情包的笑点,因为视频中人物夸张的表情以及对周围人物的情绪感染不断加深并强化。

也能扮演“福尔摩斯”,像侦探来根据室内的环境分析人物性格。

接下来,LLaMA-VID将通过看经典电影来展示自己的看家本领。首先是励志、温情的《阿甘正传》:

可以看出,LLaMA-VID对角色的理解与分析十分准确。

如珍妮对于阿甘的意义(孩童时期的朋友,后来成为阿甘的妻子,是阿甘生活和心灵的慰藉);阿甘在战争及退伍后的事件分析(丹中尉责怪阿甘救了自己,无法战死沙场),并对接见阿甘的美国总统如数家珍(肯尼迪、约翰逊、尼克松分别因为全美橄榄球运动员、越战荣誉勋章、和全美乒乓球队接见阿甘)。 

这一次直接挑战超长视频,让LLaMA-VID看一部近3小时的、刺激的科幻大片《星际穿越》,并与其进行对话。

可以看出,LLaMA-VID不仅能结合电影情节和人物轻松对电影进行点评,而且能很精准地回答出剧中所涉的细节。

例如,虫洞的作用和创造者是谁(未来的智慧生物放置在土星附近,用于帮助人类进行远距离星际穿越),男主库珀是如何将黑洞中的信息传递给女儿墨菲(通过手表以摩斯密码的方式传递数据),以及米勒星球上相对地球时间的快慢及原因(米勒星球由于在黑洞附近,导致1小时相当于地球7年)。

不得不说,这个电影搭子实在太强大了,又狠话又多那种!

16个图片视频量化指标直接Promax

见识过电影搭子的超能力后,不妨来看看贾佳亚团队是如何开发LLaMA-VID的。

要知道,当前的多模态模型无法处理长视频的主要原因在于传统多模态大模型对单张图片的编码token数量过多,导致在视频时间加长后所需要的token数急剧增加,使模型难以承受。以当前多模态大模型的技术标杆GPT-4V为例。由于每张图像都需要过多的Token进行编码,GPT-4V很难将所有的视频帧全部送入大模型。例如对于GTA6预告片(1分30秒)的输入,GPT-4V采用抽取5帧的策略进行逐帧分析:

这不仅会使用户对视频内容无法获得直观的理解,并难以处理更长的视频输入。

如果让GPT-4V对视频进行统一分析,则会出现报错并无法处理:

为解决这个问题,贾佳亚团队重新设计了图像的编码方式,采用上下文编码 (Context Token) 和图像内容编码 (Content Token) 来对视频中的单帧进行编码,从而将视频中的每一帧用2个Token来表示。

其中,上下文编码根据用户输入的问题生成,从而保证了在极限压缩视频消耗的同时,能尽可能保留和用户问题相关的视觉特征。而图像内容编码则更加关注图像本身的内容信息,来对上下文编码未关注到的环境进行补充。

简单来说,对于上下文编码 (Context Token),LLaMA-VID利用文本解码器(Text Decoder)根据用户的输入和图像编码器(Visual Encoder)提取的特征来生成输入指令相关的跨模态索引(Text Query),并使用所生成的索引对图像编码器生成的特征利用注意力机制(Context Attention)进行特征采样和组合,从而生成高质量的指令相关特征。

而对于图像内容编码 (Content Token) ,LLaMA-VID直接根据用户需求对图像特征进行池化采样。这对于单张图片或短视频,可保留绝大多数的图像特征从而提升细节理解,而面对几个小时的长视频时,则可将每帧的图像特征压缩成2个Token。

用这种方式,LLaMA-VID可以将3个小时的电影或视频精简为数个Token,直接使用大语言模型进行理解和交互。

这种Token生成方法非常简洁,仅需几行代码即可实现高效的生成。

此外,LLaMA-VID还收集了400部电影并生成9K条长视频问答语料,包含电影影评、人物成长及情节推理等。结合之前贾佳亚团队所发布的长文本数据集LongAlpaca-12k(9k条长文本问答语料对、3k短文本问答语料对), 可轻松将现有多模态模型拓展来支持长视频输入。

在16个视频、图片理解及推理数据集上实现了promax的效果

与现有方法相比,LLaMA-VID所提出的创新之处在于,仅用2个Token来处理视频中的图片即已大幅超越以往的模型,在MSVD-QA,MSRVTT-QA,ActivityNet-QA等多个视频问答和推理的榜单上实现了SOTA。而随着语言模型的增大,效果还能进一步增强。

而面对现有的多模态模型如LLaVA-1.5,LLaMA-VID仅需加入1个所提出的上下文编码 (Context Token)拓展,能在GQA、MMBench、MME、SEED等8个图片问答指标上获得显著的提升:

值得一提的是,LLaMA-VID的视频理解和推理能力已经出了Demo,可以在线跟电影对话的那种。

操作也极其简单,只需选择电影海报和对应的电影段,即可直接和电影交流(部署在单块3090,需要的小伙伴可以参考code用更大的显存部署,直接和整个电影对话)。

同时也支持用户上传短视频进行互动。

如果对描述指令有疑惑的,Demo也给出了一些示例,感兴趣的小伙伴们不妨来pick一下这个电影搭子。

  • Github地址:https://github.com/dvlab-research/LLaMA-VID
  • Demo地址: http://103.170.5.190:7864/
  • 论文地址:https://arxiv.org/abs/2311.17043

# Llama2~教学

`在这篇博客中,Meta 探讨了使用 Llama 2 的五个步骤,以便使用者在自己的项目中充分利用 Llama 2 的优势。同时详细介绍 Llama 2 的关键概念、设置方法、可用资源,并提供一步步设置和运行 Llama 2 的流程。Meta 官网推出的 Llama2 使用教学博客,简单 5 步教会你如何使用 Llama2。

Meta 开源的 Llama 2 包括模型权重和初始代码,参数范围从 7B 到 70B。Llama 2 的训练数据比 Llama 多了 40%,上下文长度也多一倍,并且 Llama 2 在公开的在线数据源上进行了预训练。

Llama2 参数说明图 

Llama2 流程说明图

在推理、编码、熟练程度和知识测试等多项外部基准测试中,Llama 2 的表现均优于其他开放式语言模型。Llama 2 可免费用于研究和商业用途。

下一节中将介绍使用 Llama 2 的 5 个步骤。在本地设置 Llama 2 有多种方法,本文讨论其中一种方法,它能让你轻松设置并快速开始使用 Llama。

开始使用 Llama2

步骤 1:前置条件和依赖项

本文将使用 Python 编写脚本来设置并运行 pipeline 任务,并使用 Hugging Face 提供的 Transformer 模型和加速库。

pip install transformers
pip install accelerate

步骤 2:下载模型权重

本文使用的模型可在 Meta 的 Llama 2 Github 仓库中找到。通过此 Github 仓库下载模型需要完成两步:

  • 访问 Meta 网站,接受许可并提交表格。请求通过后才能收到在电子邮件中的预签名 URL;
  • 克隆 Llama 2 知识库到本地。
git clone https://github.com/facebookresearch/llama

启动 download.sh 脚本(sh download.sh)。出现提示时,输入在电子邮件中收到的预指定 URL。

  • 选择要下载的模型版本,例如 7b-chat。然后就能下载 tokenizer.model 和包含权重的 llama-2-7b-chat 目录。

运行 ln -h ./tokenizer.model ./llama-2-7b-chat/tokenizer.model,创建在下一步的转换时需要使用的 tokenizer 的链接。

转换模型权重,以便与 Hugging Face 一起运行:

TRANSFORM=`python -c"import transformers;print ('/'.join (transformers.__file__.split ('/')[:-1])+'/models/llama/convert_llama_weights_to_hf.py')"`
pip install protobuf && python $TRANSFORM --input_dir ./llama-2-7b-chat --model_size 7B --output_dir ./llama-2-7b-chat-hf

Meta 在 Hugging Face 上提供了已转换的 Llama 2 权重。要使用 Hugging Face 上的下载,必须按照上述步骤申请下载,并确保使用的电子邮件地址与 Hugging Face 账户相同。

步骤 3:编写 python 脚本

接下来创建一个 Python 脚本,该脚本将包含加载模型和使用 Transformer 运行推理所需的所有代码。

导入必要的模块

首先需要在脚本中导入以下必要模块:LlamaForCausalLM 是 Llama 2 的模型类,LlamaTokenizer 为模型准备所需的 prompt,pipeline 用于生成模型的输出,torch 用于引入 PyTorch 并指定想要使用的数据类型。

import torch
import transformers
from transformers import LlamaForCausalLM, LlamaTokenizer

加载模型

接下来,用下载好并转换完成的权重(本例中存储在 ./llama-2-7b-chat-hf 中)加载 Llama 模型。

model_dir = "./llama-2-7b-chat-hf"
model = LlamaForCausalLM.from_pretrained (model_dir)

定义并实例化分词器和流水线任务

在最终使用之前确保为模型准备好输入,这可以通过加载与模型相关的 tokenizer 来实现。在脚本中添加以下内容,以便从同一模型目录初始化 tokenizer:

tokenizer = LlamaTokenizer.from_pretrained (model_dir)

接下来还需要一种方法来赋予模型推理的能力。pipeline 模块能指定 pipeline 任务运行所需的任务类型(text-generation)、推理所需的模型(model)、定义使用该模型的精度(torch.float16)、pipeline 任务运行的设备(device_map)以及其他各种配置。

在脚本中添加以下内容,以实例化用于运行示例的流水线任务:

pipeline = transformers.pipeline (
"text-generation",
model=model,
tokenizer=tokenizer,
torch_dtype=torch.float16,
device_map="auto",
)

运行 pipeline 任务

在定义了 pipeline 任务后,还需要提供一些文本提示,作为 pipeline 任务运行时生成响应(序列)的输入。下面示例中的 pipeline 任务将 do_sample 设置为 True,这样就可以指定解码策略,从整个词汇表的概率分布中选择下一个 token。本文示例脚本使用的是 top_k 采样。

通过更改 max_length 可以指定希望生成响应的长度。将 num_return_sequences 参数设置为大于 1,可以生成多个输出。在脚本中添加以下内容,以提供输入以及如何运行 pipeline 任务的信息:

sequences = pipeline (
'I have tomatoes, basil and cheese at home. What can I cook for dinner?\n',
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=400,
)
for seq in sequences:
print (f"{seq ['generated_text']}")

步骤 4:运行 Llama

现在,这个脚本已经可以运行了。保存脚本,回到 Conda 环境,输入

python < 脚本名称 >.py

并按回车键来运行脚本。

如下图所示,开始下载模型,显示 pipeline 任务的进展,以及输入的问题和运行脚本后生成的答案:   

本地运行 2-7b-chat-hf

现在可以在本地设置并运行 Llama 2。通过在字符串参数中提供不同的提示来尝试不同的提示。你还可以通过在加载模型时指定模型名称来加载其他 Llama 2 模型。下一节中提到的其他资源可以帮你了解更多 Llama 2 工作原理的信息,以及可用于帮助入门的各种资源。

步骤 5:能力拔高

要了解有关 Llama 2 工作原理、训练方法和所用硬件的更多信息,请参阅 Meta 的论文《Llama 2: Open Foundation and Fine-Tuned Chat Models》,其中对这些方面进行了更详细的介绍。

论文地址:https://ai.meta.com/research/publications/llama-2-open-foundation-and-fine-tuned-chat-models/

从 Meta 的 Llama 2 Github repo 获取模型源代码,源代码展示了模型的工作原理以及如何加载 Llama 2 模型和运行推理的最简单示例。在这里还可以找到下载、设置模型的步骤以及运行文本补全和聊天模型的示例。

repo 地址:https://github.com/facebookresearch/llama

在模型卡片(中了解模型的更多信息,包括模型架构、预期用途、硬件和软件要求、训练数据、结果和许可证。

卡片地址:https://github.com/facebookresearch/llama/blob/main/MODEL_CARD.md

在 Meta 的 llama-recipes Github repo 中提供了如何快速开始微调以及如何为微调模型运行推理的示例。

repo 地址:https://github.com/facebookresearch/llama-recipes/

查阅 Meta 最近发布的编码人工智能工具 Code Llama,这是一个建立在 Llama 2 基础上的人工智能模型,针对生成和分析代码的能力进行了微调。

Code Llama 地址:https://about.fb.com/news/2023/08/code-llama-ai-for-coding/

阅读《负责任使用指南》,它提供了以负责任的方式构建由大语言模型 (LLM) 支持的产品的最佳实践和注意事项,涵盖了从开始到部署的各个开发阶段。

指南地址:https://ai.meta.com/llama/responsible-use-guide/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值