LLMs 能否可视化图形?评估人工智能对符号程序的理解

大型语言模型(LLMs)已经展示了生成通用计算机程序的能力,并提供了对程序结构的理解。然而,测试 LLMs 的真实能力是一个挑战,尤其是在找到它们训练期间未见过的任务时。确定 LLMs 是否能真正“理解”这些在执行时生成视觉内容的符号图形程序至关重要。研究人员将这种理解定义为在仅基于程序的原始文本输入的情况下,理解呈现图像的语义内容。这种方法涉及在不实际查看图像的情况下回答有关图像内容的问题,这对于有视觉输入的情况来说很容易,但仅依赖程序文本则要困难得多。 现有的符号图形程序研究主要集中在 2D 形状和 3D 几何的程序化建模上。这些程序包括构造实体几何(CSG)、计算机辅助设计(CAD)和可扩展矢量图形(SVG),它们提供了清晰且可解释的视觉内容表示。此外,LLMs 已被应用于各种编程任务,如代码检索、自动化测试和代码生成;然而,理解符号图形程序与这些任务有很大不同,因为其语义意义通常是通过视觉定义的。现有的 LLMs 评估基准主要关注非图形程序的理解,而视觉语言模型则使用多模态数据集进行图像字幕生成和视觉问答等任务的评估。 来自马普智能系统研究所、剑桥大学和麻省理工学院的研究人员提出了一种新的方法来评估和增强 LLMs 对符号图形程序的理解。引入了名为 SGP-Bench 的基准,用于测试 LLMs 在解释 SVG(2D 矢量图形)和 CAD(2D/3D 对象)程序方面的语义理解和一致性。此外,基于一个名为符号指令调优的收集指令跟随数据集,研究人员开发了一种新的微调方法以提升性能。此外,研究人员创建的符号 MNIST 数据集显示了 LLM 和人类在理解符号图形程序方面存在重大差异。 构建评估 LLMs 符号图形程序理解能力的基准过程采用了一个可扩展且高效的流水线。它使用一个强大的视觉语言模型(GPT-4o)根据符号程序渲染的图像生成语义问题,进一步由人工校对人员验证这些自动生成的问答对的质量和准确性。与传统的数据创建方法相比,这种方法减少了所需的人工工作。对于 SVG 和 2D CAD 程序,这个过程很简单,因为它们直接生成 2D 图像,但在 3D CAD 程序中,3D 模型首先需要从多个固定的摄像机位置转换为 2D 图像。 LLMs 对符号图形程序理解的评估是在由 1,000 个生成类似 MNIST 数字图像的 SVG 程序组成的 SGP-MNIST 数据集上进行的,每个数字(0-9)有 100 个程序。虽然人类可以轻松识别这些图像,但 LLMs 发现解释这些符号程序极其具有挑战性。即使是先进的 GPT-4o 模型也仅比随机猜测稍好。人类和 LLMs 在处理和理解视觉信息符号表示方面的显著差异突显了一个重要的差距。 综上所述,研究人员提出了一种新的评估 LLMs 的方法,通过评估它们直接从符号图形程序中理解图像的能力,而无需视觉输入。研究人员创建了 SGP-Bench,这是一个有效衡量 LLMs 在这一任务中表现的基准。他们还引入了符号指令调优(SIT)以增强 LLMs 解读图形程序的能力。这项研究有助于更清晰地了解 LLMs 的能力,并促进多样化评估任务的创建。未来的研究包括调查 LLMs 在这一领域的语义理解,并致力于开发先进的方法以提高它们在这些任务中的性能。

4轮暴训,Llama 7B击败GPT-4!Meta等让LLM「分饰三角」自评自进化

Meta、UC伯克利、NYU共同提出元奖励语言模型,给「超级对齐」指条明路:让AI自己当裁判,自我改进对齐,效果秒杀自我奖励模型。 LLM对数据的大量消耗,不仅体现在预训练语料上,还体现在RLHF、DPO等对齐阶段。 后者不仅依赖昂贵的人工标注数据,而且很可能让人类水平限制LLM的进一步发展。 今年1月,Meta和NYU的团队就提出了语言模型的自我奖励机制,使用LLM-as-a-Judge的提示机制,让模型在训练期间进行自我反馈。 论文地址:https://arxiv.org/abs/2401.10020 论文发现,即使不依靠人类标注者,LLM也能通过评价自己的响应实现性能提升。 最近,这个团队又发表了一篇研究,将LLM「自我奖励」这件事情再拔高了一个层次。 论文地址:https://arxiv.org/abs/2407.19594 毕竟是自己给自己打分,因此不能只关注模型作为actor如何从反馈中优化,也需要保证模型作为judge具备优秀的自我评价能力。 之前的研究就因为过于关注前者而忽略后者,造成了迭代训练期间性能的过快饱和。 甚至,还有可能造成比饱和更差的情况,即对奖励信号的过度拟合(reward hacking)。 因此,来自Meta、NYU、UC伯克利等机构的研究者们提出,还需要增加一个「元奖励」步骤——让模型评价自己的评价,从而提升评价能力。 虽然听起来有点绕,但实际是合理的。而且实验发现,加上这一层嵌套有显著的提升效果。 比如Llama-3-8B-Instruct在AlpacaEval 2上的胜率就从22.9%增至39.4%,比GPT-4的表现更佳;在Arena-Hard上则从20.6%提升至29.1%。 如果说,今年1月发表的研究是LLM-as-a-Judge,那么这篇论文提出的「元奖励」,就相当于LLM-as-a-Meta-Judge。 不仅Judge不需要人类,Meta-Judge也能自给自足,这似乎进一步证明,模型的自我提升可以摆脱对人类监督的依赖。 Meta科学家Yann LeCun也转发了这篇研究,并亲自下场玩起了双关梗—— Meta提出的Meta-Judge,FAIR能否实现fair? 研究不重要,重要的是Meta FAIR这一波曝光率拉满了。 元奖励(Meta-Rewarding) 用更直白的话说,「元奖励」方法就是在原有的actor-judge的互动中再引入meta-judge,且由同一个模型「分饰三角」,不需要额外人类数据的参与。 其中,actor负责对给定提示生成响应;judge负责为自己的响应进行评价和打分;而meta-judge会对自己的打分质量进行对比。 最终的优化目标,是希望actor能生成更好的响应,但训练效率依赖于judge的准确率。 因此,meta-judge作为训练judge的角色,可以同时提升模型作为actor和judge的性能。 这三种角色组成的迭代训练模式如图1所示,在第t个步骤中,先收集模型M_t对提示x的响应,由再让M_t对自己进行评价,由此得到用于训练actor的偏好数据。 之后,给定同一个响应内容y,让M_t生成各种不同评价的变体,由meta-judge进行打分和排名,由此得到用于训练judge的偏好数据。 结合上述的两类偏好数据,通过DPO方法对模型M_t进行偏好优化,就完成了一轮迭代,得到模型M_(t+1)。 长度偏好 之前的工作曾经发现,作为judge的模型会偏好更长的响应,这会导致多轮迭代后答案的「长度爆炸」。 因此,作者引入了一种简洁的「长度控制」(length-control)机制——使用参数ρ∈[0,1],权衡judge的评分和响应文本长度。 比如,对于分数在第一梯队的模型响应,即分数范围为[(1-ρ)Smax+ρSmin, Smax],选择其中最短的响应作为最优答案。 Judge偏好数据的创建 首先,选择judge最没有把握的模型响应,通过分数方差衡量judge的确定性。对于每个选中的响应y,我们有最多N个对应的模型评价{j1, … , jN}。 之后,对其中的每一对(jm, jn)进行成对评估,使用如图2所示的meta-judge提示模板。 除了给出评价结果,meta-judge还需要生成CoT推理过程。 为减少meta-judge可能存在的位置偏好(可能倾向于选择最先出现的Judgment A),对同一对数据(jm, jn)会交换顺序让meta-judge进行两次评价,得到单次结果rmn: 引入参数w1、w2用于表征可能存在的位置偏好: 其中win1st和win2nd表示在meta-judge的整个评价过程中,两个位置的评价分别有多少次胜出。 用以上变量构建「对决矩阵」(battle matrix)B记录每一次的最终结果: 利用Elo评分,可以从矩阵B计算meta-judge给每个judge赋予的元奖励分数。 作者发现,meta-judge和judge一样,也会展现出「长度偏好」,倾向于选择更长的评价意见。 为了避免最终训出的模型过于啰嗦,构建judge数据集时也采取了过滤措施。如果meta-judge选中的评价意见超过一定长度,整个数据对都会被直接舍弃。 评估实验 实验准备 实验使用Llama-3-8B-Instruct作为种子模型,其他方面的实验设置与之前发表的论文《Self-Rewarding Language Models》一致。 在元奖励训练之前,实验首先在EFT(Evaluation Fine-Tuning)数据集上对种子模型进行监督微调(SFT)。 EFT数据集是根据Open Assistant构建的,并提供初始的LLM-as-a-Judge训练数据,包含经过排名的人类响应,能训练模型充当法官。 对于元奖励迭代,实验利用2万个提示,由Llama-2-70B-Chat经过8-shot提示生成。 如上图所示,训练所用的提示在分布上更接近AlpacaEval数据集,而Arena-Hard的提示集中分布于训练提示的一个子集。 对于每次迭代,实验从该种子集中抽取5,000个提示,总共进行四次迭代。 迭代过程如下: – Iter 1:从初始的SFT模型开始,使用DPO(Direct Preference Optimization)对生成的actor和judge的偏好对进行训练,获得M1。 – Iter 2:使用DPO对M1生成的actor和judge偏好对进行训练,获得M2。 – Iter 3/4:使用DPO仅对M2/M3生成的actor偏好对进行训练,获得M3/M4。 每个prompt都让模型生成K=7个响应,每次迭代总共生成3.5万个响应。然后,我们过滤掉相同的响应(通常删除不超过50个重复项)。 接下来,使用相同的采样参数为每个响应生成N = 11^2个不同的判断。 评估方法 元奖励模型的目标是要让模型既能自己「演」,还能自己「评」,因此实验也要评估模型在这两个角色中的表现如何。 基线模型是前述论文中提出的自我奖励模型,带有相同的「长度控制」机制,可以直接对比出元奖励机制带来的性能增益。 首先,先看看如何评判「演」的怎么样。 实验利用三个基于GPT4-as-a-Judge的自动评估基准,包括AlpacaEval 2、Arena-Hard和MT-Bench,分别侧重于模型的不同方面。 例如,AlpacaEval主要关注聊天场景,提示集涵盖了各种日常问题。 相比之下,Arena-Hard包含更复杂或更具挑战性的问题,要在预定义的7个方面(创造力、复杂性、问题解决能力等)满足更多的标准。 MT-Bench有8个不同的问题类别,主要评估模型的多轮对话能力。 另一方面,为了评估LLM法官「评」的怎么样,实验测量了LLM给的分数与人类偏好的相关性。如果没有可用的人类标注数据,则使用较强的AI法官代替。 指令跟随评估 图3展示了在AlpacaEval基准上,元奖励方法(带有长度控制机制)胜率随训练迭代的变化。 总体来看,元奖励的胜率从22.9%大幅提升到39.4%,超过了GPT-4,并接近Claude Opus模型。 考虑到种子模型参数量只有8B,并且,除了在SFT阶段使用的EFT数据集,没有引入任何额外的人工数据,这是一个相当优秀的结果。 另外,结果也证明了meta-judge和长度控制机制的重要性。 自我奖励模型训练到超过3轮时,开始出现饱和迹象,但带有元奖励的模型并没有,到第4轮时仍保持性能增长。 这表明了对模型评价能力进行训练的重要性,以及meta-judge这一角色的有效性。 如表1所示,经过4轮迭代,无论是自我奖励模型还是元奖励模型,平均响应长度(以字符为单位)都没有显著增加,证明长度控制机制的有效性。 元奖励机制有以下三个较为明显的改进。 首先,将AlpacaEval中的805个类别细分为18个类别进行详细分析,可以看到,元奖励几乎改进了所有类别的响应(图4),包括需要大量知识和推理的学科,例如科学(Science)、游戏(Gaming)、文学(Literature)等。 值得注意的是,旅游(Travel)和数学(Mathematics)这两类,模型并没有实现显著提升。 第二,元奖励改进了对于复杂和困难问题的回答。 实验进一步使用Arena-Hard评估在元奖励方法在回答复杂和具有挑战性的问题上的表现。 表2中的评估结果显示,元奖励在4次迭代中都能提高分数,与种子模型(20.6%)相比,显著提高了8.5%。 第三,元奖励在仅训练单轮对话的情况下也并未牺牲多轮对话能力。 论文进行了MT-Bench评估,以检查在仅训练单轮数据的情况下多轮对话能力的损失。 结果如下表显示,元奖励模型的4次迭代显著提高了第一轮对话得分,从8.319(种子模型)提高到8.738,而第二轮对话得分仅下降了不超过 0.1。 这是对基线模型中自我奖励+长度控制(Self-Rewarding + LC)的巨大改进,因为后者通常会在第二轮对话得分上,下降超过 0.2,同时没有提高第一轮对话得分。 奖励模型评估 实验评估了模型对种子模型Llama3-8B-Instruct生成响应的判断准确性。 在缺乏人工标注的情况下,作者选择测量元奖励模型与当前最强的判断模型gpt-4-1106-preview之间的评分相关性。 分析采用了两种略有不同的设置,主要区别在于它们如何处理判断模型给出的平局,因此使用了两种指标:将平局计为0.5的一致性分数(agreement)和舍弃平局结果的一致性分数。 结果显示,模型在进行训练后判断能力有所提高。 表3中的分析显示,与基线模型相比,在两种评估设置中,元奖励与强大的GPT-4判断模型之间的相关性显著提高。 这些结果表明,元奖励方法能够改进模型判断能力,使其评估结果与更复杂的语言模型GPT-4的评估结果更加接近。 此外,实验对比了模型判断结果与Open Assistant数据集中人类响应排名的相关性(表7),发现元奖励训练提高了与人类的判断相关性。 然而,这种改进在后续训练迭代中没有持续,可能是由于模型生成的响应与人类响应之间的分布差异导致的。 分析 长度控制机制 长度控制机制对于保持模型响应的全面性和简洁性之间的平衡至关重要。 实验比较了最后一次训练迭代中不同长度控制参数ρ的结果,如表4所示: ρ = 0,相当于在偏好数据选择中不进行任何长度控制。 正如预期的那样,这种训练方式使得模型生成的响应变得过于冗长,LC胜率降低。 使用外部奖励模型进行训练 元奖励机制让模型自己作为judge,来评估其自身的响应;实验尝试了使用强大的外部奖励模型Starling-RM-34B作为对比。 然而,结果发现StarlingRM-34B未能在第一次迭代中提高AlpacaEval的LC胜率(24.63% vs. 27.85%),这可能是由于其长度偏见。 meta-judge偏见 在元奖励训练的第一次迭代之后,meta-judge几乎总是更倾向于更高分数的判断,如表5所示。 这种分数偏见显著地将判断的评分分布向满分5分倾斜。对于位置偏见,我们也看到在训练过程中有增加的趋势,特别是在比较两个相同分数的判断时。 判断评分变化:为了调查在元奖励训练迭代过程中判断评分分布的变化,实验使用与奖励建模评估相同的验证提示。 使用Llama-3-8B-Instruct在每个提示上生成7个响应,然后为每个响应生成11次判断。图5是评分分布的可视化,密度是使用高斯核密度估算的。 可见,使用meta-judge训练判断进一步增加了其生成高分的可能性。 然而,判断训练的前两次迭代使其倾向于分配4.5、4.75、4.9的分数,根据根据指示这些分数应该是整数。 尽管这些是高分,但它们提供了更细致的区分能力,以区分不同质量的响应。 结论 实验提出了一种新机制,通过使用meta-judge为作为judge的模型分配元奖励(meta-rewards),从而提高模型的评判能力。 这解决了自奖励(Self-Rewarding)框架的一个主要限制,即缺乏对模型评判能力的训练。 为了使元奖励训练(Meta-Rewarding training)更加有效,实验还引入了一种新的长度控制技术,以缓解在使用AI反馈进行训练时出现的长度爆炸问题。 通过自动评估基准AlpacaEval、Arena-Hard和MT-Bench,元奖励方法的有效性也得到了验证。 值得注意的是,即使在没有额外人类反馈的情况下,这种方法也显著改进了Llama-3-8B-Instruct,并超越了依赖大量人类反馈的强基线方法自奖励(Self-Rewarding)和SPPO。 此外,评估模型的评判能力时,它在与人类评判和强大的AI评判(如 gpt-4-1106-preview)的相关性上表现出显著的改进。 总体而言,研究结果提供了有力的证据,证明无需任何人类反馈的自我改进模型是实现超级对齐(super alignment)的一个有前途的方向。 参考资料: https://arxiv.org/pdf/2407.19594

