#新型忆阻器
前些天,OpenAI 发布了 ο1 系列模型,它那「超越博士水平的」强大推理性能预示着其必将在人们的生产生活中大有作为。但它的使用成本也很高,以至于 OpenAI 不得不限制每位用户的使用量:每位用户每周仅能给 o1-preview 发送 30 条消息,给 o1-mini 发送 50 条消息。
实在是少!
为了降低 LLM 的使用成本,研究者们已经想出了各式各样的方法。有些方法的目标是提升模型的效率,比如对模型进行量化或蒸馏,但这种方法往往也伴随着模型性能的下降。另一种思路则是提升运行这些模型的硬件——英伟达正是这一路线的推动者和受益者,但该公司的主要策略还是提升 GPU 的性能;另一些研究者则正在探索针对 AI 构建高效高性能的新型硬件体系。忆阻器(memristor)便是其中一个重要的研究方向。
忆阻器是一种电子元件,其能够限制或调节电路中电流的流动,并且可以记忆之前通过的电荷量。忆阻器在许多实际应用中具有重要意义,原因之一是其具备非易失性特性,即在断电情况下仍能保持记忆,这使得其在无电源或电源中断时依然能够持续使用。忆阻器被认为是和电阻器、电容器、电感同层级的基础电子元件。忆阻器的概念最早在 1971 年由华人科学家蔡少棠提出。
近日,Nature 发布了一篇来自印度科学学院、得克萨斯农工大学和爱尔兰利莫瑞克大学的一篇论文,其中提出了一种「线性对称的自选择式 14 bit 的动力学分子忆阻器」。
该论文的核心亮点是,其中提出的分子忆阻器在核心的矩阵运算上能实现远超电子器件效率的 14 bit 模拟计算;并且其实现了超过 73 dB 的信噪比,比之前的最佳水平直接高出了 4 个数量级,同时其能耗量比电子计算机低 460 倍!
这样的出色表现让 AI 工程师 Rohan Paul 忍不住惊叹:「如果这是真的,算是到了 LLM 的真空管变硅晶体管时刻吗?」
那么,这篇论文究竟提出了什么呢?真的有希望将 LLM 从高功耗高成本的困境中解脱出来吗?让我们来简单了解一下。
我们知道,向量-矩阵乘法(VMM)是神经网络等许多计算算法的基础。但是,VMM 很难实现,因为对于长度为 n 的向量,所需的计算步骤为 n²。尽管对称运算可以降低 VMM 的复杂性,但它们只适用于特定的矩阵结构,比如人工智能中的非结构化数据。
为了得到高效的通用型 VMM 引擎,人们一直在推动硬件的发展,尤其是点积引擎(DPE)——一种可在单个时间步长内实现 VMM 的模拟加速器。尽管 DPE 有应对计算规模扩展的潜力,但其应用也受限于其精度,因为模拟电路元件仅提供 2-6 个等效比特。这种精度不足的根源在于其物理性质不够理想,包括非线性的权重更新、不对称行为、噪声、电导漂移和设备间差异。这是神经形态计算的一个根本性挑战。
为了解决这个问题,需要发明一种能嵌入到电路中的元件,并且嵌入数量要比目前可用的模拟级别高出几个数量级。
该团队宣称已经发明出了这样的元件。这是一种分子忆阻器交叉开关矩阵,可集成在电路板中。其展现出了 14 比特的模拟精度、近乎理想的线性和对称权重更新,以及每个电导层级的一步式可编程性(one-step programmability)。
如图 1a 所示,该团队构建了有史以来最大的分子忆阻器交叉开关矩阵(64×64)结构。使用的材料是夹在顶部和底部金电极之间的 60 nm 厚的
薄膜。更多详细的设计参数请参看原论文。
总之,该器件实现了想要的功能,并且具有相当好的非易失性和稳健性。如图 2a 所示,这个交叉开关矩阵耐久性很好,经过 10^9 个操作周期后,权重更新特性依旧保持不变。另外,图 2b 表明使用 500 mV 直流电压在 85°C 环境下,该结构能在 11 天内不出现明显的电导漂移。另外,他们还测试发现,其能维持长达 7 个月的电导保持率。
使用这个 64×64 的分子交叉开关矩阵,该团队执行了 VMM 实验,这用到了一个他们定制的超过 16 比特准确度的混合信号外围电路,如下图 4 所示。a 图是对其编程,使之执行离散傅里叶变换(DFT)。b 图则比较了计算出的 DFT 输出与软件计算的结果,可以看到它们之间非常一致,这表明这个结构是有效的。
此外,他们还执行了矩阵-矩阵乘法运算,这是几乎所有 AI 和机器学习算法的基础运算。结果发现,如果让两个 64×64 的矩阵相乘,则该结构仅需要执行 64 步,但如果让电子计算机来干同样的事,则需要执行 262,144 次运算。
图 4c 表示其矩阵乘法的准确度不依赖于对称性,这是处理非结构化数据的一个关键属性。
该团队评估了不同矩阵组合,包括对称、随机和双随机矩阵。最终得到了 73-79 dB 的信噪比。该团队表示这是一个非常重大的进步。
他们还展示了一个非常有趣的用例。使用矩阵乘法,他们使用从韦伯望远镜数据库检索到的频域数据,通过逆傅里叶变换重建了标志性的「创生之柱」图像,见图 4d-f。
之所以选择外太空数据,是因为它缺乏对称性。这项任务每个平面都需要 26,256 个时间步骤,而数字计算机所需的步骤数超过了 10^8。
结果,他们得到的信噪比为 74 dB,峰值信噪比为 76.5 dB,直接高出了之前最佳的 DPE 4 个数量级。
这个转译过程的后续阶段将需要进一步扩展这个交叉开关矩阵,并开发具有高精度的片上外围电路。
该团队在论文中描述了一种经过功率优化的外围电路设计,可以提供超高的能效:每秒每瓦 4.1 万亿次运算 (TOPS/W) 。这个数据比 18 核 Haswell CPU 高 460 倍,比当前最高效的英伟达 K80 GPU 高 220 倍,并且这还有很大的改进空间。
这个示例展示了基于分子的技术的巨大潜力,通过将其集成到 CMOS 电路中,可以大幅超越最先进的加速器的性能。
如果 OpenAI 等未来开发的大模型也能运行在基于此类技术开发的硬件上,那 AI 的使用成本必定能下降很多。
更多研究细节、数据和代码请访问原论文。
#大模型的自我纠正新视角
本文作者来自香港城市大学和华为诺亚方舟实验室。其中,第一作者姚宇璇是香港城市大学计算机系的二年级博士生,研究方向涉及大模型的复杂推理和生成,师从宋林琦教授。吴涵,郭志江是华为诺亚方舟实验室研究员。
大型语言模型(LLMs)虽然进展很快,很强大,但是它们仍然存在会产生幻觉、生成有害内容和不遵守人类指令等问题。一种流行的解决方案就是基于【自我纠正】,大概就是看自己输出的结果,自己反思一下有没有错,如果有错就自己改正。目前自己纠正还是比较关注于让大模型从错误中进行学习。更多相关内容可以参考这篇 TACL 的 survey [1]。
但是呢,现有的很多自我纠正的方法依赖于复杂的 prompt engineering,人类反馈,或外部工具,但这些方法往往比较麻烦(试 prompt),不稳定(换了个模型 prompt 可能就要修改了),昂贵(人类反馈很贵的),增加时延(要调用不同的外部工具)。为了克服这些限制,本文提出了一种无需 prompt engineering 也无需外部反馈的方法 ——Learning from Correctness(LeCo,是的,作者们是乐高爱好者 XD),我们想倒反天罡,从正确而不是错误中进行学习,让自己变得更强大。
- 论文链接:https://arxiv.org/pdf/2403.19094arxiv.org/pdf/2403.19094
- 代码链接:https://github.com/starrYYxuan/LeCo
一句话总结:LeCo 通过大模型自己生成的推理步骤进行自我纠正,无需人类反馈,手工提示和外部工具。其核心思想就是:模型如果知道更多的正确推理步骤,那他的搜索空间就可以压缩,从而更有高效地找到完整的正确推理路径。LeCo 为每个推理步骤计算置信度分数,通过分数给推理步骤打分,低分的推理步被视为潜在错误,之前的步骤被视为正确。通过将这些正确步骤附加到输入中,模型可以逐步接近正确答案。如下图所示,LeCo 首先得到对当前问题的解(左边 output), 然后我们逐渐去收集正确的推理步骤知道得到最后正确的解。这种渐进式学习方法不仅提高了推理准确性,还减少了 tokens 消耗(穷人友好)和迭代次数(和投票,从错误中学习相比)。
LeCo 方法示意图
如何找出正确的推理步骤?
一些预设知识:在生成任务中,logits 代表候选词被选为下一个词的对数概率。另一方面,置信度指的是模型对其预测的确定性。在推理任务中,我们提出步骤置信度来衡量模型对每个推理步骤的正确性的置信度。于是我们设计了三种基于 logits 的评分,从单步推理步和不同推理步出发,全面评估每个推理步骤的置信度。
方法:为了找出大模型自己生成的正确推理步骤,本文开发了一种基于生成 logits 的高效方法来测量每个推理步骤的置信度,无需额外标注或工具。通过综合考虑每个步骤中的平均置信度、步骤置信度差异和步骤传递概率,LeCo 能识别出近 65% 的错误步骤。具体来讲,我们的置信度设计考虑了 3 个不同的角度:
单步置信度(average token score):一种简单的方法来衡量步骤置信度是平均计算某一步中的 token 概率。这个平均值反映了模型在该步骤中推理的确定性。单步置信度定义为:
单步散度分数 (step divergence score):虽然平均 token 概率看似直观,但它可能会产生误导。在一个步骤中,大多数 token 通常是常见词汇,具有高置信度分数,但携带的信息很少。相反,对于推理至关重要的 token,例如数学计算,通常置信度较低。这种矛盾导致整个步骤的平均 token 置信度偏高。为了解决这个问题,本文提出了 Step Divergence Score。这个指标测量了步骤中标记概率的分布均匀性。理想情况下,正确的推理步骤 token 概率不仅高,而且在所有 token 之间均匀分布。为此我们定义了 token 概率的归一化分布
和均匀分布 U 来设计:
步间转移分数 (Inter-step Transition Score) : 在步骤内部测量之后,我们寻求量化连续步骤之间的转换。初步实验发现了两个关键点:
(1)整体置信度较低的步骤倾向于在初始的几个 tokens(通常是前三个)中具有较低的置信度,更多讨论可以在附录中找到。
(2)这些初始的几个 tokens 也是在不同程序运行中最有可能改变的。基于这些观察,我们建议使用步骤中的开头的借个 tokens 概率来表示该步骤和下一个步骤之间的交叉转换分数。换言之,转换分数:
结合以上三个分数,我们可以得到针对每个推理步骤的置信分数:
LeCO:从正确的推理步中学习
好了,现在我们已经拥有了衡量推理步置信分数的方法,现在只需要迭代式地收集正确的推理步骤,优化搜索空间去拿到最后的正确推理路径。LeCo 分为两个阶段:
- 初始阶段(Initial Stage):用任何 CoT 的方法生成一个初始的解即可,要求就是需要这个解是有推理步骤的。
- 反思阶段(Rethink Stage):拿到这个解之后,我们用上述方法去计算每个推理步骤。然后选择分数最低的那个步骤作为 “犯错的第一步”。之前的的推理步骤我们都认为是 “正确的步骤”。然后我们将正确的步骤也作为输入给到大模型去进行推理。
LeCo 就是在推理和反思两个阶段交替进行直到达到停止的条件。我们设置的条件有两个:1. 达到最大的迭代次数;2. 连续两次的解都是一致的。
LeCo 算法总结如下:
实验结果
我们使用 LeCo 在推理任务上面进行了验证,包括逻辑推理,常识推理和数学推理。对比的基线系统包括了也是需要多次推理的 Self-Consistency(SC [2]),Adaptive Consistency(ADPSC [3])和 Recursively Criticizes and Improves(RCI [4],从错误中学习):
表 1:LeCo 在逻辑,常识和数学推理上面的性能表现
表 2:LeCo 在需要更加复杂的推理 MATH 上的表现
从上面的两个表格中我们可以看到:
- LeCo 的普适性:适用于不同的模型(GPT3.5,GPT4,DeepSeek)和不同的 CoT 方法(Initial Stage 用的);
- LeCo 的性能提升:在不同类型的推理任务上面都有提升,越难的任务,需要越多推理步骤的任务提升越多(比如 MATH);
- LeCo 的效率提升:如下两个表格所示,LeCo 除了在各种任务上对性能有一定提升之外,所消耗的 token 数量更少(如:比 self-consistency 低 80%),并且所需的迭代轮数更低。
表 3:LeCo 和不同方法的 Token 消耗比较
表 4:LeCo 和不同方法的迭代次数比较
人工分析:为了进一步验证 LeCo 是否真的能识别到推理中正确的步骤,本文人工标注了 100 题 GSM8K,找出推理过程中正确和错误的时间步。Exact Correct 表示 LeCo 能精确定位到第一步犯错的步骤,Partial Correct 表示定位在 1 步的误差范围内,Wrong 表示定位误差范围大于 1 步。总体来说,LeCo 可以通过计算置信度的方式而无需外部信息较为准备地找出正确和错误的步骤,不过仍然存在提升空间。
表 5:不同方法计算推理步骤置信度的准确率(人工分析 100 题)
总结
1. 本文提出了一种新的多步推理范式,称为从正确中进行学习(LeCo),通过逐步积累正确步骤接近最终答案;
2. 本文挑战了高质量反馈只能来自外部的观点,并提出了一种仅仅使用模型自身的 confidence score 来近似每个推理步骤的正确性的方法;
3. 无论是开源和闭源模型,都可以在各种多步推理任务中从 LeCo 中获益,同时减少 token 和迭代轮次的消耗。更令人振奋的是,和我们的题目一样,LeCo 消除了 rethink 阶段重新编写 prompt 的需求。