GPT-4o版「Her」终于来了!讲笑话、学猫叫,AI女友能有多撩人?

GPT-4o语音功能终于如期而至,科幻版Her走进现实!一些灰度测试到的网友们已经玩疯了,不过,OpenAI目前只给了4种预设语音。另外,GPT-4o新模型的输出token也暴涨16倍至64K。 奥特曼的承诺,终于兑现了。 赶在7月结束前,GPT-4o语音模式终于开启了灰度测试,一小部分ChatGPT Plus用户已经拿到了尝鲜入场券。 如果打开ChatGPT App之后看到了下面这个界面,恭喜你成为了首批幸运儿。 OpenAI称,高级语音模式提供了更加自然、实时对话,可以随意打断,甚至它还可以感知、回应你的情绪。 预计在今年秋季,所有ChatGPT Plus用户,都能用上这个功能。 另外,视频和屏幕共享更强大的也在稍后推出。也就是,开启摄像头,就能和ChatGPT「面对面」聊天了。 一些被灰度到的网友们纷纷开启测试,发现了GPT-4o语音模式的诸多用例。 这不,有人就让它充当「二外教练」,教自己练习口语。 ChatGPT在下面的教学中,帮助网友纠正了Croissant(羊角面包)、Baguette(法式长棍)的发音。 与此同时,GPT-4o的输出token暴涨了16倍,从最初4000个token增加到64000个token。 这是OpenAI最近在官方网页中,悄然推出的测试版新模型gpt-4o-64k-output-alpha。 更长的输出token,就意味着,一次性可以得到大约4个完整的长篇电影剧本。 Her已来 之所以现在才放出GPT-4o语音功能,是因为过去几个月里,OpenAI一直对其进行安全性、质量测试。 他们与100+红队人员,就45种语言对GPT-4o语音能力进行了测试。 为保护人们的隐私,团队训练模型只使用4种「预设声音」说话。 他们还创建了一个系统,去阻止在这4种声音之外,其他声音的输出。 此外,内容过滤也是必不可少,团队还采取措施阻止暴力、有关版权内容的生成。 OpenAI预告,计划在8月初,会发布一份关于GPT-4o能力、局限性、安全评估的详细报告。 全网实测 下面是网友分享的GPT-4o语音模式的一些案例。 ChatGPT可以表演节奏口技。 ChatGPT还可以以害羞、生气、更愤怒的语气讲出了关于啤酒的笑话。 还有网友专为ChatGPT讲了一个笑话「为什么科学家不相信Adam-Atom,因为它们构成了一切」。 ChatGPT不失尴尬地笑了起来。 更搞笑的是,ChatGPT学起猫叫还是有一套的。 有人经过一番测试下来,发现ChatGPT高级语音模式非常快,回答几乎没有延迟。 当被要求模仿一些声音时,它总是可以真实复刻出声音。而且不同口音,也可以模仿出来。 下面这个视频中,展示了AI充当足球比赛解说员的场景。 ChatGPT用中文讲故事,也很生动。 OpenAI虽然声称,视频和屏幕共享功能稍后推出,不过已经有网友先用上了。 网友有一只猫咪新宠,为它搭建了小窝,准备了吃食,但不知道怎么样,于是就问问ChatGPT。 在视频的对话中,网友向它展示了猫咪的屋子,ChatGPT看过后评价道,「一定非常舒适」,并关心猫咪如何。 网友表示,它目前为止还没有吃东西,看起来有点担心。ChatGPT安慰道,「这很正常,对于猫咪来说需要适应的时间」。 可以看出,整个问答过程非常流畅,给人一种与真人交流的感受。 网友还翻出了日语版界面游戏机,但是自己又不会日语。 这时,他一边向ChatGPT展示游戏界面,一边让其帮自己做翻译,最后胡一起通关游戏。 不得不说,有了视觉+语音模式的加持,ChatGPT强了很多。 GPT-4o Long Output悄悄上线,输出高达64K 另外,支持更大token输出的GPT-4o随之而来。 就在昨天,OpenAI正式宣布向提供测试者GPT-4o Alpha版本,每次请求支持最多输出64K token,相当于200页小说。 测试者可以从「gpt-4o-64k-output-alpha」,访问GPT-4o的长输出功能。 不过,新模型的价格再次刷新天花板。每百万输入token 6美元,每百万输出token 18美元。 虽说输出token是GPT-4o的16倍,但价格也涨了3美元。 这么一比,果然还是gpt-4o-mini价格香! 研究员Simon Willison表示,长输出主要用于数据转换用例。 比如,将文档从一种语言翻译成另一种语言,或从文档中提取结构化数据,几乎每个输入token都需要在输出的JSON中使用。 在此之前,他所知道的最长输出模型是GPT-4o mini,为16K token。 为什么推出更长输出的模型? 显然,更长的输出,可以让GPT-4o提供更全面、细致的响应,对于一些场景非常有帮助。 比如,编写代码、以及对写作的改进。 这也是基于用户的反馈——需要更长输出内容才能满足用例,OpenAI才做出的调整。 上下文和输出之间的区别 GPT-4o自推出以来,便提供了最大128K的上下文窗口。而对于GPT-4o Long Output,最大上下文窗口仍然是128K。 那么,OpenAI如何在保持整体上下文窗口为128K的情况下,将输出token数量从4,000增加到64,000呢? 这是因为,OpenAI在最初就限制了输出token数量,最大为4000个token。 这意味着,用户可以在一次交互中最多以124,000个token作为输入,也最多只能得到4000个输出token。 当然,你也可以输入更多token,那就意味着输出token更少了。 毕竟长下文长度(128K)就固定在那里,不管输入怎么变,输出token也不会过4000。 而现在,OpenAI将输出token长度限制在64,000 token,也就是说,你可以比以往多输出16倍的token。 毕竟,输出计算量更大,价格涨幅也更大。 同样,对于最新的GPT-4o mini,上下文也是128K,但最大输出已提升至16,000个token。 那么,用户可以提供最多112,000个token作为输入,最终得到最多16,000个token的输出。 总的来说,OpenAI在这里提供了一个方案,限制输入token,以获取LLM更长的响应,而不是直接扩大上下文长度。 而市面上其他模型,长的都已经超过百万了(Gemini),稍微短一些的也有200K(Claude);甚至有的模型输出都已经达到了200K,而OpenAI还在这儿抠抠搜搜。 这也就把难题扔给了开发者:想要输入多,那就得接受输出少;想要输出多,那就得输入少一些。 具体怎么衡量,看你们自己愿意牺牲哪一个了…… 参考资料: https://x.com/OpenAI/status/1818353580279316863 https://x.com/tsarnick/status/1818402307115241608 https://x.com/kimmonismus/status/1818409637030293641 https://www.reddit.com/r/singularity/comments/1eg51gz/chatgpt_advanced_audio_helping_me_pronouce/ https://venturebeat.com/ai/openai-launches-experimental-gpt-4o-long-output-model-with-16x-token-capacity/

零样本即可时空预测!港大、华南理工等发布时空大模型UrbanGPT | KDD 2024

UrbanGPT是一种创新的时空大型语言模型,它通过结合时空依赖编码器和指令微调技术,展现出在多种城市任务中卓越的泛化能力和预测精度。这项技术突破了传统模型对大量标记数据的依赖,即使在数据稀缺的情况下也能提供准确的预测,为城市管理和规划提供了强大的支持。 时空预测技术致力于深入分析和预测动态的城市环境,它不仅关注时间的变化,也考虑空间的布局。这项技术的目标是揭示城市生活中交通、人口迁移和犯罪率等各个方面的未来趋势和模式。尽管许多研究集中于利用神经网络来提高时空数据预测的准确性,但这些方法通常需要大量的训练数据来生成可靠的时空特征。 然而,在实际的城市监测场景中,数据往往不足,特别是在某些情况下,收集有标记的数据变得非常困难,这进一步加剧了挑战。因此,开发一个能够适应不同时空背景并具备强大泛化能力的模型显得尤为关键。 受到大型语言模型(LLMs)在多个领域的显著进展的启发,香港大学、华南理工大学等机构的研究人员发布了一个全新的时空大语言模型UrbanGPGT,将时空依赖的编码器和指令微调技术相结合,其目标是开发一个能够广泛适用于城市任务的时空大型语言模型。 项目链接:https://urban-gpt.github.io/ 代码链接:https://github.com/HKUDS/UrbanGPT 论文链接:https://arxiv.org/abs/2403.00813 视频展示:https://www.bilibili.com/video/BV18K421v7ut 这种结合使得模型能够深入理解时间和空间的复杂关系,并在数据有限的情况下提供更全面和精确的预测。 为了测试这一方法的有效性,我们在多个公共数据集上进行了广泛的实验,这些实验涉及多种时空预测任务。实验结果一致显示,UrbanGPT 在性能上始终超越了现有的顶尖模型。这些成果证明了在数据标记较少的情况下,利用大型语言模型进行时空学习的巨大潜力。 概述 现有挑战 C1. 标签数据的稀缺性与重新训练成本高昂: 尽管现有的时空神经网络在预测准确性方面表现出色,但它们对大量标注数据的依赖性极大。 在实际的城市监测环境中,数据的稀缺性是一个显著的障碍。例如,考虑到成本问题,在整个城市范围内部署传感器来监测交通流量或空气质量是不现实的。此外,现有的模型在面对新的地区或城市预测任务时,往往缺乏足够的泛化能力,需要重新训练才能生成有效的时空特征。 C2. 大型语言模型和现有时空模型在零样本场景下的泛化能力不足: 如图2所示,大型语言模型LLaMA能够根据输入文本推断流量模式。然而,它在处理具有复杂时空依赖性的数字时间序列数据时,有时会出现预测失误。 与此同时,虽然预训练的基线模型在编码时空依赖关系方面表现良好,但它们可能会因为过度适应源数据集而在零样本场景中表现不佳。 C3. 将大型语言模型的推理能力扩展到时空预测领域: 时空数据的独特性质与大型语言模型中编码的知识之间存在显著差异。如何缩小这种差异,进而构建一个在广泛的城市任务中具有卓越泛化能力的时空大型语言模型,是一个亟待解决的重要问题。 图1:与LLM和时空图神经网络相比,UrbanGPT 在零样本场景下有着更好的预测性能 现有挑战 (1)据我们了解,这是首次尝试创建一个能够跨多个数据集预测各种城市现象的时空大型语言模型,特别是在训练数据有限的情况下。 (2)本文介绍了一个名为UrbanGPT的时空预测框架,它允许大型语言模型深入理解时间和空间之间的复杂联系。通过将时空依赖编码器与指令微调技术紧密结合,有效地将时空信息融入语言模型中。 (3)在真实世界数据集上进行的广泛实验验证了UrbanGPT在零样本时空学习环境中的卓越泛化能力。这些结果不仅展示了模型在预测和理解时空模式方面的高效性,还证明了其在缺乏样本的情况下依然能够提供准确的预测。 方法 图2:UrbanGPT 整体框架 时空依赖编码器 尽管大型语言模型在处理语言文本方面取得了显著成就,但它们在解析时空数据中的时序变化和动态模式时仍存在挑战。 为了应对这一问题,本研究提出了一种创新的方法,即整合时空依赖编码器,以提升大型语言模型在捕捉时空上下文中的时间序列依赖性的能力。 具体来说,我们设计的时空编码器由两个核心组件构成:一个是门控扩散卷积层,另一个是多层次关联注入层。 上式 为初始化时空嵌入,从原始时空数据中获取。Er’是Er的切片,用于进行残差操作以缓解梯度消失。 我们使用一维扩散卷积来编码时间关联。 Sigmoid 激活函数δ 用于控制多层卷积运算的信息保留程度。 经过门控时间扩展卷积层的处理,我们能够精确地捕捉到连续多个时间步长内的时间序列依赖性,进而生成丰富的时间特征表示。这些表示涵盖了多层次的时间依赖关系,揭示了不同粒度级别的时间演变模式。 为了完整地保留这些时间信息,我们引入了一种多层次关联注入层,该层特别设计用于捕捉并整合不同层次之间的相互联系: 其中是形如的卷积核,在通过L层的编码处理之后,我们利用一个简单的线性层将门控扩散卷积层和多层次关联注入层的输出进行整合,最终生成的时空依赖性特征表示为 为应对可能在各种城市场景中出现的复杂情况,本文设计的时空编码器在处理空间相关性时不依赖于特定的图结构。这是因为在零样本预测环境中,实体间的空间联系往往是未知的或难以预测的。这样的设计使得UrbanGPT能够在广泛的城市应用场景中保持其适用性和灵活性。 时空指令微调框架 时空数据-文本对齐 为了使语言模型能够深入理解时空动态,确保文本内容与时空数据的一致性是关键。这种一致性使得模型能够整合多种数据类型,生成更加丰富的数据表示。通过将文本内容与时空领域的上下文特征相结合,模型不仅能够捕捉到补充性的信息,还能够提炼出更高层次的、具有更强表现力的语义特征。 为了实现这一点,本文采用轻量对齐模块来投影时空依赖性表示。 投影操作采用线性层参数进行,其中dL表示大语言模型常用的隐藏维度。所得到的投影 ,在指令中使用特殊的标记表示为:,,…,,。在这里, 和 是用来标记时空信息起始和终止的特殊符号,它们可以通过扩展词汇库的方式被纳入到大型语言模型中。 占位符 代表时空标记,它对应于隐藏层中的向量 H。利用这种技术,模型能够识别时空依赖关系,这显著增强了其在城市环境中进行时空预测任务的能力。 时空提示指令 在进行时空预测时,时间和空间数据都蕴含着关键的语义信息,这些信息对于模型捕捉特定情境下的时空规律至关重要。 比如,交通流量在早晨和高峰时段会有显著变化,商业区与住宅区的交通模式也各有不同。因此,将时间与空间信息作为提示文本引入时空预测任务,可以显著提升模型的预测效果。我们利用大型语言模型在文本理解方面的专长来处理这些信息。 在UrbanGPT的架构中,我们整合了不同粒度的时间数据和空间细节,作为大型语言模型的指令输入。时间信息涵盖了一周中的日期和具体时间点,而空间信息则包括城市区域、行政区划以及周边的兴趣点(POI)等,如图3所示。 通过整合这些多样化的元素,UrbanGPT能够深入识别并理解在复杂时空背景下,不同区域和时间段的时空动态,进而提升其在零样本情况下的推理能力。 图3: 编码时间和位置感知信息的时空提示指令 大语言模型的时空指令微调 在利用指令微调大型语言模型(LLMs)生成时空预测的文本描述时,面临两大挑战。一方面,时空预测通常基于数值型数据,这些数据的结构和模式与自然语言处理中的语言模型所擅长的语义和句法关系不同。 另一方面,LLMs在预训练阶段通常采用多分类损失函数来预测词汇,这导致其生成的是词汇的概率分布,而时空预测任务则需要连续值的输出。 为了克服这些问题,UrbanGPT采取了一种创新的方法。它不是直接预测未来的时空值,而是生成辅助性的预测标记。这些标记随后通过一个回归层处理,将模型的隐藏层表示转换为更精确的预测值。这种方法使得UrbanGPT能够更有效地进行时空预测。 上式中预测标记的隐藏表征用表示,其中预测标记可通过扩充LLMs词表的方式引入。W1,W2,W3为回归层的权重矩阵,[⋅,⋅]为拼接操作。 实验 零样本预测性能 相同城市内未见区域的预测 在跨区域预测中,我们利用同一城市中某些区域的数据来预测模型未接触过的其他区域的未来状况。通过深入分析模型在此类跨区域预测任务中的表现,我们注意到: (1)卓越的零样本预测能力。表1中的数据展示了所提出模型在不同数据集上的回归和分类任务中超越基线模型的优异表现。UrbanGPT的出色表现主要归功于两个核心要素。 i)时空数据-文本对齐。将时空上下文信号与语言模型的文本理解能力对齐,对模型的成功至关重要。这种整合使得模型能够充分利用编码自时空信号的城市动态信息,同时结合大语言模型对文本上下文的深入理解,从而扩展了模型在零样本场景下的预测能力。 ii)时空指令的微调。通过自适应调整,LLMs能够更有效地吸收指令中的关键信息,提升其对空间和时间因素复杂关系的理解。UrbanGPT通过将时空指令微调和时空依赖编码器相结合,成功地保留了通用且可转移的时空知识,实现了在零样本场景中的准确预测。 (2)对城市语义的深入理解。城市语义提供了对空间和时间特性的深刻洞察。通过在多种数据集上训练模型,增强了其对不同时间段和地理位置的时空动态的理解。 相比之下,传统的基准模型通常更注重编码时空依赖关系,而忽略了区域、时段和数据类型之间的语义差异。通过将丰富的语义信息融入UrbanGPT,我们显著提升了其在未见过的区域中进行精确零样本预测的能力。 (3)在稀疏数据环境中,提升预测性能。在数据点稀疏的环境中预测时空模式是一项挑战,主要因为模型在这种情况下容易过拟合。例如,在预测犯罪等场景中,数据往往较为稀疏,这使得基线模型在跨区域预测任务中表现不佳,召回率低,暗示可能存在过拟合的问题。 为解决这一挑战,我们的模型采用了一种创新的策略,将时空学习与大型语言模型相结合,并通过有效的时空指令微调方法进行优化。这种方法通过整合丰富的语义信息,增强了模型对时空数据的理解和表示能力,使其能够更有效地处理稀疏数据,并显著提高了预测的准确性。 表1:跨区域零样本预测场景性能比较 跨城市预测任务 为了检验模型在不同城市间的预测能力,我们选择了芝加哥的出租车数据集进行实验验证。(注意,此数据集并未在训练阶段使用)。如图4所示,测试结果表明,模型在所有时间点上均展现出优于对比方法的性能,这证明了UrbanGPT在跨城市知识迁移方面的有效性。 通过将时空编码器与时空指令微调技术相结合,模型能够捕捉到普遍性和特殊性并存的时空规律,从而进行更准确的预测。此外,模型通过综合考虑不同的地理位置、时间因素以及学习到的知识迁移,能够将不同功能区域和历史时期的时空模式联系起来。这种全面的时空理解为在跨城市场景中进行精确的零样本预测提供了关键的洞察。 图4:跨城市零样本预测场景性能比较 典型的有监督预测任务 本章节重点研究UrbanGPT在完全监督的预测环境中的表现,具体来说,我们通过使用时间跨度较大的测试数据集来评估模型在长期时空预测任务中的效果。例如,模型使用2017年的数据进行训练,并用2021年的数据进行测试。 测试结果显示,UrbanGPT在长期时间跨度的预测任务中明显优于基线模型,这突出了其在处理长期预测时的卓越泛化能力。这一特性减少了对频繁重新训练或增量更新的需求,使得模型更加适合实际应用场景。此外,实验结果还证实,引入额外的文本信息不仅不会影响模型的性能,也不会引入噪声,这进一步证明了利用大型语言模型来增强时空预测任务的有效性。 表2:端到端有监督设置下的预测性能评估 消融实验 (1)时空上下文的重要性:STC。 当从指示文本中移除时空信息后,模型的性能出现了下降。这可能是因为缺少时间信息,使得模型只能依赖时空编码器来处理与时间相关的特征并执行预测任务。同时,空间信息的缺失也限制了模型捕捉空间相关性的能力,使得分析不同区域的时空模式变得更加困难。 (2)多数据集指令微调的效果:Multi。 我们仅在NYC-taxi数据集上对模型进行训练。由于缺乏其他城市指标的信息,这限制了模型揭示城市时空动态的能力。因此,模型的表现欠佳。通过整合来自不同城市的不同时空数据,模型能够更有效地捕捉不同地理位置的独特特征和时空模式的演变。 (3)时空编码器的作用:STE。 当从模型中移除时空编码器时,结果表明,这种缺失显著降低了大语言模型在时空预测任务中的预测能力。这突出了时空编码器在提升模型预测性能中的关键作用。 (4)指令微调中的回归层:T2P。 我们指导UrbanGPT直接以文本格式输出其预测结果。模型的性能表现不佳,主要是因为在训练过程中依赖于多类损失函数进行优化,这导致了模型输出的概率分布与时空预测任务所需的连续值分布不匹配。为了解决这个问题,我们在模型中引入了一个回归预测器,显著提升了模型在回归任务中生成更准确数值预测的能力。 图5:UrbanGPT消融实验 模型鲁棒性研究 在本节中,我们对UrbanGPT在处理不同时空模式场景时的稳定性进行了评估。我们根据特定时间段内数值变化的幅度(如出租车流量)对区域进行区分。较小的方差通常意味着区域具有稳定的时间模式,而较大的方差则暗示着区域的时空模式更为多样化,常见于商业活跃区或人口密集区。 如图6所示,多数模型在方差较低的区域表现出色,因为这些区域的时空模式较为一致和可预测。然而,基线模型在方差较高的区域表现不佳,尤其是在方差处于(0.75, 1.0]区间的区域,这可能是因为基线模型在零样本场景下难以准确推断出这些区域复杂的时空模式。在城市管理中,如交通信号控制和安全调度等,对人口密集或繁华区域的准确预测至关重要。UrbanGPT在(0.75, 1.0]区间内显示出显著的性能提升,这证明了其在零样本预测场景中的强大能力。 图6:模型鲁棒性研究 案例研究 案例研究对不同大型语言模型在零样本时空预测场景中的有效性进行了评估,结果如表3所示。研究结果表明,各类LLMs能够根据提供的指令生成预测,这验证了提示设计的有效性。 具体来看,ChatGPT在预测时主要依赖于历史平均值,而没有明确地将时间或空间数据纳入其预测模型中。Llama-2-70b虽然能够分析特定时间段和区域,但在处理数值时间序列的依赖性时遇到了挑战,这影响了其预测的准确性。 相比之下,Claude-2.1能够更有效地总结和分析历史数据,利用高峰时段的模式和兴趣点来实现更准确的流量趋势预测。 而我们提出的UrbanGPT通过时空指令微调的方式,将时空上下文信号与大型语言模型的推理能力紧密结合,显著提升了预测数值和时空趋势的准确性。这些发现突出了UrbanGPT在捕捉普遍时空模式方面的潜力和有效性,使得零样本时空预测成为可能。 表3:不同的LLMs对纽约市自行车流量的零样本预测案例 总结与展望 本研究提出了UrbanGPT,这是一种具备在多样城市环境中良好泛化能力的时空大型语言模型。为了实现时空上下文信号与大型语言模型(LLMs)的无缝整合,本文提出了一种创新的时空指令微调方法。这种方法赋予了UrbanGPT在各种城市数据中学习普遍和可迁移的时空模式的能力。通过广泛的实验分析,证明了UrbanGPT架构及其核心组件的高效性和有效性。 尽管当前的成果令人振奋,但未来研究中仍有一些挑战需要克服。首先,我们将积极收集更多类型的城市数据,以增强UrbanGPT在更广泛城市计算领域的应用能力。其次,理解UrbanGPT的决策机制同样重要。尽管该模型在性能上表现出色,但提供模型预测的可解释性也是未来研究的关键方向。未来的工作将致力于使UrbanGPT能够解释其预测结果,从而增加其透明度和用户信任。 参考资料: https://arxiv.org/abs/2403.00813

万字技术干货!LLM工程师必读量化指南,可视化图解揭秘大模型如何压缩

面对LLM逐渐膨胀的参数规模,没有H100的开发者和研究人员们想出了很多弥补方法,「量化」技术就是其中的一种。这篇可视化指南用各种图解,将「量化」的基本概念和分支方法进行了全方位总结。 大语言模型(LLM)通常过于庞大,无法在消费级硬件上运行。这些模型的参数可能超过数十亿,通常需要显存较大的GPU来加速推理过程。 因此,越来越多的研究开始关注如何缩小模型,比如改进训练方法或使用适配器。该领域的一项主要技术被称为量化(quantization)。 ML工程师Maarten Grootendorst撰写了一篇博客文章,在语言建模背景下专门介绍了量化技术,并通过可视化的方法逐一探索相关概念,以帮助我们建立对该技术的直观理解。 在这篇博文中,Maarten将探讨各种方法、使用案例以及量化背后的原理。 文章目录以及涵盖内容如下图所示,主要介绍了训练后量化(PTQ)以及量化感知训练(QAT)两种方法,建议有AI基础的读者直接跳转至对称量化部分: 第一部分:LLM的「问题」 「大语言模型」就是大在模型参数量上,规模通常达到数十亿的级别(其中主要是权重)。 这些参数不仅存储成本相当高,推理阶段的计算量也很大。 在推理过程中,激活值是输入和权重的乘积,因此权重数量越多,激活值也会越大。 因此,我们希望尽可能高效地表示数十亿个值,从而尽可能减少存储参数所需的空间。 让我们从头开始,探索数值是如何表示的,然后再进行优化。 如何表示数值 数值存储的形式通常是浮点数(floting point number,或简称为floats):一个带有小数点的正数或负数。 这些值由每一位(bit)上的二进制数字表示。 IEEE-754标准描述了每一位上的数字如何表示具体数值,具体来说共有三种映射:符号、指数或小数(尾数)。 这三个部分可以结合起来,根据一组bit值计算出所表示的数值: 使用的位数越多,表示的数值值通常越精确,比如FP32形式就能比FP16精确到小数点后更多位数: 内存限制 可用的位数越多,不仅数值越精确,可表示的数值范围也越广。 给定位数和表示形式,可表示的数值区间称为动态范围(dynamic range),而两个相邻值之间的距离称为精度(precision)。 这种表达形式的一个巧妙特性在于,我们可以计算出设备需要多少内存来存储某个给定值。 由于内存中的每个字节含有8位,我们可以为大多数形式的浮点数创建一个基本公式—— 在实际应用中,还有更多因素会影响推理过程中所需的显存/内存大小,例如上下文大小和模型架构 现在假设我们有一个包含700亿参数的模型。大多数模型本身使用32位浮点数(通常称为全精度)表示,这需要280GB的内存来加载模型。 但如果能将所有参数用16位浮点数表示,所需的内存大小就可以直接减少一倍。 因此,将模型参数的表示位数最小化(不仅是推理,还有训练过程)是非常有吸引力的。 然而,这种方法不是没有代价的。随着表示位数减少导致精度降低,模型的准确性通常也会下降。 我们希望在保持准确性的同时减少表示数值的位数……此时,量化技术就派上用场了。 第二部分:量化入门 现在我们知道,量化的目的是将模型参数的精度从较高位宽(如32位浮点数)降低到较低位宽(如8位整数)。 在减少表示原始参数的位数时,通常也会伴随一些精度(粒度,granularity)的损失。 为了让这种效果更直观,我们可以用照片颜色作为类比。比如,选择任意图像(左图),但只用8种颜色表示(右图): 注意看,放大的曲奇饼干看起来比原来更有「颗粒感」。 与之相似,量化的主要目标是减少表示原始参数所需的比特数(颜色),同时尽可能保留原始参数的精度。 常见数据类型 首先,让我们看看常见的数据类型以及使用它们替代32位(称为全精度或FP32)表示的影响。 FP16 首先是一个从32位到16位(称为半精度或FP16)浮点数的例子: FP16可取的数值范围比FP32小得多。 BF16 为了获得与原始FP32相似的数值范围,引入了bfloat 16作为一种「截断的FP32」类型: BF16使用的位数与FP16相同,但增加了指数位,因此能取到更广泛的数值范围,常用于深度学习领域。 INT8 进一步减少位数时,就更接近整数而非浮点数的表示方法。比如,从FP32到只具有8位的INT8,只有原始位数的1/4: 每次减少位数时,都会进行映射,将初始的FP32表示「压缩」到较少的位数中。 但在实际操作中,我们不需要将整个FP32范围[-3.4e38, 3.4e38]全部映射到INT8中。我们只需找到一种方法,将实际模型参数的数据范围映射到INT8中。 常见的压缩/映射方法可以有对称量化和非对称量化两种,都属于线性映射。 接下来将要探讨的就是从FP32到INT8的量化方法。 对称量化 在对称量化中,原始浮点值的范围被映射到量化空间中以零为中心的对称范围,量化前后的范围都以零为中点。 这意味着,原来浮点空间中的零,映射到量化空间后也恰好是零。 一种对称量化的典型例子是最大绝对值(absmax)量化。 给定一个数值列表,我们取其中最高的绝对值(α)作为执行线性映射的范围。 [-127, 127]表示受限范围(restricted range),未受限范围是[-128, 127],取决于量化方法 由于这是一个以零为中心的线性映射,公式很简单。 首先用以下公式计算比例因子(s): – b是我们要量化到的字节数(8) – α是最高的绝对值 然后,我们使用s来量化输入x: 如上图所示,最大绝对值α为10.8,将FP32映射到INT8时,即有如下公式: 如果要恢复原始的FP32值,也可以使用先前计算的比例因子(s)来进行反量化。 先量化,再反量化以恢复原始值,全过程如下所示: 可以看到某些值,如3.08和3.02,在量化为INT8时都是36。因此进行反量化恢复到FP32时,它们失去了一些精度并且不再可区分。 这种原始值和反量化值之间的差异被称为量化误差。通常,量化结果的位数越少,误差越大。 非对称量化 与对称量化不同,非对称量化不是以零为中心的对称。相反,它将浮点范围内的最小值(β)和最大值(α)分别映射到量化范围的最小值和最大值。 这里我们探讨的方法被称为零点量化(zero-point quantization)。 注意0的位置是如何移动的。这就是为什么它被称为非对称量化。在范围[-7.59, 10.8]中,最大值和最小值到0的距离不同。 由于零点位置的偏移,我们必须计算INT8范围内的零点才能执行线性映射。与之前一样,我们还必须计算比例因子(s),但使用INT8范围的差值[-128, 127]。 由于需要在INT8范围内计算零点(z)以移动权重,这有点复杂。 像之前一样,让我们填入公式: 为了将量化后的值从INT8反量化回FP32,我们需要使用先前计算的比例因子(s)和零点(z)。 除此之外,反量化很简单: 当我们将对称和非对称量化并排放置时,可以快速看出两种方法之间的区别: 在上图中,我们能看到对称量化的零中心特性与非对称量化的偏移。 范围映射和剪裁(Clipping) 在之前的例子中,我们探讨了如何将给定向量中的值范围映射到低位表示。虽然这样可以映射整个向量值的范围,但有一个主要缺点,即异常值(outlier)。 想象一下,你有一个包含以下值的向量: 一个值比其他所有值都大得多,可以被认为是异常值。如果我们映射整个向量的范围,所有小值将被映射到相同的低位表示,并失去它们的区分度: 这是之前使用的absmax方法。如果不进行剪裁,非对称量化也会发生同样的情况 相反,我们可以选择剪裁某些值。剪裁是指设置原始值的不同动态范围,使所有异常值都被设为相同的值。 在下面的例子中,我们手动将动态范围设置为[-5, 5],所有超出该范围的值将被映射到-127或127,无论它们的实际值是多少: 这种方法的主要优点是非异常值的量化误差显著减少。然而会导致异常值的量化误差增加。 校准(Calibration) 上面的例子中,我们随机将动态范围设置为[-5, 5],但其实应该通过「校准」过程做出决定,找到一个合适的范围,包含尽可能多的值,同时最小化量化误差。 校准步骤的具体执行对于不同类型的参数是不一样的。 权重(和偏置) 我们可以将大语言模型(LLM)的权重和偏置(weights & biases)视为静态值,因为它们在运行模型之前是已知的。例如,Llama 3的约20GB文件大部分由其权重和偏置组成。 由于偏置变量的数量(数百万)显著少于权重(数十亿),因此偏置通常保持较高精度(如INT16),而量化的主要工作集中在权重上。 对于已知的静态权重,选择范围的校准技术包括: – 手动选择输入范围的百分位数 – 优化原始权重和量化权重之间的均方误差(MSE) – 最小化原始值和量化值之间的熵(KL散度) 例如,选择一个百分位数,会导致类似于我们之前看到的剪裁行为。 激活值 在整个大语言模型中不断更新的输入通常被称为激活值(activations)。 之所以被称为激活值,因为它们通常会经过一些激活函数,如sigmoid或relu 与权重不同,激活值在推理过程中随输入数据而变化,因此难以准确量化。 由于这些值在每个隐藏层之后都会更新,因此在推理阶段,只有输入数据通过模型后才能得知它们的具体数值。 总体来说,有两种方法用于校准权重和激活值,应用于模型的不同阶段: – 训练后量化(Post-Training Quantization,PTQ) – 顾名思义,即训练后进行的量化 – 量化感知训练(Quantization Aware Training,QAT) – 训练/微调期间的量化 第三部分:训练后量化(PTQ) 训练后量化(PTQ)是最流行的量化技术之一。它是在模型训练完成后,对模型的参数(包括权重和激活值)进行量化。 权重的量化可以采用对称量化或非对称量化的方法。 然而,激活值的量化需要经过推理阶段来获取其潜在分布,因为我们事先并不知道它们的范围。 激活值的量化有两种形式: – 动态量化(dynamic quantization) – 静态量化(static quantization) 动态量化 数据通过隐藏层后,其激活值会被收集,比较出每一层的最大值(α)和最小值(β): 然后利用这些激活值的分布来计算量化输出所需的零点(zeropoint,z)和比例因子(scale factor,s)值: 每次数据通过新的网络层时,这个过程都会重复。因此,每一层都有其独立的z和s值,从而使用不同的量化方案。 静态量化 与动态量化不同,静态量化并不是在推理过程中计算零点(zeropoint,z)和比例因子(scale factor,s),而是在推理之前计算这些值。 为了找到这些值,我们会使用一个校准数据集,并将其输入模型以收集这些潜在的激活值分布。 收集到这些分布之后,就可以计算出在推理过程中进行量化所需的s和z值。 在实际推理时,不会重新计算s和z值,而是在所有激活中全局使用它们来对其进行量化。 总体来说,动态量化为每个隐藏层计算s和z值,往往更准确。然而,这可能会增加计算时间,因为这些值需要在每次推理时计算。 相反,静态量化虽然不如动态量化准确,但速度更快,因为它已经预先知道用于量化的s和z值。 4-bit量化领域 低于8-bit的量化一直是一个挑战,因为每减少一位,量化误差就会增加。幸运的是,有几种巧妙的方法可以将位数减少到6、4,甚至2-bit(尽管通常不建议将位数降到低于4-bit)。 我们将探讨在HuggingFace上常见的两种方法: – GPTQ(全模型在GPU上运行) – GGUF(可能将层卸载到CPU上) GPTQ GPTQ可以说是实际应用中最著名的4-bit量化方法之一。 它使用非对称量化,并逐层进行处理,每层独立处理后再继续处理下一层: 在这个逐层量化过程中,它首先将层的权重转换为逆Hessian矩阵。逆Hessian矩阵是模型损失函数的二阶导数,表示模型输出对每个权重变化的敏感性。 简单来说,它本质上展示了每个层中权重的重要性(逆重要性)。 Hessian矩阵中较小值的权重更为重要,因为这些权重的微小变化可能导致模型性能的显著变化。 在逆Hessian矩阵中,较低的值表示更「重要」的权重 接下来,我们量化并反量化权重矩阵的第一行: 这一过程使我们能够计算量化误差(q),我们可以使用之前计算的逆Hessian值(h_1)来加权这个量化误差。 本质上,我们是在基于权重的重要性创建加权量化误差: 接下来,我们将这个加权量化误差重新分配到该行的其他权重上。这有助于保持网络的整体功能和输出。 例如,如果对第二个权重(即x_2=0.3)进行此操作,我们会将量化误差(q)乘以第二个权重的逆Hessian(h_2)加上去: 接下来,继续对给定行中的第三个权重进行相同的操作: 重复这个重新分配加权量化误差q的过程,直到所有值都被量化。 这个方法所以有效,是因为权重通常是相互关联的。因此,当一个权重有量化误差时,相关的权重会通过逆Hessian进行相应的更新。 GGUF 虽然GPTQ是一种很好的在GPU上运行整个大语言模型(LLM)的量化方法,但如果没有相应的硬件条件,也可以通过GGUF将LLM的任意层卸载到CPU上。 相当于同时用CPU和GPU运行模型,以弥补显存(VRAM)不足的情况。 量化方法GGUF经常更新,而且依赖于具体的量化位数,但基本原理如下。 首先,给定层的权重被分成「超级块」,每个「超级块」包含一组「子块」。从这些「子块」中,我们计算出比例因子(s)和α值: 为了量化给定的「子块」,可以使用之前提到的absmax量化,将给定的权重乘以比例因子(s_sub): 比例因子s_sub是使用「子块」中的信息计算的,但用「超级块」中的信息s_super进行量化: 总而言之,这种以块为单位的量化使用「超级块」的比例因子(s_super)来量化「子块」的比例因子(s_sub)。 每个比例因子的量化级别可能不同,「超级块」的比例因子通常比「子块」有更高的精度。 为了说明这一点,让我们探讨几个量化级别(2-bit、4-bit和6-bit): 根据量化类型,还需要一个额外的最小值(m)来调整零点,这些与比例因子(s)一样被量化 第四部分:量化感知训练(QAT) 第三部分讲述了如何在训练后对模型进行量化。这种方法的缺点在于,没有考虑到实际的训练过程。 这就是量化感知训练(QAT)派上用场的地方。与训练后量化(PTQ)不同,QAT的目标是在训练中学习量化过程。 QAT往往比PTQ更准确,因为在训练过程中已经考虑了量化。其工作原理如下: 在训练过程中,引入了所谓的「假」量化。比如先将权重量化为INT4,然后再反量化回FP32: 这一过程让模型在训练阶段进行损失计算和权重更新时,就已经考虑到了量化误差。 如下图所示,QAT尝试探索「宽」极小值情况下的损失值,以减少量化误差,因为「窄」极小值往往会导致更大的量化误差。 假设在反向传播过程中没有考虑量化,梯度下降过程就会选择损失值最小的权重。然而,如果它处于「窄」极小值中,那将引入更大的量化误差。 相反,如果我们考虑量化,将在「宽」极小值中选择一个不同的更新权重,其量化误差要小得多。 因此,尽管PTQ方法在高精度(例如FP32)有较低的损失值,但QAT在低精度(例如INT4)下损失值也很低,这是我们所追求的。 1-bit时代:BitNet 之前我们看到,将量化精度降低到4-bit已经相当小了,但如果我们进一步降低呢? 这就是BitNet的用武之地,它将模型的权重表示为单个比特,即-1或1,通过将量化过程直接注入到Transformer架构中来实现这一点。 Transformer架构是大多数LLM的基础,由涉及线性层的计算组成: 这些线性层通常以更高的精度表示,如FP16,而且是大多数权重所在的位置。 BitNet用BitLinear层替换了这些线性层: BitLinear层的工作原理与普通线性层相同,用权重乘以激活值来计算输出。 但不同的是,BitLinear层仅用1位表示模型的权重,使用INT8表示激活值: BitLinear层像量化感知训练(QAT)一样,在训练期间执行一种「假」量化,以分析权重和激活值的量化效果: 让我们一步步地了解BitLinear。 权重量化 在训练过程中,权重以INT8存储,然后使用一种称为符号函数(signum function)的基本策略将其量化为1位。 本质上,它将权重的分布移动至以0为中心,然后将所有小于0的值分配为-1,将所有大于0的值分配为1: 此外,它还跟踪一个值β(平均绝对值),我们将在之后的反量化过程中使用。 激活值量化 为了量化激活值,BitLinear使最大绝对值方法(absmax)将激活值从FP16转换为INT8,因为它们需要以较高的精度进行矩阵乘法(×)。 此外,它还跟踪一个值α(最大绝对值),我们将在之后的反量化过程中使用。 反量化 我们跟踪了α(激活值的最大绝对值)和β(权重的平均绝对值),这些值将帮助我们将激活值反量化回FP16。 输出激活值使用{α, γ}重新缩放,以将其反量化到原始精度: 这个过程相对简单,并且允许模型仅用两个值表示,即-1或1。 通过这种方法,作者观察到,随着模型规模的增长,1位训练和FP16训练之间的性能差距越来越小。 然而,这仅适用于较大的模型(>30B参数),较小模型之间的差距仍然很大。 所有LLM都是1.58位 为了改善之前提到的扩展性问题,BitNet 1.58b被引入。 在这种新方法中,模型的每个权重不仅可以是-1或1,还可以取0,使每个变量成为三元值(ternary)。 有趣的是,仅仅是添加0这个简单的操作,就大大改进了BitNet,加速了计算过程。 0的力量 为什么添加0是一个重大改进呢? 这与矩阵乘法有关! 首先,让我们探讨一下矩阵乘法的基本工作原理。 当计算输出时,我们将权重矩阵与输入向量相乘。下面是权重矩阵的第一层的第一行乘法的可视化: 这种乘法涉及两个动作,将单个权重与输入相乘,然后将它们全部相加。 相比之下,BitNet 1.58b设法避免了乘法的动作,因为三值权重本质上告诉你以下内容: – 1:我想加上这个值 – 0:我不想要这个值 – -1:我想减去这个值 因此,如果你的权重被量化到1.58 bit,你只需要执行加法: 这不仅可以显著加快计算速度,还允许特征过滤。 将给定的权重设置为0就相当于忽略了这个输入,而不是像1-bit那样,表示加上或减去输入值。 量化 为了执行权重量化,BitNet 1.58b使用平均绝对值量化(absmean),这是我们之前见过的最大绝对值量化(absmax)的变体。 它只是压缩权重的分布并使用绝对均值(α)来量化值。然后将它们四舍五入为-1、0或1: 与BitNet相比,激活值量化是相同的,除了一个方面:不是将激活值缩放到范围[0, 2ᵇ⁻¹],而是使用最大绝对值方法缩放到[-2ᵇ⁻¹, 2ᵇ⁻¹]。 总结一下,1.58-bit量化主要涉及两个技巧: – 添加0以创建三值表示[-1, 0, 1] – 权重的绝对均值量化 BitNet论文中有这样的结论:「13B BitNet b1.58在延迟、内存使用和能耗方面比3B FP16 LLM更高效。」 论文地址:https://arxiv.org/abs/2402.17764 由于只有1.58个计算效率高的bit,我们得到了轻量级模型。 参考资料: https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization

iPhone可跑2B小钢炮!谷歌Gemma 2来袭,最强显微镜剖解LLM大脑

谷歌DeepMind的小模型核弹来了,Gemma 2 2B直接击败了参数大几个数量级的GPT-3.5和Mixtral 8x7B!而同时发布的Gemma Scope,如显微镜一般打破LLM黑箱,让我们看清Gemma 2是如何决策的。 谷歌DeepMind的小模型,又上新了! 就在刚刚,谷歌DeepMind发布Gemma 2 2B。 它是从Gemma 2 27B中蒸馏而来。 虽然它的参数只有2.6B,但在LMSYS竞技场上的得分,已经超越了GPT-3.5和Mixtral 8x7B! 在MMLU和MBPP基准测试中,它分别取得了56.1和36.6的优异成绩;比起前代模型Gemma 1 2B,它的性能超过了10%。 小模型击败了大几个数量级的大模型,再一次印证了最近业界非常看好的小模型方向。 谷歌在今天,一共公布了Gemma 2家族的三个新成员: Gemma 2 2B: 轻量级2B模型,在性能和效率之间实现了最大的平衡 ShieldGemma: 基于Gemma 2构建的安全内容分类器模型,用于过滤AI模型的输入和输出,确保用户安全 Gemma Scope: 一种可解释性工具,提供对模型内部运行机制的无与伦比的洞察 6月,27B和9B Gemma 2模型诞生。 自发布以来,27B模型迅速成为大模型排行榜上,排名前列的开源模型之一,甚至在实际对话中表现超过了参数数量大两倍的流行模型。 Gemma 2 2B:即刻在设备上使用 轻量级小模型Gemma 2 2B,是从大模型中蒸馏而来,性能毫不逊色。 在大模型竞技场LMSYS上,新模型取得令人印象深刻的1130分,与10倍参数的模型不相上下。 GPT-3.5-Turbo-0613得分为1117,Mixtral-8x7b得分为1114。 足见,Gemma 2 2B是最好的端侧模型。 有网友在iPhone 15 Pro上,让量化后的Gemma 2 2B在MLX Swift上运行,速度快到惊人。 具体来说,它能够在各种终端设备,包括手机、笔记本,甚至是使用Vertex AI和Google Kubernetes Engine(GKE)强大的云,皆能完成部署。 为了让模型加速,它通过NVIDIA TensorRT-LLM完成了优化,在NVIDIA NIM平台也可使用。 优化后的模型适用于各种平台部署,包括数据中心、云、本地工作站、PC 和边缘设备。 它还可以支持RTX、RTX GPU、Jetson模块,完成边缘化AI部署。 此外,Gemma 2 2B无缝集成了Keras、JAX、Hugging Face、NVIDIA NeMo、Ollama、Gemma.cpp等,并很快将与MediaPipe集成,实现简化开发。 当然,与Gemma 2一样,2B模型也同样可以用来研究和商用。 甚至,由于其参数量足够下,它可以在Google Colab的免费T4 GPU层上运行,降低了开发门槛。 目前,每位开发者都可以从Kaggle、Hugging Face、Vertex AI Model Garden下载Gemma 2的模型权重,也可在Google AI Studio中试用其功能。 仓库地址:https://huggingface.co/collections/google/gemma-2-2b-release-66a20f3796a2ff2a7c76f98f ShieldGemma:最先进的安全分类器 正如其名,ShieldGemma是最先进的安全分类器,确保AI输出内容具有吸引力、安全、包容,检测和减少有害内容输出。 ShieldGemma的设计专门针对四个关键的有害领域: – 仇恨言论 – 骚扰内容 – 露骨内容 – 危险内容 这些开源分类器,是对谷歌现有的负责任AI工具包中安全分类器套件补充。 该工具包包括一种,基于有限数据点构建针对特定策略分类器的方法,以及通过API提供的现成Google Cloud分类器。 ShieldGemma基于Gemma 2构建,是行业领先的安全分类器。 它提供了各种模型参数规模,包括2B、9B、27B,都经过英伟达速度优化,在各种硬件中可以高效运行。 其中,2B非常适合在线分类任务,而9B和27B版本则为对延迟要求较低的离线应用提供更高性能。 Gemma Scope:通过开源稀疏自编码器揭示AI决策过程 此次同时发布的另一大亮点,就是开源稀疏自编码器——Gemma Scope了。 语言模型的内部,究竟发生了什么?长久以来,这个问题一直困扰着研究人员和开发者。 语言模型的内部运作方式往往是一个谜,即使对于训练它们的研究人员,也是如此。 而Gemma Scope就仿佛一个强大的显微镜,通过稀疏自编码器 (SAEs) 放大模型中的特定点,从而使模型的内部工作更易于解释。 有了Gemma Scope以后,研究人员和开发者就获得了前所未有的透明度,能够深入了解Gemma 2模型的决策过程。 Gemma Scope是数百个适用于Gemma 2 9B和Gemma 2 2B的免费开放稀疏自动编码器 (SAE) 的集合。 这些SAEs是专门设计的神经网络,可以帮助我们解读由Gemma 2处理的密集、复杂信息,将其扩展成更易于分析和理解的形式。 通过研究这些扩展视图,研究人员就可以获得宝贵的信息,了解Gemma 2如何识别模式、处理信息、做出预测。 有了Gemma Scope,AI社区就可以更容易地构建更易理解、负责任和可靠的AI系统了。 同时,谷歌DeepMind还放出了一份20页的技术报告。 技术报告:https://storage.googleapis.com/gemma-scope/gemma-scope-report.pdf 总结来说, Gemma Scope有以下3个创新点—— 开源SAEs:超过400个免费提供的SAEs,覆盖Gemma 2 2B和9B的所有层 互动演示:在Neuronpedia上无需编写代码,即可探索SAE功能,并分析模型行为 易于使用的资源库:提供与SAEs和Gemma 2交互的代码和示例 解读语言模型内部的运作机制 语言模型的可解释性问题,为什么这么难? 这要从LLM的运行原理说起。 当你向LLM提出问题时,它会将你的文本输入转换为一系列「激活」。这些激活映射了你输入的词语之间的关系,帮助模型在不同词语之间建立联系,据此生成答案。 在模型处理文本输入的过程中,模型神经网络中不同层的激活代表了多个逐步高级的概念,这些概念被称为「特征」。 例如,模型的早期层可能会学习到像乔丹打篮球这样的事实,而后期层可能会识别出更复杂的概念,例如文本的真实性。 用稀疏自编码器解读模型激活的示例——模型是如何回忆「光之城是巴黎」这一事实的。可以看到与法语相关的概念存在,而无关的概念则不存在 然而,可解释性研究人员却一直面临着一个关键问题:模型的激活,是许多不同特征的混合物。 在研究的早期,研究人员希望神经网络激活中的特征能与单个神经元(即信息节点)对齐。 但不幸的是,在实践中,神经元对许多无关特征都很活跃。 这也就意味着,没有什么明显的方法,能判断出哪些特征是激活的一部分。 而这,恰恰就是稀疏自编码器的用武之地。 要知道,一个特定的激活只会是少数特征的混合,尽管语言模型可能能够检测到数百万甚至数十亿个特征(也就是说,模型是稀疏地使用特征)。 例如,语言模型在回答关于爱因斯坦的问题时会想到相对论,而在写关于煎蛋卷时会想到鸡蛋,但在写煎蛋卷时,可能就不会想到相对论了。 稀疏自编码器就是利用了这一事实,来发现一组潜在的特征,并将每个激活分解为少数几个特征。 研究人员希望,稀疏自编码器完成这项任务的最佳方式,就是找到语言模型实际使用的基本特征。 重要的是,在这个过程中,研究人员并不会告诉稀疏自编码器要寻找哪些特征。 因此,他们就能发现此前未曾预料过的丰富结构。 然而,因为他们无法立即知道这些被发现特征的确切含义,他们就会在稀疏自编码器认为特征「触发」的文本示例中,寻找有意义的模式。 以下是一个示例,其中根据特征触发的强度,用蓝色渐变高亮显示了特征触发的 Token: 用稀疏自编码器发现特征激活的示例。每个气泡代表一个 Token(单词或词片段),可变的蓝色说明了这个特征的存在强度。在这个例子中,该特征显然与成语有关 Gemma Scope有何独特之处? 比起此前的稀疏自编码器,Gemma Scope有许多独特之处。 前者主要集中在研究小型模型的内部工作原理或大型模型的单层。 但如果要把可解释性研究做得更深,就涉及到了解码大型模型中的分层复杂算法。 这一次,谷歌DeepMind的研究者在Gemma 2 2B和9B的每一层和子层的输出上,都训练了稀疏自编码器。 这样构建出来的Gemma Scope,总共生成了超过400个稀疏自编码器,获得了超过 3000万个特征(尽管许多特征可能重叠)。 这样,研究人员就能够研究特征在整个模型中的演变方式,以及它们如何相互作用,如何组合形成更复杂的特征。 此外,Gemma Scope使用了最新的、最先进的JumpReLU SAE架构进行了训练。 原始的稀疏自编码器架构,在检测特征存在与估计强度这两个目标之间,往往难以平衡。而JumpReLU架构,就能更容易地实现二者的平衡,并且显著减少误差。 当然,训练如此多的稀疏自编码器,也是一项重大的工程挑战,需要大量的计算资源。 在这个过程中,研究者使用了Gemma 2 9B训练计算量的约15%(不包括生成蒸馏标签所需的计算),将约20 PiB的激活保存到了磁盘(大约相当于一百万份英文维基百科的内容),总共生成了数千亿个稀疏自编码器参数。 参考资料: https://developers.googleblog.com/en/smaller-safer-more-transparent-advancing-responsible-ai-with-gemma/

GPU训Llama 3.1疯狂崩溃,竟有大厂用CPU服务器跑千亿参数大模型?

是时候用CPU通用服务器跑千亿参数大模型了! 马斯克19天建成由10万块H100串联的世界最大超算,已全力投入Grok 3的训练中。 与此同时,外媒爆料称,OpenAI和微软联手打造的下一个超算集群,将由10万块GB200组成。 在这场AI争霸赛中,各大科技公司们卯足劲加大对GPU的投资,似乎在暗示着拥有更多、更强大的GPU,就能让自己立于不败之地。 然而,这种对高端GPU的狂热追求,并非在所有情况下,都是完美无缺的解决方案。 Pytorch之父表示,技术报告中暗藏了很多基础设施的有趣细节,包括如何并行化,如何让系统更可靠等等 就拿稳定性来说,在Llama 3.1训练的54天里,Meta的1.6万块H100集群总共遇到了419次意外中断,相当于平均每3小时发生一次。 而在这之中,有148次(30.1%)是由于各种GPU故障引起的。 相比之下,由CPU故障引发的中断,只有2次。 另一方面,想要把Llama 3.1 405B跑起来,还得搭配2台8×H100的DGX工作站才行——即1280GB的显存。 曾经有位勇士尝试用一张4090运行,结果等了30分钟,模型才缓缓吐出一个「The」。 完整的回复,花了整整20个小时 熟悉模型的训练和推理的朋友都知道,这些事情一点都不奇怪。 集群搭建(GPU配置、网络设计、轨道优化等)、集群管理(实时监控、故障排除等)……个个都是「拦路虎」。 对于缺乏相关经验和资金的公司来说,该怎么办? 最近,浪潮信息的研发工程师,仅靠4颗CPU,就让千亿参数的「源2.0」在通用服务器上跑起来了! 面对用Java编写程序的代码任务,「源2.0」非常迅速地给出了结果。 再给它上一道推理题——船边挂着软梯,离海面2米,海水每小时涨半米,几小时海水能淹没软梯? 同样,AI几乎0延迟给出了详细的解题步骤和答案。 ‍ 用通用服务器运行千亿参数大模型,可谓是前无古人,这一领域的积累完全是空白,没有任何经验可借鉴。 浪潮信息,究竟是怎么做到的? 用4颗CPU,撬动千亿参数大模型 若要在单台服务器中,实现千亿参数大模型的推理,包含了2个主要阶段,均对计算能力提出了硬性需求。 首先,是预填充阶段,也叫做前向传播阶段。 这一阶段涉及到输入数据的处理、模型参数第一次读取。 比如,当你输入「给我写一篇有关AI的文章」提示,预填充阶段便会将问题中所有token、模型参数,一次性输入计算。 有时,这一输入可能是几个字,也可能是几千个字,或者是一本著作。 第一阶段的计算需求有多大,主要取决于我们输入的长度。 而在计算第一个token过程中,由于模型首次加载,会在内存中存放全部的权重参数,以及KV Cache等数据。 这是模型参数本身所占内存空间的2-3倍。 对于千亿参数模型来说,大量的参数和数据输入,需要在强大计算单元中处理。对此,它需要支持向量化指令集、矩阵计算指令集,来实现大量的矩阵乘法和张量运算。 其次,是解码阶段,即在问题全部输入之后,模型开始输出结果的阶段。 在这个阶段,对大模型唯一要求便是,输出尽可能快。同时,挑战不再是算力挑战,转而为「数据搬运」的挑战。 它包含了两部分「数据搬运」: 预填充阶段生成的大量KV Cache,需要从显存/内存,搬运到计算单元中(工作量非常大) 模型参数本身的搬运 这些搬运对大模型的计算和推理速度,起到了一个决定性的作用。数据搬运很快,LLM吐字的速度也会快。 LLM输出主要通过KV Catch,逐一生成token,并在每步生成后存储新词块的键值向量。 因此,千亿大模型的实时推理,服务器需要具备较高的计算能力,以及较高的存储单元到计算单元的数据搬运效率。 总而言之,在大模型推理的两阶段中,有着截然不同的计算特征,需要在软硬件方面去做协同优化。 GPU不是万能的 传统上,GPU因其具备优越的并行处理能力,一举成为了AI训练和推理的首选。 成本 然而,高端GPU服务器在市场中经常出现供不应求,极难获取的现象。 仅有资金雄厚的科技巨头们,诸如微软、谷歌,才能够承担起这笔费用。 另一方面,不仅买不起,更是用不起。 基于GPU的云服务租用,在推理任务中的代价却是高昂的。对于科研人员和应用厂商来说,需要实现更高的成本效益,就得另谋他路。 显存 此外,GPU最大的劣势之一在于,显存容量受限。 当前业界LLM的网络架构,已从GPT逐渐走向MoE。通向AGI的大模型参数规模,只会呈指数级增长。 这意味着,闭源/开源主流模型的尺寸只会越来越大,千亿参数,甚至万亿参数模型将会成为主流。 对于百亿参数模型,20-30GB显存就够了。然而,若想跑千亿参数,大约需要200-300GB的显存空间。 目前主流的AI芯片,显存通常只有几十GB,显然放不下这么大的模型。(目前最强的AI芯片也没还没达到200GB) 被低估的通用服务器 GPU不行,那就从CPU入手。 虽然目前还搞不定模型的大规模训练,但通用服务器在推理任务上,却意外有着不小的优势。 在具体实践的过程中,浪潮信息的工程师们分别从硬件资源和算法层面入手,攻克了一个个「拦路虎」。 超大内存+高速带宽 算力方面, 目前领先的服务器CPU都已经具备了AI加速功能。 类似于GPU的Tensor core,AMX高级矩阵扩展可以将低精度的计算做加速,编成指令集给CPU的核,利用专用的核做加速。 算法方面, 浪潮信息的通用服务器可同时支持PyTorch、TensorFlow等主流AI框架,以及DeepSpeed等流行开发工具,满足了用户更成熟、易部署、更便捷的开放生态需求。 通信方面, 全链路UPI(Ultra Path Interconnect)总线互连的设计,则实现了CPU之间高效的数据传输: 允许任意两个CPU之间直接进行数据传输,减少了通信延迟 提供了高传输速率,高达16GT/s(Giga Transfers per second) 此外,浪潮信息的研发工程师还优化了CPU之间、CPU和内存之间的走线路径和阻抗连续性。 依据三维仿真结果,他们调整了过孔排列方式,将信号串扰降低到-60dB以下,较上一代降低了50%。 并且,通过DOE矩阵式有源仿真,找到了通道所有corner的组合最优解,让算力性能可以得到充分发挥。 内存方面, 可以说是通用服务器的最大优势了。 容量 对于4路服务器来说,只需给每颗CPU插上8根32GB内存,就能轻松达到1TB。插满之后甚至可以扩展到16TB,最大可支持万亿参数的模型。 带宽 搭配DDR5的内存,则可以实现4800MHz × 8bit × 8通道 × 4颗 ÷ 1024 = 1200GB/s的理论上带宽。 实测结果显示,读带宽为995GB/s、写带宽为423GB/s,以及读写带宽为437GB/s。 这个数据,对于一些搭载GDDR显存的GPU或加速卡,可以说是毫不逊色。 但仅靠硬件远远不够 仅仅依靠硬件创新,是远远不够的,CPU很难进行大模型算法的大规模并行计算。 正如开篇所述,大模型对通信带宽的要求是非常高的,无论是数据计算、计算单元之间,还是计算单元与内存之间。 如果按照BF16精度计算,想要让千亿大模型的运行时延小于100ms,内存和计算单元之间的通信带宽,就至少要达到2TB/s以上。 不仅如此,对于基于擅长大规模并行计算的加速卡设计的AI大模型,通用服务器的处理器与之并不适配。 原因很明显:后者虽然拥有高通用性和高性能的计算核心,但并没有并行工作的环境。 通常来说,通用服务器会将先将模型的权重传给一个CPU,然后再由它去串联其他CPU,实现权重数据的传输。 然而,由于大模型在运行时需要频繁地在内存和CPU之间搬运算法权重,这样造成的后果就是,CPU与内存之间的带宽利用率不高,通信开销极大。 如何解题?用算法创新 针对以上难题,浪潮信息提出了「张量并行」(Tensor Parallel)和「NF4量化」两项技术创新,成功实现了千亿大模型Yuan2.0-102B的实时推理。 根据性能分析结果,可以清晰地看到模型中不同部分的计算时间分布—— 线性层运行时间占比50%,卷积运行时间占比20%,聚合通信时间占比20%,其它计算占比10%。 注意,在整个推理过程中,计算时间占比达到了80%! 跟使用多个PCIe的AI加速卡相比,这就形成了鲜明的对比——后者的通信开销可能高达50%,从而导致严重的算力浪费。 Yuan2.0-102B模型推理性能分析结果图 张量并行 所谓张量并行,就先将卷积算子进行张量切分,然后把大模型中的注意力层和前馈层的矩阵计算权重,分别输入到多个处理器的内存中。 如此一来,通用服务器中的4颗CPU便可同时获取算法权重,进行计算加速。 不过,张量并行对模型参数的切分粒度较细,要求CPU在每次张量计算后都要进行数据同步。 对于这个需求,前文提到的全链路UPI总线互连技术,完全可以满足(通信带宽高达16GT/s)。 最终,这种协同并行工作,直接让计算效率提升了4倍! NF4量化 至于内存带宽不足的问题,则需要在不影响精度的情况下对模型进行「瘦身,也就是量化。 其优势在于,一方面可以将LLM参数量化成低比特数据,权重会变小。另一方面,权重缩小之后,在计算时传输的数据量也会变小。 这里,浪潮信息采用了一种并不多见的分位数量化方法——NF4(4位NormalFloat)。 NF4量化方法可将Yuan2.0-102B的尺寸压缩到原来的1/4 具体来说,NF4的核心思想是,确保量化区间内输入张量的值数量相等。 这个特点,恰恰非常适合呈现近似正态分布的LLM权重。 由于可以通过调整标准差来适配量化数据类型的范围,NF4相较于传统的4位整数或4位浮点数量化,可以获得更高的精度。 如此一来,量化之后的模型既能满足精度需求,又能大幅降低大规模并行计算的访存数据量,从而达到了实时推理的解码需求。 整数或浮点数量化方法的数据间隔通常是平均分布或指数分布的 为了进一步压缩模型的权重参数,团队还采用了嵌套量化(Double Quant)技术。 这是在NF4量化基础上,进行了二次量化。 因为NF4量化后会产生大量的scale参数,如果使用32位浮点数(FP32)存储,会占用大量内存。 对于一个千亿参数的LLM,若以每64个参数作为一个量化块(block size=64)来计算,仅存储scale参数就需要额外的6GB内存:(100B ÷ 64) × 4 = 6GB。 团队通过将这些scale参数量化到8位浮点数(FP8),显著减少了所需的存储空间。 在采用256为量化块大小(block size=256)的情况下,存储所有scale参数所需的额外空间仅为1.57GB:(100B ÷ 64 ÷ 256) × 4 + (100B ÷ 64) × 1 = 1.57GB. 通过嵌套量化,模型的每个权重参数最终仅占用4字节的内存空间,比原始FP32节省了大量的内存占用空间。 与此同时,它将从内存到CPU的数据搬运效率,提高了4倍。 这样的优化显著减轻了内存带宽对Yuan2.0-102B模型推理解码效率的限制,从而进一步提升了模型的推理性能。 所谓通用,就是让大家都用上 到这里,浪潮信息就成功交卷了! 通过系统优化,浪潮信息的NF8260G7,在业界首次实现了仅基于通用处理器,支持千亿参数大模型的运行。 至此,通用算力可支持的AI大模型,参数规模突破了千亿,彻底填补了行业空白,成为了企业拥有AI的新起点。 千亿参数AI的模型的部署,从此有了性能更强、成本更经济的选择;AI大模型应用,可以和云、大数据、数据库,实现更紧密的融合。 科技进步的最终目的,一定是落入凡间。 放眼当下,AIGC已经渗透进千行百业。AI已经以惊人的速度,渗透进了每一个计算设备。 2024年1-4月,国内大模型的中标数量,已经超越了2023全年总数,中标披露金额已经达到了2023年全年的77%。 在金融行业、医院门诊部,企业的IT部门,从业者都发现了这一点:传统行业的算力基础设施,已经不够用了! 如今,千亿参数大模型,是千行百业智能涌现的关键。而通用算力能否运行千亿参数大模型,正是衡量其能否支撑千行百业智能涌现的关键。 浪潮信息的创举,让互联网、金融、医疗等行业客户可实现高效部署,首次投入就可节约80%以上的建设成本。 无论是金融防欺诈、财务数据分析、企业CRM营销洞察、医疗智能诊断、个性化诊疗方案、教育培训等等,都将见证AI的广泛应用。 从此,一切计算皆AI。 参考资料: https://mp.weixin.qq.com/s/1wYt7dfoVy2J1FFkOJjRTg

对比学习滥用隐私数据!中科院等发布「多步误差最小化」方法 | ACM MM2024

研究人员提出了一种新颖的多步误差最小化(MEM)方法,用于生成多模态不可学习样本,以保护个人数据不被多模态对比学习模型滥用。通过优化图像噪声和文本触发器,MEM方法有效地误导模型,降低其对隐私数据的学习能力,并在不同模型间展现出强大的可迁移性。 多模态对比学习(如CLIP)通过从互联网上抓取的数百万个图像-字幕对中学习,在零样本分类方面取得了显著进展。 然而,这种依赖带来了隐私风险,因为黑客可能会未经授权地利用图像-文本数据进行模型训练,其中可能包括个人和隐私敏感信息。 最近的工作提出通过向训练图像添加难以察觉的扰动来生成不可学习样本(Unlearnable Examples),可以建立带有保护的捷径. 然而,这些方法是为单模态分类任务设计的,在多模态对比学习中仍未得到充分探索。本文首通过评估现有方法在图像-标题对上的性能来探索这一背景,由于在该场景中缺乏标签,之前的无法有效地推广到多模态数据,并且在建立捷径方面的效果有限。 在本文中提出了多步误差最小化(MEM),这是一种用于生成多模态不可学习样本的新颖优化过程。它扩展了误差最小化(EM)框架,以优化图像噪声和额外的文本触发器,从而扩大了优化空间,并有效地误导模型学习噪声特征和文本触发器之间的捷径。 论文链接: https://arxiv.org/abs/2407.16307 代码链接: https://github.com/thinwayliu/Multimodal-Unlearnable-Examples 具体来说,采用投影梯度下降来解决噪声最小化问题,并使用HotFlip方法来近似梯度和替换单词,以找到最佳的文本触发器。 大量实验证明了方法的有效性,保护后的检索结果几乎是随机猜测的一半,并且它在不同模型之间具有高度的迁移性。本篇工作的论文和代码均已开源。 研究背景 近年来,随着多模态学习的兴起,研究者们对结合文本、图像和音频等多种数据类型的模型产生了浓厚的兴趣。 其中,多模态对比学习成为了这一领域的重要方法,如CLIP和ALIGN等模型利用对比损失训练,以增强图像和文本的相关性,进而减少人工标注的需求,并展示了在图像分类、生成等任务中的潜力。 然而,这些模型的训练依赖于大量的多模态数据,这些数据常常来自公开的数据集,如CC12M、YFCC100M和LAION5B,但这些数据集可能仍然不足,且可能包含大量敏感的个人信息,引发了对隐私泄露的担忧。 我们考虑了一个专注于生成多模态不可学习样本以应对与多模态对比学习相关的隐私风险的场景。在这种场景下,我们专注于图像-文本对作为代表性的多模态数据集。假设用户经常在社交媒体平台(如Facebook)上分享带有文本的个人照片,包括一些私人身份信息,如面孔、姓名、电话号码和地址。 目前,黑客试图从互联网上收集大量此类图像-文本对,并利用多模态对比学习技术训练或微调大模型,如图1的左半部分所示。 这些模型无意中捕获了用户的私人信息和面部特征,导致潜在的隐私泄露。保护者旨在通过对多模态数据进行不可学习的方法来防止这些敏感数据被未经授权利用。这些方法使在这种多模态不可学习样本上训练的模型无法访问用户的隐私特征,同时不妨碍用户在发布图像和文本后的社交互动,如图1的右半部分所示。 图1:Facebook上的帖子无意中会泄露了个人信息(如图左),但利用多模态不可学习样本可以保护数据可以防止未经授权的模型访问私人特征(如图右) 动机 最近的研究致力于通过不可学习样本(Unlearnable Examples)来防止图像分类中的数据未经授权使用。这些方法通过对数据施加细微扰动来阻碍模型学习图像特征,也被称为可用性攻击(availability attacks)或无差别的中毒攻击(indiscriminate poisoning attacks)。 它主要分为无代理模型攻击和基于代理模型的攻击,其中无代理模型攻击通过在像素级别生成噪声,而基于代理模型的攻击则通过代理模型生成特征级别的噪声。 然而,所有用于分类的无代理模型方法在多模态场景下都无法生成图像噪声,因为这些方法旨在为与某个特定类别相关的图像找到一系列特定的噪声模式,而图像-文本对数据中没有标签。 因此,只有基于代理模型的方法可以应用,我们扩展了两种典型的方法来生成不可学习的多模态示例(EM和UAP)。 The Error-minimizing Noise(EM)方法: Untargeted Adversarial Perturbation.(UAP)方法: 尽管EM和UAP可以应用于图像-字幕对,但它们未能实现高效的保护,尤其是UAP。我们探讨了这些方法从图像分类到多模态对比学习有效性下降的原因。 在图像分类中,EM和UAP优化具有相同标签的图像,使其在特征空间中收敛,导致模型容易捕获这些附加噪声并学习与标签的相关性,如图2(a)所示。 图2:不同方法在传统分类和多模态对比学习中的比较。𝐼表示图像,𝑇是配对的标题。蓝色区域是在不可学习样本上训练的模型的预期决策边界 但在多模态对比学习中,为了有效地应用EM和UAP方法,优化的图像噪声的方向必须与文本的特征相关,导致图像特征变得要么接近要么远离这些特征。 然而,不同对的文本特征可能在图像–文本数据集中广泛分散。如图2(b)和(c)所示,与分类不同,模型更难捕捉字幕和EM和UAP生成的噪声之间的相关性。 在图2(c)中,UAP的学习决策空间更加复杂,因此其保护效果不佳。 方法 图3:多步误差最小化方法(MEM)的框架 由于图像-文本对的分散,基于代理模型的方法仍然无法实现有效的保护。一个直观的增强策略是同时优化图像和文本,以获得更大的优化空间,促进它们在特征空间中不同对的收敛。 因此,图像和文本集的优化特征表示呈现出相似的分布,便于模型学习它们的捷径,如图2(d)所示。 为此,我们以EM方法为基本框架,并提出在字幕前添加额外的短文本触发器来最小化对比损失,遵循对文本任务的对抗攻击的设置。我们的方法可以被概念化为一个三层迭代优化问题,类似于EM的多步过程。 具体来说,我们依次优化噪声δ和文本触发器t,以减少优化图像I + δ和优化文本T ⊕ t之间的对比损失,其中⊕表示可以在不同位置插入干净文本T的触发器。 为了简单起见,我们在本文中选择在文本的开头添加文本触发器。因此,我们的多步误差最小化(MEM)方法可以表述为: 通过参考EM中的方法依次迭代优化上述问题。使用投影梯度下降(PGD)来解决式中的噪声最小化问题。 值得注意的是,为了减轻噪声对干净字幕的过拟合,我们通过在批处理中打乱干净字幕并添加正确匹配的文本触发器来增强它们。因此,当面对语义错误的字幕时,这种生成的噪声可以更多地关注文本触发器而不是部分字幕。因此,我们可以根据以下迭代公式获得最优的δ: 对于文本触发器最小化问题,首先通过在所有输入的前面重复单词「the」或「a」来初始化触发序列。 此外,基于HotFlip优化文本触发器,通过梯度近似替换标记的效果。通过更新每个触发标记的嵌入,以最小化当前标记嵌入周围的CLIP损失的一阶泰勒近似: 最后,我们可以在候选标记的集合中使用束搜索来搜索每个最优文本触发器。我们考虑来自上式的前k个候选者,并在触发器的每个位置从前到后搜索,并使用当前批处理上的损失对每个束进行评分。 我们遵循Wallace等人的方法,并使用小的束大小进行高效计算。在图3中,我们可以看到使用我们的MEM生成多模态不可学习样本的框架。 实验效果 有效保护性 表1:在不同数据集上几种方法生成的不可学习样本的有效性比较 表1展示了它们在不同数据集上的检索结果。显然,UAP几乎无法为多模态数据提供任何保护,而EM则表现出一定程度的保护。 然而,我们的MEM始终为多模态数据提供强大的保护,将检索性能降低到几乎是随机猜测的一半。特别是MEM-5,由于其文本触发器更长,与MEM-3相比,在降低黑客模型性能方面取得了更大的效果。 图4展示了由不同方法生成的不可学习样本训练的训练损失下降曲线和在干净测试集上的检索Medr。从(a)中可以观察到,尽管EM使损失比正常训练下降得更快,但我们的方法MEM-3和MEM-5在第一个epoch时损失更小,这表明模型可以快速学习到捷径。 从(b)中我们发现,所有模型的Medr都比随机猜测时降低,但在不可学习样本上训练的模型停止学习得最快,达到了最差的检索结果,并且随着epoch的增加不会进一步学习得更好。以上观察结果与表1中的结果一致。 图4:训练损失和测试指标Medr的曲线变化记录 跨模型迁移性 表2:在不同模型架构上,基于ResNet50模型的MEM-3方法生成的不可学习样本的可转移性 我们假设数据保护是一个完全黑盒的设置,其中保护者不知道黑客模型的架构。因此,我们评估了在ResNet50代理模型上生成的MEM在不同黑客模型上的性能,包括ResNet101和ViT。结果如表2所示。我们发现这些样本可以成功地在不同模型之间转移,并能降低CLIP模型的性能。 可视化分析 图5:注意力图可视化:比较四种模型在干净数据和不同方法的不可学习样本上的情况 图5展示了在干净数据和不同方法生成的不可学习样本上训练的模型的注意力热图。对于图像,我们使用Grad-CAM来可视化模型的注意力,而对于文本,我们使用Integrated Gradients来可视化注意力。颜色越浅表示模型的注意力越高。 值得注意的是,对于图5(1),(2)和(3)中的模型都关注中心区域,这与字幕相关。 然而,图5(4)中由MEM – 3生成的样本训练的模型由于只学习了噪声特征,无法准确识别干净图像。同样在文本中,前三者中的模型都关注关键词「glass」,而后者中的模型将注意力放在前三个单词上,这可能是因为MEM-3总是优化噪声和前三个文本触发器来创建捷径。 这些可视化结果表明,EM和UAP在保护多模态数据方面效果不佳,而MEM具有明显的有效性。 图6:干净样本和MEM-3优化的不可学习样本在干净模型和中毒模型下的t-SNE可视化 我们在图6中可视化了正常模型下干净样本的特征分布以及MEM3在中毒模型上优化的不可学习样本的特征分布。我们用三角形表示图像特征,用圆圈表示文本特征,相同颜色表示数据集中五个相同但经过变换的图像及其对应的不同描述。 从(a)中我们可以观察到,在干净模型下,相同的图像和文本在内部聚集在一起,并且相应的图像-文本对彼此接近。 然而,在(b)中,相同的图像和文本出现了分歧,只有成对的图像和文本彼此接近。这表明我们的方法有效地促进了模型学习噪声和文本触发器之间的捷径。 案例探讨:人脸隐私保护 我们进行了一个案例研究,将我们的MEM噪声应用于一个现实世界的场景:保护社交媒体平台上的个人人脸图像和相关信息,如姓名。 我们使用PubFig数据库进行了实验,这是一个大型的现实世界人脸数据集,包含从互联网上收集的200个个体的58,797张图像。对于检索评估,我们随机选择每个名人的一张照片作为测试集,并使用所有剩余的图像进行训练。 为了进行真实的微调,我们更改了他们的名字,并提供了一组与该名字相关的文本模板用于字幕生成。随后,我们使用MEM生成不可学习的样本,并使用不同的黑客模型进行评估。结果如表3所示。 MEM可以防止这些微调模型学习人脸和姓名特征之间的相关性,从而阻碍在测试集上的准确人员检索。 表3:在不同预训练模型上,ResNet50微调生成的不可学习样本的保护效果 结语 在本文中,我们探索了多模态数据保护,特别关注图像-文本对,我们生成了多模态不可学习样本来防止被多模态对比学习利用。我们将先前的分类方法扩展到这个背景下,揭示了由于模态增加和数据分散而存在的局限性。 鉴于这些发现,我们引入了一种名为多步误差最小化(MEM)的新颖生成方法,它基于EM框架。MEM有效地在噪声和文本触发器之间建立了捷径,并展示了在不同黑客模型之间的可转移性。 此外,我们使用各种可视化工具验证了我们方法的有效性。我们的工作开辟了一个新的方向,预计将适用于其他模态对,如音频-文本和音频-图像对。 作者介绍 本文作者来自中科院信工所、南洋理工大学、新加坡国立大学和中山大学。作者列表:刘心玮,加小俊,寻源,梁思源,操晓春。 其中,第一作者刘心玮是中科院信工所博士生。通讯作者中山大学操晓春教授和和南洋理工大学的加小俊博士后研究。 参考资料: https://scst.sysu.edu.cn/members/caoxiaochun.html https://jiaxiaojunqaq.github.io

Midjourney V6.1再进化!人像逼真细节拉满,摄影级画面秒生成

Midjourney迎来最强版本v6.1,速速来体验! Midjourney几个月前画的饼终于端上来了!他们今天刚刚发布了最新版本v6.1! 此次更新总结四个大字:细节狂魔。 网友纷纷发推测试最新版本的Midjourney,摄影级画面先睹为快! 这张图被取名为《天窗》,构图、色彩、光影、明暗,各方面都极度舒适,湖面波光粼粼细节生动,简直可以直接用来做屏保。 继续看一幅风景,曙光拨开云层,远处群山连绵,积雪未消;植被茂密,松树纹理逼真,一片静谧祥和。 接着看一组静物,原本需要大量人力物力财力和精力拍摄的商业图,Midjourney几十秒轻松搞定。 每张图片不仅清晰,还能围绕一个配色、主题和风格展开。 人像生成自然也不在话下,五官立体,妆容精致,堪比杂志图。 生成人物与街景图自带复古ccd效果,落日余晖打在人脸上清晰真实,没有过度美化的假面感。 甚至还能生成定制风格的图片,下图就是一个千禧风格的老式计算机。 网友都上手尝鲜新版本的同时,也有人感叹Midjourney进化速度之快。 有人po出一张Midjourney V2和Midjourney V6.1的对比,从画面模糊到清晰,摩托车与人的轮廓从诡异到炫酷,仅仅经过了两年时间。 细节狂魔 之所以把Midjourney这一版的亮点称之为「细节狂魔」,是因为V6.1着重强调了以下新功能: – 更连贯的图像(手臂、腿、手、身体、植物、动物等) – 图像质量更好(减少像素伪影、增强纹理、皮肤、8 位复古效果等) – 更精确、更详细、更正确的细节特征(眼睛、小脸、远处的手等) – 新的图像放大器具有更好的图像/纹理质量 – 标准图像作业速度提高约 25% – 提高文本准确性(在提示中通过「引号」绘制单词) – 新的个性化模型,具有令人惊喜的细微差别和准确性 – 个性化代码版本控制(将旧作业中的代码用于当前作业的个性化模型和数据) 一句话总结,就是让画面整体上看起来更和谐、精致。 尤其是在人像的处理方面,几乎已经无可挑剔。 以图为证,左边V6生成的已经足够逼真,V6人物的眉毛纹理更加精细,眼球红血丝清晰可见。 可以说将AI生成图与摄影大师作品同场竞技也丝毫不输。 V6.1对比V6 产品介绍得再天花乱坠,用户最为关注的,还是上手使用时性能是否真正提升。 接下来我们直接与前一代横向对比,看看千呼万唤的V6.1在上面提到的更新升级做的怎么样了。 提示词:冬天,一个金渐层小猫在壁炉前的沙发上玩毛线球,平视角度,主体形象直视镜头,写实逼真。 两幅画对比可以看出,右边的小猫看上去更加毛茸茸的,毛线球的质感也更加真实不死板,背后的原因就在于V6.1版本在于对细节和纹理的处理更加真实细致。 提示词:阳光明媚的日子里,经典福特野马在海岸附近的道路上行驶的高角度镜头,温暖的阳光照亮了汽车的底盘,逼真,高分辨率。 V6.1的版本清晰度就眼前一亮,画面构图更加和谐,远处山脉纹理也更加真实。 提示词:JC Leyendecker 风格的插图,年轻运动员在行动中,复古足球服,大学橄榄球场的初秋午后,动态照明突出肌肉形态,光影对比,低角度,饱和色彩,程式化和流畅的笔触。 JC Leyendecker是上世纪美国著名插画师,风格偏写实风,注重线条流畅程度以及灯光质感,善于借用灯光打造人物效果,烘托出主人公。 JC非常注重用笔触打造衣物、皮肤和头发的质感,绘画线条流畅,擅长运用松节油混合颜料,创作出丰富、流畅的笔触和发光般的表面质感。 可以看出,V6.1的版本更符合JC Leyendecker的绘画风格,棒球运动员的衣服和皮肤都有微微光感。 再看下面这个例子,展示了V6.1最引以为傲的人像处理部分,首先画面一眼看去更加和谐且具有电影质感。 提示词:电影拍摄画面,可疑的人,灯光昏暗的街道。在晚上,人物紧张地环顾四周。人工街道照明,前角,双色调,绿松石和红色,营造紧张的气氛,Cinestill 50D。 V6版本对于皱纹形态和手部细节的处理还都比较死板,V6.1版本中,人物的肌肉线条明显更加真实。 深究人像细节可以发现,V6版本的人脸被遮挡且晦暗不清,V6.1中,人物打湿微卷的头发、脸部光影和皮肤的沟壑纹理都极其真实。 经过以上四组动物、外景、人物和强烈绘画风格的对比例子来看,Midjourney V6.1都较上一代呈现出了高质量的画面和丰富的细节,并且还能定制生成艺术家风格的作品。 自然,Midjourney依旧不会满足于V6.1的进步,在上新的同时也透露下一步消息——V6.2将会在下个月推出。 参考资料: https://x.com/midjourney/status/1818342703618482265

87.8%准确率赶超GPT-4o登顶!谷歌DeepMind发布自动评估模型FLAMe

谷歌DeepMind推出LLM自动评估模型FLAMe系列,FLAMe-RM-24B模型在RewardBench上表现卓越,以87.8%准确率领先GPT-4o。 大语言模型都卷起来了,模型越做越大,token越来越多,输出越来越长。 那么问题来了,如何有效地评估大语言模型的长篇大论呢?要是输出长度长了但胡言乱语输出质量差,又臭又长,岂不是白搭? 首先能想到的方法就是人工评估。人工评估虽然对于评价模型性能至关重要,但受到主观性、评估者之间的差异性以及广泛评估的高成本的限制。 考虑到这些因素,谷歌DeepMind研究团队提出了自动评估解决方案FLAMe。 论文地址:https://arxiv.org/abs/2407.10817 模型本身在经历多轮大规模指令任务调整后,可以遵循一套新的指令,使它们适合用作模型输出的自动评估器。 一方面,为了使LLM自动评分更加合理、准确并与人类偏好保持一致,对人类判断的数据收集极其重要。 然而,获得这些判断数据既昂贵又耗时。从以前的研究中收集现有的人类评估貌似可行,但面临着缺乏标准、文档数据不充分、数据隐私和专有权等问题。 另一方面,直接使用模型输出进行自动评分器训练可提供一致性,但也存在风险,包括强化偏见和幻觉。 此外,它可能违反专有LLM服务的使用条款,条款禁止使用其模型的输出来开发竞争模型。 为了解决这些限制和显著降低成本,谷歌引入了一个用于自动评分的大型基础模型系列—-FLAMe。 FLAMe模型的主要优势和贡献是: – 数据收集:仅使用获得许可的数据集,并对人类评估结果进行标准化。共包含102个评估任务、530万条人类评估意见。为了促进未来的研究,论文公开了所有数据集来源。 – LLM自动评分器:既包括使用多任务组合来训练通用 LLM自动评分器 (FLAMe) ,也包括针对下游应用程序优化过的LLM 自动评分器 ( FLAMe-RM 和 FLAMe-Opt-RM)。 在12个自动评分器评估基准中的8个基准上,FLAMe及其变体的自动评分性能优于用专有数据训练的GPT-4o、Gemini-1.5-Pro等模型。 – 计算高效的多任务训练:引入了一种计算更为高效的方法,使用创新的微调策略来优化目标分布的多个任务,显著减少计算量来实现更佳的性能。 自动评估方法 为了将人工评估的流程自动化,作者对LLM任务和评估标准进行了细致的定义。 数据收集 和领域内很多科技巨头的做法形成鲜明对比的是,DeepMind这篇论文不仅披露了使用的数据集列表,而且从数据收集步骤开始,就坚持了几个公认正确但很难做到的原则。 首先,为了论文的透明度和可复现,作者仅使用HuggingFace、TensorFlow这些平台上的公共开源数据集,以及得到原作者许可的GitHub库。 为了避免GPT-4等模型生成数据带来的不准确性和潜在法律问题,作者只使用了带有人工标注的数据集,并涵盖了各种任务类型(图3)和LLM能力(图4)。 最终用于训练的数据集含有102项评估任务、共530万条经过标准化处理的人类评估意见。 任务类型主要包含以下四种: – 成对评估(pairwise evaluation):比较两个响应结果并确定偏好 – 逐点评估(pointwise evaluation):对单个响应结果的指定属性进行打分 – 分类:将单个响应划分为某个预定义类别,例如:模型输出是否遵循说明?(是/否) -开放式评估:自由形式、不受限制的评估结果 按照评估的LLM能力划分数据集,则大致有6类能力: – 一般响应质量:包括有用性、连贯性、流畅性、创造力、复杂性和冗长性等多个属性,以及指令跟随能力 – 事实性/内容出处:针对LLM应用中日益重要的幻觉问题,几个数据集都用于评估响应输出的事实准确性及其基础,看模型提出的声明是否有源文档作为依据 – 数学推理:区分LLM生成数学解题方案的正确或错误 – 编码:涵盖Python、JavaScript、Java、C++、Go和Rus等流行编程语言,训练FLAMe从备选答案中选出正确程序或修复程序 – 安全性:为了使FLAMe能够识别出更有帮助且无害的模型响应 – 指令微调:结合数据集中的指令微调数据和人类编写的响应,帮助保留模型的指令微调能力 统一任务格式 精心选择好合适的数据集后,作者受到T5统一任务格式的启发,将所有数据都标准化为统一的「文本到文本」格式。这种灵活的格式可以轻松适应上述各种评估任务。 任务定义、评估指令和所需的输出字段被列在输入的INSTRUCTION部分,具体的输入内容和目标输出分别放在CONTEXT和EVALUATION部分(图2)。 其中任务定义和评估指令都经过精心设计,确保一致性和标准化,并忠实于原始数据集。 模型训练 为了训练出通用LLM自动评估器,能够在推理过程中提示它们执行各种任务。实验训练了三种模型变体: FLAMe,通用评分器; FLAMe-RM,用FLAMe初始化,并均匀混合了四个成对评估数据集进行微调,性能评估标准包括聊天对话、推理和安全性; FLAMe-Opt-RM,使用奖励模型优化的混合权重进行训练,并使用尾部补丁微调策略(tail-patch fine-tuning)。 FLAMe 从基准训练方法开始,使用监督多任务训练的方式,对PaLM-2-24B模型进行指令微调,进行固定数量的30K训练步骤。 采用示例比例混合权重(examples-proportiaonal mixture weights),每个任务采样上限为为2^16,以避免对大型数据集进行过采样。 FLAMe模型显著提高了对各种held-out任务的泛化能力,在许多任务上优于GPT-4、Claude-3和Llama-3等模型。 以上数据能够证明FLAMe具有的的基础功能,即进行大规模多任务指令微调,可以让模型发展出通用的质量评估能力。 然而,FLAMe对于奖励模型评估等专门的下游应用来说并不是最佳的,因此论文进一步提出针对特定下游分布的模型变体。 FLAMe-RM 受FLAMe研究结果的启发,作者更加深入地研究了FLAMe的拓展,将其作为进一步微调特定下游应用的起点。 作者采用了大量奖励模型评估作为案例研究。通过在四个成对评估数据集的混合上微调FLAMe来创建FLAMe-RM。 数据集包括:HelpSteer、PRM800K、CommitPack和HH-RLHF Harmless。 由于FLAMe已经在这些数据集上进行了训练,因此仅对其进行50个步骤的微调。 由此产生的FLAMe-RM模型将原始FLAMe的RewardBench总体得分从86.0%准确率提高到87.8%。 值得注意的是,FLAMe-RM-24B是专门在许可数据上训练的性能最佳的生成模型,超过了GPT-4(85.9%) 和GPT-4o (84.7%)。 FLAMe-Opt-RM 虽然FLAM在许多任务中表现良好,但它需要大量的训练才能在某些专门的下游应用程序(例如RewardBench)上获得强大的性能。 为了解决这个问题,研究引入了一种尾部补丁消融策略(tail-patch ablation),该策略分析每个数据集对目标分布的影响。 这能够帮助找到多任务混合中各个数据集的最佳比例,从而有效地优化混合权重超参数。 通过这种优化过的混合数据微调PaLM-2-24B仅需要5000步,相比RewardBench上的基线模型(86.0%)实现了有竞争力的性能 (87.0%),而且所用的训练数据也减少了约25倍。 研究直接根据RewardBench性能变化(由于缺乏开发集)优化了多任务混合。 值得注意的是,研究的目标不是实现最佳的RewardBench结果,而是展示如何针对目标分布进行多任务混合的优化方法。 通过测试发现,和FLAMe-RM 一样,微调进一步提高了RewardBench性能。 此外,FLAMe-Opt-RM在其他held-out任务中的优秀表现表明,moxing 并没有过度拟合RewardBench,这证实了FLAMe-Opt-RM在不同任务中的广泛适用性。 训练细节 研究使用了PaLM-2-24B模型对FLAMe和 FLAMe-Opt-RM进行初始化,并在Flan集合上进行指令调整,分别训练30000步和5000步,然后将FLAMe进一步微调50步以创建 FLAMe-RM。 模型使用T5X和Adam优化器进行训练,学习率为 0.0001,dropout为 0.05。 FLAMe在256个PU芯片上进行训练,批大小为32,而FLAMe-RM和FLAMe-Opt-RM使用128个TPU芯片,批大小为8。 评估实验 讨论过FLAMe系列模型的构建方法后,作者使用了包含12个自动评分器基准的评估套件,将FLAMe与几个流行的LLM-as-a-Judge自动评分器进行对比。 12个基准中,只有HelpSteer作为held-in验证,其余的RewardBench、LLM-AggreFact等11个作为held-out测试。 评估数据同样涵盖了53个任务,但为了降低模型API成本,每个测试集(除RewardBench)仅随机抽取256个样本。 对比的基线包括Llama-3-70B-Instruct、Mixtral8×7B、Claude-3-Opus等流行的LLM-as-a-Judge模型,以及RewardBench官方排行榜上列出的Gemini-1.5-Pro、Nemotron-4-340B-Reward等。 FLAMe的3种模型变体都参与了评估,而且还包括了进行指令微调前的PaLM-2-24B,以更好说明FLAMe训练的效果。 表1列举了FLAMe系列在12个基准上与流行基线模型的对比。 其中8个都取得了最优性能,尤其是Contr Search和HelpSteer上相比次优模型有大幅度提升,让我们看到了「许可数据」超越「专有数据」的希望。 在RewardBench排行榜上,截止7月15日,FLAMe-RM-24B在所有生成模型中排名第2(仅次于Gemini-1.5-Pro),在所有模型中排名第6,在4个类别中都取得了强劲表现。 虽然RewardBench是评估奖励模型时被广泛使用的基准,但作者也在实验时发现了其中的评估偏差问题,比如有对输出答案的长度偏好,以及偏爱「sorry」、「I’m sorry」等短语。 RewardBench4个类别任务对响应长度的不同偏好 在AggreFact基准的结果中(表3),FLAMe-24B获得了整体最佳性能,比GPT-4o高出将近1分。 在总共4个类别的用例中,FLAMe系列变体在其中3个取得了最优性能,仅在Long-formQA上表现不佳,与表1中LFQA Eval的结果相一致。 此外,上述3个表格中都能发现,相比原有的PALM-2-24B,经过训练后的FLAMe-24B性能有大幅度的提升,证明了FLAMe训练方法的有效性。 分析 模型大小、数据集大小和数据质量等因素在最近的多任务学习和指令调优工作中已经得到了广泛的研究。 论文更加着重探索LLM自动评分器固有的潜在偏见,这也是影响评估准确性的一个重要方面。 另外,FLAMe对于AI开发还有许多潜在用途,例如对高质量响应数据进行采样。 自动评分器偏差分析 对LLM自动评估器(LLM-as-a-Judge autorater)的常见批评主要涉及他们对某些判断的偏见。 通过在自动评估器偏见基准CoBBLEr上评估 FLAMe及其变体,论文发现FLAMe模型比其他流行的LLM自动评估器的偏见要小得多。 CoBBLEr主要测量LLM自动评估器中的6种偏见: 顺序:自动评估器对回复顺序是否有偏好? 同情心:当使用生成响应的LLM的实际名称(例如「GPT-4」)而不是「Model A」等别名时,自动评估者的判断会改变吗? 长度:自动评估器是否会偏好较长或较短的输出? 以自我为中心:自动评估器是否偏爱自己生成的输出? 见风使舵:自动评估器是否会被「90% 的人更喜欢回答 A」这样的句子所左右? 注意力:自动评估器是否被不相关的上下文信息干扰 评估结果如表4所示,可以看到,相比其他基线模型,FLAMe系列在大部分维度都表现出明显较低的偏见,而且总体偏见值最低。 使用FLAMe对解码输出重新排序 最后,研究还探索了LLM自动评估器在从多个响应中选择最佳输出方面的应用,这种方法称为「Best-of-N」采样。 实验中使用了OpenAI的3个代码生成模型,并通过循环机制(round-robin)让FLAMe分别对它们生成的10个代码样本进行重新排名,然后使用排名靠前的代码示例,在HumanEval Python基准中测试其性能。 结果表明,FLAMe在所有三个模型中都显著提高了pass@1准确率。 值得注意的是,FLAMe将CodeGen16B的pass@1准确率从21.2提高到31.1,与Oracle排名器 (46.9) 的差距缩小了近40%。 结论与讨论 FLAMe是一系列基础自动评估器模型,可以执行各种质量评估任务。训练所用的数据不仅大规模而且多样化, 仅来自许可数据集,包含标准化的人类评估意见且经过精心设计。 研究展示了FLAMe强大的零样本泛化能力,在许多悬而未决的任务中,其性能优于使用GPT-4和Claude-3等专有数据训练的模型。 FLAMe还可以有效地作为进一步下游微调的强大起点。FLAMe-RM变体针对奖励模型评估进行了微调,尽管仅在许可数据上进行训练,但仍是RewardBench上表现最好的生成模型之一,其性能优于GPT-4-0125和GPT-4o。 此外,论文提出了一种计算效率更高的方法,使用新颖的尾部补丁微调策略来优化目标分布的多任务混合FLAMe模型,以显著减少的计算量提供有竞争力的性能。 FLAMe变体在12个自动评估基准中的8个优于流行的专有LLM-as-aJudge模型,涵盖53项质量评估任务,包括RewardBench和LLM-AggreFact。 最后,分析表明,与CoBBLEr自动评分器偏差基准上流行的LLM-as-a-Judge模型相比,FLAMe表现出明显较低的偏见,同时能够有效地识别代码生成的高质量响应。 局限性和未来工作 由于评估标准不断变化以及评估新的LLM功能的需要,评估LLM具有挑战性,通过开源贡献扩大我们的数据收集范围可以解决这个问题。 此外,模型主要在上下文长度为2048个token的英语数据上进行训练,可能在多语言或长上下文上表现不佳。 在未来的版本中,作者计划包括对更多具有更长上下文的多语言数据集的训练。 最后,这项工作一直以有监督的多任务方式训练FLAMe模型。探索RLHF和DPO等其他训练方法是未来工作的一个有希望的方向。 道德考虑和道德风险 针对预训练和指令微调的LLMs工作概述的所有注意事项和风险也都适用于LLM自动评估器,研究也都遵循标准实践来负责任地开发FLAMe模型。 此外,由于评估能力和评估质量的增强,LLM自动评估器也带来了新的风险。 首先,模型可能会继承并放大人类评估的偏见,导致不公平或歧视性的结果。 例如,该模型可能会复制训练数据中与种族、性别或其他敏感属性相关的偏见,这可能会损害某些群体利益。 其次,过度依赖LLM自动评估器可能会导致需要人类理解和同理心的决策不经思考而只根据LLM判定。 为了减轻这些风险,模型开发和使用的透明度,以及偏见处理、数据匿名化和纳入不同观点等强有力的措施,对于促进公平、问责和可信度至关重要。 参考资料: https://x.com/tuvllms/status/1813249272474968315