#Transformer推理天花板被谷歌打破?

DeepMind首席科学家亮出84页PPT,却遭LeCun反对

随OpenAI爆火的CoT,已经引发了大佬间的激战!谷歌DeepMind首席科学家Denny Zhou拿出一篇ICLR 2024论文称:CoT可以让Transformer推理无极限。但随即他就遭到了田渊栋和LeCun等的质疑。最终,CoT会是通往AGI的正确路径吗?

随着OpenAI o1的爆火,最近CoT也成了圈内热议的高频词。

靠着CoT的强力加持,o1直接在LLM领域首次实现了通用复杂推理能力,俨然是AI发展新范式的开端。

许多人惊呼:莫非CoT就是通往AGI的正确路径?

而且,o1这种慢思考模式不仅帮助LLM做数学和符号推理,甚至,还让LLM发展出了类人情感!

最近,斯坦福等机构学者发文证实:LLM在情感方面表现出的认知和推理比人类还像人类,背后最大贡献者竟然就是CoT。

就在这几天,风口浪尖上的CoT,又让AI社区掀起了一场风波。

谷歌DeepMind首席科学家称LLM推理无极限,LeCun田渊栋回怼

CoT爆火之后,谷歌DeepMind首席科学家Denny Zhou拿出了自己团队八月份的一篇论文,抛出了这样的观点:「LLM推理能力的极限是什么?那就是没有限制」。

他表示,谷歌团队已经用数学方法证明,Transformer可以解决任何问题,只要允许它们根据需要生成任意数量的中间推理token。

可以看出,Denny Zhou等人提出的中间推理token,跟o1的核心技术CoT非常相似。

传统的Transformer模型的致命弱点,就是擅长并行计算,但不擅长串行推理。

而CoT,恰恰解决了这个问题。

在这项工作中,Denny Zhou等人发现:传统的Transformer模型,只能解决AC0电路能解决的问题;但一旦加入CoT,Transformer几乎可以解决任何问题。

只要CoT步骤足够多,Transformer就能模拟任意大小的布尔电路,解决P/poly问题

也就是说,可以用数学严格证明,CoT可以让Transformer解决几乎所有能用计算机解决的问题。

利用CoT,可以模拟布尔电路中每个逻辑门的计算

这项工作暗示着,CoT为更强大的LLM推理提供了新的思路,CoT或将成为未来LLM发展的重要方向,而且很可能闪烁着AGI的火花。

Denny Zhou发帖后,立即引发了AI社区的热议。

多位研究者下场讨论,也惊动了其他大佬。

这不,就在刚刚,田渊栋和LeCun依次发表意见,回怼了Denny Zhou。

在他们看来,CoT的作用,被远远夸大了。

田渊栋表示,虽然CoT的确很有用,但Denny Zhou等人对其过于盲目追捧了,显然,CoT并不是我们所需要的一切。

在这篇论文中提到的是一种通用理论,可以通过显式构建Transformer权重,让其更好地适应特定任务。

然而这样,CoT的长度就会很长,这样的权重配置,能否通过梯度下降来学习呢?

理论上,2层多层感知器是可以拟合任何数据的,那我们就该相信它可以应用在所有场景中吗?

人类的推练链是十分简洁的,面对从未见过的问题,也能捕捉关键因素。但LLM可以吗?

如何在瞬间就学习或构建出这样的表征,是很令人着迷的。

田渊栋的帖子一发出,立刻就获得了LeCun的支持。

LeCun表示,自己本来也想发表类似的言论,不巧被田渊栋抢先了。

「2层网络和核机器可以无限逼近任何函数,达到我们想要的精度,所以我们不需要深度学习。」

从1995年到2010年,LeCun听到这个说法无数遍了。

当然,这个操作理论上是可行的。但如果真的在实践中应用所有相关的函数,光是第一层中的神经元数量就会多到不可思议。

对此,网友的评价是:收敛和等价证明被高估了,高效的学习策略被低估了,就是这样。

「我很高兴Python的存在,尽管Pascal是图灵完备的。」

一位从业者表示,自己的研究是从一个隐藏层MLP判别式开始,然后就是CNN或Deep NN等专业模型。

他的判断是:较小的模型更稳健、更可解释,而且通常很接近,但永远不会那么好。而使用更深层次的模型,总是会有额外的百分比。

很多人是「挺CoT派」的。比如有人表示理解LeCun的观点,但在多维扩展场景中,CoT绝对大有潜力。

而对于LeCun所担心的问题,有网友表示,LeCun在采用一种自上而下的策略,在这种情况下他必须控制所有的第一层输入,但其实,他并不需要。

因为,CoT通过创建了新的临时层,让人放弃了对这种控制的幻想。其解决方案就是,通过网络层的一般形式,来逼近注意力头本身。

有趣的是,该网友表示,自己的灵感来源是《物理学》上的一封信,表明量子全息拓扑能更有效地满足这一点。

即使爱因斯坦-罗森桥的边界相当大,它可以更连续地离散表示为无数不同的小层,横跨所产生的平坦空间。这,就是表征的力量所在。

有人表示,这个讨论没什么意思,本质上不过是「无限猴子定理」罢了。

让一只猴子在打字机上随机按键,当按键时间达到无穷时,几乎必然能打出任何给定文字,比如莎士比亚全集。

田渊栋:可以发展,但更复杂

最终,田渊栋也承认,谷歌这篇论文的思路的确有可取之处。然而由于涉及到不同的数据分布、模型架构、学习算法、后处理等等,问题还要更复杂。

正如Evolutionary Scale联创Zeming Lin所言:我们需要像乔姆斯基层次结构这样的机器学习模型。就像ML模型有NP、P、O(n^2) 等概念一样,Transformer或Mamba属于哪里呢?

而在田渊栋发帖的第二天,谷歌论文主要作者马腾宇也上线评论说:CoT的长度是可以超长的。

2层MLP中的神经元数量呈指数级,才能逼近几乎任何函数。

田渊栋回复他说:对那些可能需要指数数量的门的问题,CoT的长度可以很长。

这和2层MLP情况是一致的,因为无论拟合任意函数,都需要覆盖高维空间中的所有角,这是最坏的情况。

然而,现实世界的问题,是否有如此良好/简洁的表征呢?如果它们都像NC1一样,属于P问题,那么当然可以通过构建Transformer的权重来做到。

在最近一条X帖子中,田渊栋表示,自己的想法是,能够找到更短的CoT,同时使用专家迭代(穷人的RL)来保持最佳结果。

从公开信息来看,他推断o1也是在做类似的事情。至于初始化过程,可能是使用了大量高质量的人类推理链。

人类是如何想出简洁的CoT呢,这就不为人所知了。

趁此机会,他还宣传了一下自己团队Searchformer的论文。

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

总之,虽然我们还不知道如何拓展2层神经网络,但OpenAI似乎确信自己已经掌握了拓展CoT的秘诀。

最新讲座:揭示LLM推理的关键思想和局限

目前,这场空前热烈的讨论还在继续。

而关于LLM推理,Denny Zhou最近在UC伯克利也进行了一场类似主题的讲座。

他表示,自己对AI的期待是可以像人类一样从较少的示例中进行学习。

但曾经尝试的种种机器学习方法之所以都不成功,是因为模型缺失了一种重要能力——推理。

人类之所以能从较少的示例中学习到抽象的规律和原理,就是因为推理能力。正如爱因斯坦所说的,「Make things as simple as possible but not simpler」。(一切都应该尽可能简单,但不能过于简单)

比如,对于下面这个问题:

对人类而言,这是一道小学水平的「找规律」。

但机器学习需要海量的标注数据才能找出其中的规律。

而LLM的少样本学习更是难以解决。

但如果在数据中加入「推理过程」,LLM就很容易有样学样,学习到少量样本示例中展现出的规律,并给出正确答案。

通过这个简单的例子,Denny Zhou指出,关键想法是在数据中包含中间步骤,或者是解释原理(rationale),同时让模型写出推导过程。

这就是使用CoT背后的逻辑和直觉。

「中间步骤」,为何如此重要

DeepMind的研究者们,率先使用自然语言原理去解决数学问题。

关键就在于从头开始训练了一个序列到序列模型,从而通过一系列小步骤得出最终答案。

继这项工作后,OpenAI的研究者们建立了一个更大的数学单词问题数据集(GSM8K),其中包含自然语言基本原理,并利用它对GPT-3进行了微调。

这样,语言模型的中间计算步骤,就被展示了出来。

o1模型的奠基性贡献者之一Jason Wei在谷歌大脑工作时曾和Denny Zhou发表了一篇论文,指出CoT提示可以引导出LLM的推理能力。

Denny Zhou甚至更直白地指出样本「中间步骤」的重要性:无论是训练、微调还是提示,都需要给出中间步骤,才能让LLM在响应中也包含中间步骤。

实际上,这也是Denny Zhou、马腾宇最近论文的核心观点。如果能生成足够长的中间推理步骤,常数深度的Transformer模型也能解决任何串行问题。

CoT并不是一切

但是,这也并不意味着CoT可以包打一切,解决LLM推理的所有缺陷。

比如,模型很容易被无关的上下文干扰,这一点和人类思维也很类似。

实验中发现,在GSM8K数据集中添加无关上下文,可以导致模型性能出现高达20+百分点的损失。

此外,LLM的自我纠正能力也并不健全。

虽然有些模型在反思后可以成功修改错误答案,但也存在另一种风险——可能反而把正确答案改错。

那么,LLM的下一步应该往何处去?

Denny Zhou指出,虽然我们已经知道了模型推理有哪些缺陷和不足,但最重要的还是定义好问题,再从第一性原理出发去解决。

此处,再引用一句爱因斯坦的话:「如果有1小时用来拯救星球,我会花59分钟来定义问题,然后用1分钟解决它。」

一些质疑

虽然Denny Zhou的演讲内容相当详实,但「CoT实现推理无极限」的论断确实相当大胆,因此也引起了网友的反驳。

比如有人指出,前提中所谓的「无限多token」只是在理论上可行,在实践中未必如此。

token数量很有可能随输入增加呈现指数增长,问题变得越来越复杂时,token数量逼近无限,你要怎么处理?

而且,LLM推理和人类还存在本质差异。AI目前只能进行暴力搜索(brute-force),但人类有所谓的「启发式」思考,「直觉」让我们能将数百万种可能性快速缩减至几种可行的解决方案。

如果想达到AGI,AI系统就需要模拟出这种高效的问题解决路径。

参考资料:

https://x.com/ylecun/status/1836308172123807986

https://x.com/denny_zhou/status/1836482177959399714

https://x.com/tydsh/status/1836103159162495361




#MoE模型的前世今生

本文全面回顾了Mixture-of-Experts (MoE) 模型的发展历程,从早期的研究到最新的模型如Qwen1.5-MoE、DBRX和Mistral,探讨了MoE模型设计、训练策略和实验结果,并分析了如何通过专家专业化和细粒度控制提高模型效率和性能。

2024年3、4月这段时间,很多MoE模型扎堆发布,包括Qwen1.5-MoE、DBRX、Jamba和Mistral等。

下面这个表格列出了部分近期发布的MoE工作

模型

发布时间

备注

GPT4

2023年3月

23年6月George Hotz爆料GPT4是8×220B模型

Mistral-8×7B

2023年12月

Mistral AI,开源

LLAMA-MoE

2023年12月

github开源项目

DeepSeek-MoE

2024年1月

幻方量化(深度求索),国内首个开源MoE模型,有技术报告

abab6

2024年1月

MiniMax,号称千亿MoE,无开源,无细节发布

天工2.0

2024年2月

昆仑万维,无开源,无细节发布

Step-2

2024年3月

阶跃星辰,无开源,无细节发布

MM1

2024年3月

苹果,多模态MoE,无开源,有技术报告

Grok-1

2024年3月

X,开源

Qwen1.5-MoE-A2.7B

2024年3月

阿里巴巴,开源

DBRX

2024年3月

Databricks,开源

Jamba

2024年3月

AI21,开源

Mistral-8×22B

2024年4月

Mistral AI,开源

WizardLM-2-8×22B

2024年4月

微软,开源

天工3.0

2024年4月

昆仑万维,400BMoE

Arctic

2024年4月

Snowflake,480B,Dense-MoE Hybrid,开源

MoE模型目前风头正劲,就连前不久小米汽车发布会上,雷总也弄了个多模态MoE大模型做汽车智能中控

51c大模型~合集58_大模型

相信今年接下来的这段时间,MoE还会给我们带来更多的大新闻。

本篇将初步梳理MoE相关的一些经典工作和几个近期发布的中文MoE模型,从背景、思路和效果来了解MoE模型。

到文章发出的2024年4月为止,个人认为DeepSeek-MoE和Qwen1.5-MoE是中文领域做得比较好的两个工作,赶时间的朋友可以优先关注这两个工作。

1.时间线

这里先对后面会涉及的MoE相关工作,大致按时间线梳理一下,也列出一些关键信息包括模型结构、模型规模等。

(很多经典的MoE工作都出自Google)

1.1.上古时代

首先是很多MoE相关论文都会引用的,发表在1991年的论文《Adaptive Mixtures of Local Experts》,这篇文章出自Geoffrey Hinton和Michael I. Jordan两位大神之手。虽然在更早的时候就有MoE相关概念的工作,如原文所提到的,1988年这个概念就有了

This idea was first presented by Jacobs and Hinton at the Connectionist Summer School in Pittsburg in 1988.

但是大部分MoE文章还是认为是这个工作奠定了MoE的基础。

1.2.RNN时代

时隔二十多年,Google在2017年1月发布了《Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer》,把MoE带进了LSTM,训出了最大137B参数,专家数达到128k的LSTM模型。

1.3.Transformer时代

2020年6月,Google发布《GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding》,把MoE应用在encoder-decoder结构的transformer模型上,每两层将一个FFN层替换成一个MoE层,训出了模型参数量从12.5B到600B的一系列MoE模型,每层最大专家数也达到2048个。

2021年1月,Google发布《Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity》 ,在T5(encoder-decoder结构)的基础上,把FFN层替换成MoE层,并简化了routing策略,训出了最大1.6T参数量的switch transformer。Switch Transformers对scaling、蒸馏等做了很多详细的探索,影响深远,是很重要的一个工作。

2022年2月,Google发布《ST-MoE: Designing Stable and Transferable Sparse Expert Models》,也是一个基于encoder-decoder结构的MoE模型,最大模型有269B的总参数,32B的激活参数。ST-MoE可以说不仅仅是一个MoE工作,对于模型结构、工程实现、训练策略等都做了很多分析,个人认为其重要程度相比Switch Transformer都有过之而无不及。

1.4.GPT时代

  1. 2021年12月,Google发布了GLaM,《GLaM: Efficient Scaling of Language Models with Mixture-of-Experts》,训出了最大为1.2T参数量的decoder-only模型。(从encoder-decoder到decoder-only,可以看到Google内部在模型结构方向上也有很多不同的尝试)
  2. 2024年1月,幻方量化发布《DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models》,对在23年12月开源的DeepSeekMoE,给出了一些细节。
  3. 2024年,Databricks的DBRX、阿里的Qwen1.5-MoE-A2.7B、Mistral AI的Mistral-8x22B等陆续发布。

2.奠基工作

Geoffrey Hinton和Michael I. Jordan的《Adaptive Mixtures of Local Experts》是大多数MoE论文都会引用的最早工作。

  1. 思路

这篇文章大致的思路是这样的:对于比较复杂的任务,一般可以拆分为多个子任务。比如要求计算输入文本中有多少个动词和名词,那就可以拆分为“数动词”和“数名词”这两个子任务。

而一个模型如果要同时学习多个子任务,多个子任务相互之间就会互相影响,模型的学习就会比较缓慢、困难,最终的学习效果也不好。

因此这篇文章提出了一种由多个分开的子网络组成的监督学习方法。这些分开的网络,在训练过程中,分别学习处理整个训练数据集中的一个子集,也就是一个子任务。这个思路就是现代MoE的思路,每个子网络(也就是一个expert)学习处理一部分内容。

文章里把这个MoE的方法应用于vowel discrimination task,即元音辨别任务,验证了MoE设计的有效性。元音辨别指的是语音学中区分不同元音的能力,在语音学中,模型需要学习辨别不同的元音因素,以便准确地理解和识别语音输入。通过让多个子模型分别学习分别学习不同元音(a、e、i、o、u)辨别的子任务,最终效果得到了提升。

  1. 模型设计

下图展示的就是这个MoE的思路:各个expert network和gating network接收同样的输入,每个expert给出各自的处理结果;而gating network输出每个expert的权重,就像一个开关一样,控制着每个expert对当前输入的打开程度,只是这个开关不是离散的,而是stochastic的,给出的不是true和false,而是权重。

51c大模型~合集58_大模型_02

  1. 损失函数优化

实际上,MoE这个idea在这篇文章之前就有了。如论文中所提,Jacobs和Hinton在1988就讨论过。但是之前的工作在loss的设计上,和ensemble更相近,多个expert之间更倾向于合作,每个expert会学习其他expert的residual部分。

具体来说, 对于case , 假设第  是对应的ground truth, 第  个expert的输出是  是 gating network给第  个expert分配的权重, 那么以前的工作所使用的损失函数  计算如下

51c大模型~合集58_大模型_03

这样的损失计算方式,是把期望输出和所有expert输出的混合结果进行比较。

这样做的结果是,在训练过程中,每个expert学习的其实是其他expert的组合结果所剩下的残差。这样的学习目标并不能很好迫使每个expert单独输出好的结果,因此不能得到稀疏的模型。

从另一个角度来看,这个损失计算把所有专家耦合在了一起。即当一个expert的输出发生了变化,所有expert的组合结果也会变化,其他所有的expert也需要做相应的改动来适应这个变化。因此各个expert之间更加倾向于合作,而不是相互竞争并单独给出好的结果,让gating network输出稀疏的结果。

虽然可以使用如增加辅助损失函数的做法,迫使模型给出稀疏激活的结果,但是这样相当于增加了很强的先验正则化,对模型最终效果也是有损害的。

而Hinton和Jordan在这个工作里,提出更简单的做法是对loss计算进行修改,使得各个expert之间的关系从合作变成竞争。

假设gating network每次随机选择一个expert,损失计算如下

51c大模型~合集58_大模型_04

在这个损失函数中,每个expert的输出结果会单独和期望结果进行对比,这就要求每个expert单独给出完整的结果,而不是仅学习其他expert的残差。

这样的loss计算具有localization的特性,即如果一个训练case错了,那么会被修改的主要是被gating network选中且出错的expert,以及负责分配权重的gating network,而不会很大地影响其他expert。

此外,localization还体现在,每个expert只会负责处理输入空间中某个特定子空间的向量,而不是完整的输入空间。

这样一来,不同的expert之间不会直接相互影响,虽然还是有间接的影响,比如某个expert的输出变了,gating network可能会分配新的权重,但是至少不会改变其他expert error的符号(+,-),即优化的方向。

最终的结果是,对于给定的输入,这样的系统会倾向于以高权重分配单一一个expert来预测结果(但其他权重还不是真正的0,不是真正的稀疏)。

  1. 实操技巧

上面提出的这个loss计算,理论上没有问题,实际上也能训练,但是为了得到更好的效果,作者把原loss计算作了如下变化:先指数化再求和,最后再取对数,得到了优化loss。看下变化前后的对比

51c大模型~合集58_大模型_05

这样做有什么好处呢?来对比一下原loss函数和优化后的loss函数的求导结果

51c大模型~合集58_大模型_06

相比原loss函数的导数,优化后的loss函数的导数,把当前第 ii 个expert的表现,和其他expert联系起来了。这样能够更好地衡量expert ii 对当前case的处理结果好坏。特别是在训练初期,gating network的权重是近似平均分配的,那么使用原loss函数的结果是,对当前case效果最好的expert,学习速度是最慢的(因为loss最小);而优化的loss函数则可以让当前最好的expert的学习速度最快。相当于让“有天赋”的专家在对应的子任务上尽快提高水平。这样就强化了localization的特征,使得各个expert更快拟合到自己擅长的部分,加速训练。

(BTW,优化后的这个loss导数,和现在的对比学习形式上看起来也很相似)

这个工作在今天看来不很复杂,但是思路还是很踏实有效的,给MoE奠定了基础。

3.LSTM MoE

Google在2017年1月发布了 《OUTRAGEOUSLY LARGE NEURAL NETWORKS: THE SPARSELY-GATED MIXTURE-OF-EXPERTS LAYER》,把MoE应用到了LSTM上,训出了最大137B的LSTM模型。这样规模的模型哪怕放在7年后的今天,也是巨无霸的存在,需要解决很多工程问题。

相比1991年的工作,这里做到了真正的稀疏激活,从而可以在实际计算量较少的情况下,训练巨大的模型。

3.1.背景

虽然当时Transformer还没出来,大规模模型的竞赛也还不像今天这么激烈,但是在多个领域中(文本、图像、音频),已经有不少工作反复证实了一件事:模型容量越大,能训出来的效果越好,上限越高。但是模型越大,需要的训练数据也就越多,二者共同作用下,就造成了训练开销基本是随着模型增大,以平方关系在增长。

在这个背景下就出现一些conditional computation,条件计算的工作来解决这个问题。conditional computation就是根据输入,有选择地只激活部分网络模块。那么MoE其实就是一种条件计算的实现。由于不用激活全部参数,训练所需的计算量就大大减小,整体计算成本就不用以平方速度增长。

虽然理论上计算量的成本下来了,不过实操起来还是会遇到几个问题:

  • 训练的时候,在MoE结构下,每个expert的batch size比整个模型的batch size小了。比如模型的batch size是32,一共有16个expert,那实际上一次迭代平均每个expert只能分到2个训练样本。而batch size对训练效率影响是很大的,大的batch size摊小了参数传输和更新的成本。如果直接增大模型的batch size,又会受显存和通讯效率的限制。
  • 训练数据量不足。要训大模型就需要大量的数据,让模型参数充分学习。在当时的背景下,大规模的NLP数据是比较缺的。当然如今数据集多了很多,特别是预训练数据,这个问题现在来看没有那么突出了。
  • 损失函数的设计。如何使用合适的损失函数来训练模型,提升效果,并且使得模型的负载比较均衡,这是一个不容易解决的问题。
  • 集群通讯问题。一个GPU集群的计算能力可能比设备间网络带宽的总和高出数千倍,因此设备间的通讯很可能成为训练效率的瓶颈。为了计算效率,就要使得设备内计算量和所需的通讯量的比值,达到相应的比例。
  • GPU计算特点。GPU做数学计算很快,但是并不擅长做branching(if/else),因此MoE的工作基本上都是用gating network来控制参数的激活。这个严格来说不算是新的挑战了,应该说是根据计算设备沿用下来的设计。

要解决好这些问题,才能训出比较好的模型来。

3.2.模型设计

  1. 整体结构

先看下模型结构的设计。

论文里使用的是两个LSTM层,中间夹着一个MoE层,最上面和最下面分别还有一个embedding层和一个任务输出层,结构如下图所示

51c大模型~合集58_大模型_07

每个expert是一个简单的feed-forward neural network。一共有n个expert,gating network输出是一个稀疏的n维向量

51c大模型~合集58_大模型_08

 是第  个expert的输出,  是gating network给出的第  个expert的权重。

如果  为 0 , 就不用计算对应的那个expert了, 节省了计算。

如果expert的数量特别多,可以用two-level hierarchical MoE,即使用两层gating network,第一层的gating network先选择一个包含一批expert的分支,每个分支又有一个单独的gating network来选择具体的expert。类似word2vec训练所用的hierarchical softmax。这样做可以节省一些计算。

  1. gating network

那具体gating network怎么设计呢?

如果对输入进行线性变换,再简单加上一个softmax,那得到的是一个非稀疏的gating function

51c大模型~合集58_大模型_09

在这个基础上,使用一个topk函数,只保留最大的k个值,其他都设为﹣∞(softmax之后变成0),这样就能只选择部分expert,得到了稀疏性。

论文提到,虽然理论上这个形式的sparsity(topk)会造成gating function的不连续,不过在实操中暂时没有遇到相关问题。

在这个基础上,在输入再加上一个Gaussian noise,这个noise的大小由另外一个可学习的参数来控制。整体的计算公式如下

51c大模型~合集58_大模型_10

其中用来调整noise的非线性函数softplus是个类似ReLU的激活函数,但是更为光滑,函数图像如下

51c大模型~合集58_大模型_11

这里添加噪声的原因和负载均衡有关,下面来分析下负载均衡。

3.3.负载均衡

在MoE模型训练的实验中观察到,如果不对gating network进行干预,任由模型自由学习,那么最终模型会倾向于收敛到“总是选那几个固定的expert”的状态,而其他expert几乎不会被使用。这就是负载不均衡的状态,如果这些专家分布在不同的计算设备上,结果就是有些设备输入排队特别长,而有些设备基本处于闲置状态,这明显不是我们想要的。

这种负载不均衡的状态有自我加强的属性,因为一旦开始出现部分专家被较多选中激活,这些专家就会得到更充分的训练,从而获得更好的效果,进而又提升被选中激活的概率。

针对这种情况,之前有一些工作使用hard constraint来缓解,比如当某个expert激活次数达到上限,就把它从候选集合中移除。hard constraint明显会对模型效果有影响。而这篇论文使用的是一种soft constraint。

具体来说,对于每个expert,定义了一个它在当前这批输入数据里的重要性指标,如以下公式所示

51c大模型~合集58_大模型_12

 是gating network给出的权重, 是一个维度等于expert数量的向量。

基于这个重要性指标, 论文定义了一个辅助损失 , 训练时和模型的交叉熵损失加到一起。 的计算方式如下

51c大模型~合集58_大模型_13

其中权重  是手动设置的超参, 实验的推荐值是  是coefficient of variation。coefficient of variation离散系数, 是概率分布离散程度的一个归一化量度, 定义为标准差  和均值  的比值。

对于MoE来说, 确定激活的expert数之后, 均值是固定的。如果 expert的gating很不平衡, 标准差就会很大,离散系数也会很大,使得  变大。

但是这里还是有问题, 虽然均衡的负载可以推导出  较小的结论, 但是  较小却不能保证负载均衡。也就是说  较小只是负载均衡一个必要不充分条件。

比如一个expert可能以很高的权重被分配到一个样本, 而另一个expert可能以不太高的权重被分配到好几个样本。这种情况下对所有输入数据的gating权重进行求和, 仍然可能呈现出均匀的表象 (离散系数比较小),但这并不符合我们的要求。

为了解决这个问题, 需要额外再加上一个损失  。这里就要用到添加在每个expert输出上的随机噪音了。

我们想要各个expert的负载均衡,也就是每个专家需要处理的样本数基本一致,但是分配到各个专家的样本数是个离散值,因此没有办法直接用于back propagation,而  就是对各个expert负载的一个平滑评估。

回想一下前面在设计MoE的时候,定义了 为KeepTopK函数的输入

51c大模型~合集58_大模型_14

那么这里先定义一个 , 表示在除去  中的第  个分量之后, 排在第  大的值。基于这个, 再定义  为:固定其他分量已经选取好的noise, 重新给第  个分量再添加一次noise, 结果比 kth_excluding  大的概率, 公式如下

51c大模型~合集58_大模型_15

通过这个noise, 我们把"第  个专家是否处理这个输入"的离散值, 变成"第  个专家处理这个输入的概率"这样一个平滑的估计,  就表示这个概率。这个概率可以简化写成

51c大模型~合集58_大模型_16

其中  是标准正态分布的CDF。

接下来就可以把第  个expert的负载定义为

51c大模型~合集58_大模型_17

有了每个expert的负载衡量,就可以和前面第一个负载均衡损失一样,计算新的负载均衡损失了

51c大模型~合集58_大模型_18

 是手动设置的超参, 实验的推荐值是 0.1 。

相比前面的  是对负载是否均衡更细粒度的评估。

论文中提到一个细节, 在刚开始训练的时候, 希望模型分配的 expert尽量均衡, 因此把  和  都设为 0 , 这样相当于没有信号, 也没有噪音。

最终使用负载均衡之后的效果如下

51c大模型~合集58_大模型_19

使用这两个负载均衡损失之后,能达到接近完全平均分配的效果。

3.4.实验

  1. 解决工程问题

针对前面提出的一些工程问题,论文给出一些方案

(1)batch size减小

由于稀疏激活的原因,每个expert的batch size会变小。假设每次在n个expert中选择k个,模型训练的batch size为b,那么每个expert的batch size就是kb/n。论文通过以下这几种方法来提升每个expert的batch size:

  • 混合使用数据并行和模型并行。本来在使用数据并行的情况下,每个模型副本是异步处理各自的数据的。而这里做了优化,各个副本的batch是同步处理的,这样就可以把多个模型副本的batch组合起来。对于非MoE部分的参数,依然使用标准的数据并行机制;而对于每个expert,则在整个集群中只保留一个副本。如果模型分布在d个设备上,那每个expert就能得到一个kbd/n的batch size。
  • 对于LSTM模型,在时间步上展开,就能把batch size提升相应的倍数。

(2)集群通讯问题

另一个挑战就是平衡集群计算量和通讯量的关系。

对于每个expert来说,主要的通讯就是input和output的传输。而每个专家的主要计算量就是两个全连接层,大小分别为[input_size, hidden_size]和[hidden_size, output_size]。对于GPU来说,计算速度可能是通讯速度的1000倍,那我们就需要把计算量设计得足够大。最简单的做法就是把hidden_size提高,使得每个expert的内部计算量比通讯量大1000倍,以保证通讯不会成为训练的瓶颈。

  1. 模型容量 & 参数效率

为了验证模型容量提升带来的收益,以及MoE模型的参数效率(即和dense模型同样推理计算量下能达到的效果),训练了包含4/32/256个expert的flat MoE模型,和包含256/1024/4096个expert的hierarchical MoE模型。每个expert大约是1M参数量,对于所有flat模型都是激活4个expert,而对于hierarchical MoE是每层gating激活2个。

效果如下图。左边的图显示,随着模型容量提升,测试的ppl有明显下降。右边的图将相近模型容量的dense模型和MoE模型的效果放在一起对比,可以看到MoE模型在相同模型容量下,效果更好

51c大模型~合集58_大模型_20

  1. 更大的模型

前面几个模型训练用的数据量不是很大,模型最大也只有4B左右,训练不久就出现diminishing returns。

为了验证更大数据集 + 更大模型的收益,在100B token的语料上,分别训了包含32, 256, 1024,4096, 16384, 65536, 和131072个expert的MoE模型,最大的模型达到了137B的参数量。

各个模型对比如下表。整体来看,增加数据和模型容量,是可以继续获得提升的。

51c大模型~合集58_大模型_21

从这里还可以看出,在专家数量不太多时,提升专家数量效果有提升,但是收益会慢慢减小,甚至会出现专家数量太多,效果反而下降的情况。

  1. Expert Specialization

按照MoE的设计思路,不同的专家应该学习到不同的子任务,但是实际上是否是这样呢?

论文里把模型中不同的专家分配到token拿出看,发现确实有比较强的specialization效果,不同的专家处理不同的内容,如下所示

51c大模型~合集58_大模型_22

4.GShard

  1. 简介

2018年,随着Bert的发布,transformer结构彻底火了起来。2020年6月,Google发布《GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding》,把MoE用到了encoder-decoder结构的transformer模型上。MoE开始变成我们现在熟悉的样子了。

GShard这个工作做了很多的实验,训了很多规模巨大的MoE模型,最大的达到了600B。训练的一系列模型的参数如下表

51c大模型~合集58_大模型_23

在expert数量的设计上,延续上面LSMT MoE工作的思路 -- expert越多,效果越好。(站在24年这个时间节点来看,太多的expert未必适合;但是也不能说这个思路一定错误,毕竟事物的发展是螺旋式的,就像ChatGPT出来之前大多数人都在魔改各种Bert,而GPT已经坐了几年冷板凳了。)

GShard论文中很大的篇幅在介绍工程实现和优化,这也是MoE模型训练最大的痛点。关于工程框架的内容比较硬核,因此这里不会展开讲太多,而是关注在模型算法层面上。

  1. 模型设计

先来看下模型设计。

Google在那段时间走的是encoder-decoder transfomer的技术路线,因此GShard也是基于encoder-decoder transfomer的模型结构。

GShard的模型设计是,在encoder和decoder中,每两层把其中一个FFN层替换成MoE层。对于总共有N层的模型,则有N/2个MoE层,如下图

51c大模型~合集58_大模型_24

每层会选择最多top-2 expert来激活。为什么是最多,后面解释。

GShard在上面这篇LSTM MoE论文的基础上,改进了gating function和auxiliary loss function。

从公式来看,MoE层的具体计算如下

51c大模型~合集58_大模型_25

其中  是MoE的输入token,  和  分别是输入输出的线性变换矩阵。向量  就是gating function的输出。

GShard在gating function的设计上提出了两个要求:(1)负载均衡(2)高效扩展。

负载均衡和前面讲的一样,很好理解。而为什么要高效扩展,因为如果要对N个token分别进行E个expert的分配,在N能达到百万甚至千万级别,而E也有几百上千的情况下,就需要一个高效的分布式实现,以免其他计算资源等待gating function。

为了满足这些要求,gating function提出了以下机制

(1)专家容量 expert capacity

为了确保负载平衡,我们不希望有少量expert需要处理很多token,因此强制规定了每一个expert所负责处理的token数量有一个最大值,这个最大值就叫专家容量,在这里设置为2N/E,相当于平均分配的量。

这个expert capacity通过GATE(·)给每个expert维护一个计数器来监控。如果一个token所选的两个专家当前处理量都已经超过设定的专家容量,那么这个token就不会被当前层的任何expert处理,而是直接通过残差链接透传到下一层。

(2)分组分配 Local group dispatching

给所有输入token分成了G组,不同的组并行处理,每个组相应地也把组内专家容量变成2N/EG。

这样做相当于在前向推理时,把大的batch拆分成小的batch,每个小的batch就是一个group。这样做的好处是通讯的时候(特别是all2all)只需要在每个group内进行就可以了,减少了通讯量。

而进行反向计算的时候这些group可以合起来一起用,相当于进行了gradient accumulation。

(3)辅助损失函数 Auxiliary loss

光设置专家容量并不能使得gating负载均衡,而且会导致大量溢出。参考前面LSTM MoE的工作,这里也定义了一个辅助损失函数,来帮助负载均衡。辅助损失函数设计如下

51c大模型~合集58_大模型_26

 是token数,  是专家数,  是分配给第  个专家的token数,  是第  个expert在  个 token中获得的平均权重。

思路是, 本来是要算  的平方的, 但这是离散值不可导, 因此把平方中的一个  换成了 ,  是第  个expert在  个token中获得的平均权重。在平均分配的情况下, 这个loss达到最小。

相比前面的负载均衡损失,这个loss的设计就简单许多。

gating的整个算法如下

51c大模型~合集58_大模型_27

(4)随机路由 Random routing

前面提到,每层会选择最多top-2 expert来激活,就是因为有随机路由的机制。直观来说,就是认为如果top-1专家的权重很高,而第二个专家的权重如果较小,那很有可能只用第一个专家就足够解决问题了。

随机路由的机制是top-1的专家永远会被激活,而第二个专家如果权重很小,就认为它可以被忽略。具体来说,会以与第二个专家的权重g2成比例的概率激活第二个专家。

  1. 效果

最后看一下模型在翻译任务上的效果

51c大模型~合集58_大模型_28

5.Switch Transformer

2022年4月,距离ChatGPT发布还有半年,Google发布了《Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity》(实际上2021年Google就提出Switch Transformer了)。

Switch Transformer和GShard一样,是encoder-decoder结构,基于T5开发的,具有1.6T的参数,2048个expert。

和前面的很多工作一样,Switch Transformer有一个出发点,那就是参数量越大,模型效果越好,并且可以通过稀疏激活来减少总计算量。

但是相比其他工作,Switch Transformer给出了一个更为具体的描述,那就是模型参数量可以是一个独立于总计算量的,单独的缩放轴。也就是说,在改变参数量的同时,(几乎)不改变训练和推理的计算量,就可以带来效果的提升。因此Switch Transformer关注在“同样的FLOPS/token的计算量”下,如何扩大模型,提升效果。

Switch Transformer所做的工作还是比较多的,包括:

(1)模型结构简化:简化了Transformer上的MoE架构,提出Switch Transformer架构。

(2)MoE to dense:把训出来的效果较好的MoE模型蒸馏到dense模型,在压缩MoE模型99%的参数的情况下,效果还是比直接训练dense模型好。

(3)训练和微调技术:

  • 首次使用bf16成功训练MoE模型
  • 更适合MoE结构的模型初始化
  • 增加的专家正则化,改善了稀疏模型的微调和多任务训练

(4)训练框架:结合数据、模型和专家并行性,训练了超过1T参数的MoE模型。

(5)多语言:在多语言数据集上训练,发现101种语言效果普遍有提升。

(6)训练效率:在同样的FLOPS/token的计算量下,Switch Transformer模型收敛速度有数倍的提升。

5.1.模型设计

Switch Transformer的模型结构如下图,类似GShard,把transformer每层的FFN替换成MoE层

51c大模型~合集58_大模型_29

Switch Transformer一个重要的改进点就是简化了gating function的做法(Switch Transformer论文里叫routing)。

之前的工作大多探索了选择k个expert的做法,而Switch Transformer则直接把gating简化为只选择1个expert,即k=1。这样的MoE层叫做Switch layer。

这样简化之后,routing的实现更简单,router的计算量小了,也减少了通讯量。

5.2.负载均衡

同GShard一样,Switch Transformer规定了一个专家容量expert capacity,来限制每个expert在一个batch里能处理的最大token数。

如果一个token被分配到了一个已经满载的expert,就会出现overflow,那这个token在本层就不会被处理,而是直接通过残差链接,透传给下一层。这点也同GShard一样。

在Switch Transformer,专家容量通过容量系数capacity factor来控制。

51c大模型~合集58_大模型_30

一个大的capacity factor意味着每个expert能够处理更多的token,从而减少overflow情况的发生,但是计算量和通讯量的压力也会增大,所以这是一个需要权衡的参数。

下图给出了一个不同capacity factor下的例子

51c大模型~合集58_大模型_31

那么如何设定expert capacity呢?

如果capacity factor为1的话,只有在完全平均分配的时候,才不会出现overflow的情况。而太大的capacity factor则可能造成算力和存储的浪费。

首先,实验中发现expert的数量和overflow的数量之间没有什么关系,所以在所有实验中,所有MoE和Switch Transformer模型都用128个专家。

不同的capacity factor对模型影响如下表。可以看到,大的容量系数相对来说能取得更好的效果(因为更少的overflow),但是相应地,大容量系数的模型处理速度就会慢一些。

51c大模型~合集58_大模型_32

经验上,低的token丢弃率对模型的scaling很重要,想要训练超大规模的模型,就要解决这个问题。而通过负载均衡损失就可以确保良好的平衡,使得在使用较小容量系数的情况下,overflow尽量少,从而兼顾效果和计算速度。

关键问题来到负载均衡损失怎么设计。

给定  个expert, 和包含  个token的batch , 负载均衡损失是这么计算的

51c大模型~合集58_大模型_33

 表示被分配到第  个expert的token数, 这个不可导

51c大模型~合集58_大模型_34

 表示整个batch每个token分配给第  个expert的概率的总和, 这个可导

51c大模型~合集58_大模型_35

这个损失的设计其实和GShard中的也是一样的。

在完美平均分配的情况下,  和  这两个向量都是 , 这个时候负载均衡损失是最小的。

 扫描了1e-5到1e-1, 发现设为1e-2, 已经足够大保持负载平衡, 同时不过分影响模型收玫。

观察到 , 所以负载均衡Ioss还乘了个 , 这样可以保持无论使用多少个expert, 在平均分配的情况下, loss都能保持相同的常数。

5.3.实验

  1. 一些训练的trick

(1)选择性地使用bf16

半精度训练会带来一些训练的不稳定。因此选择性地使用bf16,具体来说,routing function内部使用单精度,其他部分使用半精度,这样既不影响通讯,也能提高效果。

为什么选择在routing提高精度?因为softmax对误差特别敏感,exponential计算会极大放大输入中的rounding error,因此高精度对routing很重要。

(2)较小的参数初始化

从截断正态分布中抽取元素来初始化的模型参数, 平均值 , 标准差 , 其中 s 是超参,  是权重张量中的输入单元数量(e.g. fan-in)。

论文建议将默认的Transformer初始化尺度s=1.0减少10倍。这个方案在实验中既提高了质量又降低了训练不稳定性的可能性。初始化实验对比如下表

51c大模型~合集58_大模型_36

(3)增大dropout

由于Switch Transformer参数量很大,在微调的时候更容易过拟合,因此一个简单的方法就是增大dropout,效果如下

51c大模型~合集58_大模型_37

可以看到大的dropout有效果,并且dense层保持0.1,只有expert层增大dropout效果更好。

  1. scaling

对Switch Transformer结构预训练的scaling做了一些实验。

(1)Step-Basis

首先是验证在固定训练step的条件下,增大expert数量带来的提升,如下图所示。

左边是不同规模的模型在相同step下收敛的结果,可以看到在保持相同计算量的条件下,只通过增大专家数量来提升规模,就有明显的收益。右边则展示训练过程中,不同规模的模型在各个step下的效果。

51c大模型~合集58_大模型_38

(2)Time-Basis

虽然Switch Transformer可以保持计算量不变的情况下提升模型规模,但是专家数量的增多会带来额外的通讯成本,所以即使训练的step数相同,实际的训练时间也不同。因此这里要回答的问题是,给定一个固定的训练时长,Switch Transformer是否相比dense模型仍有收益。

答案是肯定的。下图展示以训练时长为横轴,Switch Transformer和dense模型的效果对比。Switch Transformer收敛到dense模型最终效果的时间只有dense模型的1/7。

51c大模型~合集58_大模型_39

(3)和更大的dense模型对比

前面Switch Transformer和dense模型的比较,是基于相同计算量的前提。那么Switch Transformer是否具备超越更大规模dense模型的能力?

下图在Step-Basis和Time-Basis对比了64个专家的Switch Transformer和T5-Large。无论是相同step还是相同时间下,Switch Transformer都有明显优势。

51c大模型~合集58_大模型_40

  1. SFT效果对比

在GLUE和SuperGLUE等下游任务上微调,和dense模型对比。

对于各个模型,每两百步进行一次eval,选最好的效果,尽量保证公平。结果如下表,大部分任务都有明显的提升。

51c大模型~合集58_大模型_41

  1. 模型蒸馏

虽然Switch Transformer在相同计算量下效果更好,但是部署几百B甚至T级别的模型,还是不太方便,因此考虑把稀疏模型蒸馏到dense模型上来进行推理。

论文中给出了几个蒸馏的技巧:

  • 初始化的时候,把Switch Transformer模型中的非稀疏部分用于初始化dense模型
  • 蒸馏所用的label,25%来自教师模型,75%来自ground truth,加权求和

预训练模型的蒸馏效果如下,相比无蒸馏训练的dense模型,把同样计算量的稀疏模型蒸馏到dense模型,dense模型大约能获得Switch Transformer提升部分30%的增益。

51c大模型~合集58_大模型_42

更进一步,用不同规模的稀疏模型下进行蒸馏,结果如下表,可以实现高达99%的压缩率

51c大模型~合集58_大模型_43

除了预训练模型,微调模型也可以蒸馏,效果如下,在SuperGLUE也有一定的提升

51c大模型~合集58_大模型_44

6.GLaM

  1. 简介

2021年12月Google发表了《GLaM: Efficient Scaling of Language Models with Mixture-of-Experts》,训练出最大参数量为1.2T,每层包含64个专家,每个token激活参数量为96.6B的MoE模型。

相比Switch Transformer,GLaM的训练数据量要大得多,达到了1.6T token。

下表是论文中给出的,当时一些大规模模型的对比

51c大模型~合集58_大模型_45

虽然模型总参数量比GPT-3(175B)大很多,但是训练成本却比GPT-3低很多,推理速度也更快,而且在多个NLP任务上的效果都超越了GPT-3,如下所示。

51c大模型~合集58_大模型_46

51c大模型~合集58_大模型_47

  1. 模型设计

模型设计上,和Switch Transformer一样,每两层把一个FFN替换成MoE层。但是和Switch Transformer不同,GLaM用回了每次激活两个expert的方案,模型结构如下图。

51c大模型~合集58_大模型_48

除此之外,模型在结构上海做了一些其他改动:

(1)位置编码

使用XLNET的相对位置编码。

(2)激活函数

In the non-MoE Transformer feed-forward sub-layers, we replace the first linear projection and the activation function with the Gated Linear Unit,which computes the component-wise product of two linear transformation of the input, followed by a Gaussian Error Linear Unit.

  1. 实验

训练中的一些trick:

(1)参考《Lingvo: a modular and scalable framework for sequence-to-sequence modeling》,在梯度出现NaN或者Inf的时候就跳过那一步更新。

(2)如果在BP更新的时候遇到NaN或者Inf,则重新加载更早的checkpoint并跳过有问题的数据来避免NaN或者Inf。

论文训了一系列模型来探索MoE,这些模型的设置如下表

51c大模型~合集58_大模型_49

GLaM和dense模型的评测结果如下

51c大模型~合集58_大模型_50

可以看到GLaM MoE的有效参数效率一致高于dense模型。

7.ST-MoE

2022年2月,Google发表了《ST-MOE: DESIGNING STABLE AND TRANSFERABLE SPARSE EXPERT MODELS》。ST-MoE可以说不仅仅是一个MoE工作,对于模型结构、工程实现、训练策略等都做了很多分析,可以说是MoE的必读论文。

ST-MoE最大模型包含269B总参数量,和与32B dense模型相当的激活计算量。论文中把模型称为称为Stable Transferable Mixture-of-Experts,或者ST-MoE-32B。

在MoE层的使用上,ST-MoE比Switch Transformer更“节省”一点,每四层才替换1个MoE层。

论文中主要训了两个规模的ST-MoE模型,分别有4B和269B的总参数量。ST-MoE以及其他用于对比的模型参数如下表

51c大模型~合集58_大模型_51

7.1.稳定性与效果分析

论文通过对乘性操作、噪音和裁剪这几个内容进行探索,来指导模型的设计。

  1. 乘性操作对模型稳定性和效果的影响

论文首先研究了乘性操作对模型的训练稳定性和最终效果的影响。

之前已经有一些工作表明更多的乘法对模型效果有收益。

Some architectural improvements involve more multiplications than additions or do not sum many items at once

(1)GELU Gated Linear Units (GEGLU)

第一个例子是关于激活函数的。GLU是一个对两个输入向量进行component-wise相乘的操作,之后被扩展成GELU-Linear FFN变体,用于替换transformer中的ReLU FFN变体,其计算如下

51c大模型~合集58_大模型_52

这样在一些其他工作里已经被证明了对模型效果有提升。

(2)RMSNorm

第二个例子是RMSNorm中的缩放参数,也就是下面公式的 g。

51c大模型~合集58_大模型_53

ST-MoE针对GEGLU和RMSNorm这两个乘性操作,做了实验,结果如下表。

51c大模型~合集58_大模型_54

发现移除乘性操作可以使模型稳定性更好(训练中发散的情况减少),但是最终效果变差了。

(3)增加dense层

ST-MoE还验证了在expert层增加更多dense层的效果。结果发现增加更多的乘法交互(增加dense层),可以在带来效果收益的同时,基本不影响推理速度,如下表所示。

51c大模型~合集58_大模型_55

(4)增加一个bias

在FFN层的第一个矩阵乘法后面增加一个可学习的bias B,分别通过加法和乘法加入

51c大模型~合集58_大模型_56

乘法的收敛速度更快,效果也更好。

上面这些实验显示,后续在模型效果的探索方向可以往多使用乘性操作去考虑。

  1. noise对模型稳定性和效果的影响

接下来ST-MoE探索了“噪音可以提升模型稳定性”的假设。

通过input-jitter,给router的输入logits乘以一个在[1e-2, 1e2]之间的均匀随机变量来添加噪音。

51c大模型~合集58_大模型_57

结果是增加noise之后,有助于让模型的收敛更加稳定,但是对模型最终效果有负面影响。

这里论文还提到,小模型上的结果不一定能直接推广到更大的模型上,比如在小模型上稳定的配置,在大模型就可能就不稳定了。因此还是需要在大模型上也进行充分实验。

  1. 限制激活值和梯度值对模型稳定性和效果的影响

对activation和gradient进行限制是目前广泛应用的提升模型训练稳定性的手段。在反向传播过程中,通过裁剪梯度的范数来缓解梯度爆炸,就是一种常用的限制手段。

但是在ST-MoE训练269B的大规模模型时,发现裁剪会使得模型收敛的效果很差。

为了解决这个问题,ST-MoE在训练中引入了router z-loss,形式如下。

51c大模型~合集58_大模型_58

 是token的数量,  是专家数,  是router的输入。

z-loss会对进入router的较大的logits值进行惩罚,以达到尽量减少进入指数函数的较大误差的目的。什么意思呢?后面来解释,先看下使用z-loss的效果。

51c大模型~合集58_大模型_59

ST-MoE认为,在模型训练过程中,由于精度不足或者其他问题,会产生很大的值,从而引入误差。而对梯度进行裁剪是在误差发生之后,并且裁剪本身也造成了数据的不连续性,某种程度上,裁剪本身也是一种误差。相反地,z-loss自然地鼓励模型产生较小的对数值,因此可以更精确地建模。

z-loss乘以一个权重超参 加入到模型训练的总损失中,如下式所示。

51c大模型~合集58_大模型_60

ST-MoE经过实验,选择了。

 是 auxiliary load balance loss负载均衡损失,ST-MoE这里使用了和GShard/Switch Transformer所用的相同的损失计算,这里回顾一下:

51c大模型~合集58_大模型_61

 是专家数,  是包含  个token的batch。 表示被分配到第  个expert的token数, 这个不可导;  表示整个batch每个token分配给第  个expert的概率的总和, 这个可导。

  1. 数据精度对训练效率和训练效果的影响

目前大部分的大模型训练都使用混合精度训练:模型权重以float32格式存储以进行梯度更新,然后在正向和反向传播的矩阵乘法中转换为bfloat16;此外,所有激活值都以bfloat16存储和操作,而allreduce通信可以在bfloat16或float32数值精度中进行。

对于ST-MoE-32B的训练,allreduce的数值使用半精度可以加速训练,然而这也会使训练变得不稳定,因此ST-MoE保持allreduce的数值精度为float32。

bfloat16和float32在不同范围的舍入误差如下表所示

51c大模型~合集58_大模型_62

可以看到,表达的数值越大,舍入误差越大。而z-loss限制了数值大小,也就将误差值限制在比较小的范围。

MoE模型天生对舍入误差敏感,因为它们由于router的使用而有更多的指数函数,而指数函数会将小的输入误差放大很多,这就加剧舍入误差所导致的训练不稳定。

另外,ST-MoE有一个策略:只有当排第二的专家的权重大于等于第一的专家的1/5时,token才会被路由到其第二位专家,否则第二个专家就会被忽略。

因此虽然舍入误差不会改变softmax运算中各个概率的排序,但它确实会影响MoE中第二个专家的激活。

7.2.模型设计

dense模型的设计有scaling law进行指导,但是MoE模型的设计比dense模型多出几个要考虑的点:

(1)使用多少个expert

(2)怎么routing

(3)专家容量系数怎么定

(4)硬件的影响

(这里提到MoE模型的scaling law工作:《Unified scaling laws for routed language models》,可以了解一下)

  1. 使用多少个expert

ST-MoE认为,从以往的经验来看,在总专家数量较少的情况下(如8/16/32),提升专家数量,能有收益。但是在特别稀疏的情况下(如激活专家数量<1%),或者总专家数较大(比如>256)之后,提升专家数量收益就很小了。

从另一个角度来看,如果一个计算核心使用>1个专家,那么就会出现比较大的加载参数张量的成本,因此建议每个计算核心使用<=1个专家。

  1. routing和capacity factor

论文做了一系列实验来探索capacity factor的选择,如下表所示

51c大模型~合集58_大模型_63

从这些实验中得到几个结论:

(1)训练和推理的capacity factor增大都会有收益

(2)如果硬件资源足够,推理的capacity facotr可以设得比训练的时候大,会有进一步提升

(3)激活的expert数量提升会有收益,但是收益随着capacity factor提升而越来越小

当然,选择capacity factor还要看硬件的特性,如果通讯很快,可以适当增大capacity factor,否则就不能选择太大的。

下表展示了不同capacity factor对推理速度的影响

51c大模型~合集58_大模型_64

7.3.实验

  1. ST-MoE效果

ST-MoE-32B在下游任务上和以往最佳结果对比如下表,ST-MoE-32B刷新了超过一半任务的最佳效果

51c大模型~合集58_大模型_65

  1. Expert Specialization

论文还对各个专家的专业化进行了追踪,发现decoder中几乎没有专业化的迹象,各种类型的token近乎随机分配给不同的专家。而在encoder中则表现出了高度专业化的特征,如下表

51c大模型~合集58_大模型_66

此外,还发现在多语言的模型的encoder中,专业化的情况并不想原先预想那样,按不同语言划分,而是每个专家都会处理一种语言的一部分token,如下表

51c大模型~合集58_大模型_67

8.DeepseekMoE

2024年1月,幻方量化(下的独立机构深度求索)开源了DeepseekMoE,是国内首个开源的MoE大模型。幻方还发布了论文《DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models》,给出了一些DeepSeekMoE的细节内容,颇为实在了。

DeepSeekMoE在其他MoE工作的基础上,进一步给出了2个模型设计的主要思路:

(1)对expert的粒度进行细分,以提供更多样的expert激活组合;

(2)对expert的类型进行区分,从所有expert中保留一部分作为shared expert共享专家,这部分专家对所有输入都保持激活。

这样的做法可以帮助每个expert达到更高程度的专业化(specialization)的水平,更好地学习不同的专业知识。

DeepSeekMoE先在2B的较小MoE模型上进行了充分的实验,然后把方案应用到16B参数的MoE模型上,并获得了较好的效果。其中DeepSeekMoE-16B不需要量化就可以在40GB显存的设备上运行。

DeepSeekMoE-2B模型具有和稠密2B模型相当的性能,而DeepSeekMoE-16B则具有和7B稠密模型相当的性能,且计算量仅为稠密模型的40%。

DeepSeekMoE-16B的参数效率相比稠密模型有明显的优势,如下图所示

51c大模型~合集58_大模型_68

并且DeepSeekMoE-2B和16B模型都开源了。

在前面实验的基础上,幻方还训练了DeepSeekMoE-145B的超大MoE模型,具有和稠密的DeepSeek-67B模型相当的表现,但计算量更小。这个后续也有机会放出来。

8.1.模型设计

MoE,mixture of expert,顾名思义,一个最初始的motivation就是让不同expert学习不同的内容,然后再混合起来。

比如最上面提到的1991年的工作里,就是让不同的expert学习不同的元音特征,以此提升特征提取的准确率。

但是当前大部分的MoE架构都会遇到“knowledge hybridity”和“knowledge redundancy”的问题,即知识的杂糅和冗余:

(1)知识冗余

有些基础的常识在不同的领域都需要用到,每个expert就都会学一点,这样这些常识就被多个expert重复学习了。

(2)知识杂糅

在expert数量不够多的情况下,一个expert就可能要负责学习多个领域的内容。以学习高中知识为例,在只有两个expert的时候,只能一个expert学习理科知识,另一个学习文科知识;当我们有8个expert的时候,不同expert就可以分别学习语文、英语、历史、地理、物理、生物、化学、数学知识。显然后者所学知识的专业化程度更高。

知识的杂糅和冗余阻碍了专家专业化(expert specialization)的程度,也就阻碍了模型达到MoE结构理论上限性能。

我们期望每个expert能够学习到non-overlap & foucusd knowledge的知识。

针对上面的问题,DeepSeekMoE的架构设计有2个主要策略:

(1)Fine-Grained Expert Segmentation

参数总量不变的情况下,将expert分成更细的粒度(每个expert更小)。这样可以带来更灵活的激活组合,让每个expert可以有更强的specialization。比如原本是16个expert选择激活2个,那么总的组合数是120种;如果把每个expert缩小为原来的1/4,那在总参数量和激活数量不变的情况下,是64个expert选择激活8个,那么总的排列组合数就是  ,排列组合数比原来多了很多。

(2)Shared Expert Isolation

把部分expert分离出来,保持永远激活。我们期望这部分专家能够学到在多个领域间都通用的common knowledge。这样的策略同样可以使得其他expert能够提高专业化的程度,并且减少不同expert间的知识冗余。还是以学习高中知识为例,数学、物理和化学都需要算术能力,如果让学这三个领域的expert都学习算术技能,就会有冗余;我们可以把通用算术的技能剥离出来,由一个助手专门负责算术任务,相当于给他们发了一个计算器,这样学习数学、物理和化学的expert就能把更多的精力放在专业知识上,也就能达到更好的专业化效果。

下图展示了在传统MoE结构上增加Fine-Grained Expert Segmentation和Shared Expert Isolation策略的设计

51c大模型~合集58_大模型_69

(expert isolation的思路最早可以追溯到2022年1月发表的《DeepSpeed-MoE: Advancing Mixture-of-Experts Inference and Training to Power Next-Generation AI Scale》,这里就不展开了。)

假设传统的MoE模型每层的 expert数量为 , 激活 expert数为 , DeepSeekMoE使用的细粒度 expert大小为原来的 , 那DeepSeekMoE每层就有  个expert, 激活的expert数量为 个。假设  为输入长度,  为模型层数,  表示第  个expert, DeepSeekMoE可以公式化为以下表示(忽略了layernorm)

51c大模型~合集58_大模型_70

8.2.负载均衡

如之前工作反复提及的,如果任由MoE模型自主学习gating,可能会遇到两个问题

(1)routing collapse:专家分配的不均衡,也就是gating倾向于总是选择特定的少量expert,并且这种情况还会自我增强。

(2)计算效率问题:多设备间,不平衡的负载可能会成为计算效率的瓶颈。

针对routing collapse的问题,DeepSeekMoE引入一个expert-level balance loss,如下所示

51c大模型~合集58_大模型_71

 叫做expert-level balance factor,是人工设定的超参。

而  和  和 Switch Transformer里的设定基本一样。

在Switch Transformer里,  表示分配到第  个expert的token数量。在DeepSeekMoE这里也是一样的含义, 只是多乘了一个系数 , 其中 是划分出来的共享 expert的数量。这个系数是个常数, 可以拿到求和符号外面, 这样 DeepSeekMoE里的  就和Switch Transformer里的完全一样了。

 这个系数可以使得在使用不同的数量的expert时, 在完美平均分配的情况下, 负载均衡 loss都是相同的常数。

 表示所有每个token分配给第  个expert的权重的总和, 和Switch Transformer里的含义一样。注意这里  是不可导的,  是可导的。

针对多设备间负载均衡的问题,DeepSeekMoE引入一个device-level balance loss,如下所示

51c大模型~合集58_大模型_72

 叫做device-level balance factor,是人工设定的超参。

 指第  个设备。

device-level balance loss形式上和expert-level balance loss一样, 只是  和  对应的对象从单个expert变成单个设备了。

当我们的目标是缓解计算瓶颈时,我们不需要强制执行expert间的均匀分配,而只需确保设备之间计算量的平衡。比如我们每层有64个expert,均匀分布在8个设备上,我们只需要每个设备处理的token数平衡即可,在设备内部即使所有token都是同一个expert处理的,依然能满足设备间负载平衡的要求。

相比expert间严格的负载平衡,只要求设备间的平衡是更松的限制条件,这样缓解了因为过度的负载平衡而损害模型性能的问题。

8.3.实验

  1. 小规模模型验证

为了验证以上策略的有效性,先拿100B token的语料数据在DeepSeekMoE-2B模型做实验。词表也是通过BPE在语料上训练的8k词表,后面训练更大规模模型的时候再扩大词表。

DeepSeekMoE-2B模型参数初始化方差为0.006,使用multi-head attention,前向激活参数量约0.3B,具体参数如下表

51c大模型~合集58_大模型_73

relative expert size指的是DeepSeekMoE所用的细粒度expert的大小和正常FFN层大小的比值。

训练的具体参数设置如下

属性

数值

optimizer

AdamW

adam_beta_1

0.9

adam_beta_2

0.95

adam_weight_decay

0.1

warmup schedule

linear

warmup step

2000

max lr

1.08e-3

dropout

0

sequence length

2k

batch size

2k

total step

25,000

其他训练细节:

  • 所有expert放在单个GPU上,没有使用device-level balance loss
  • expert-level balance factor设为0.01
  • 训练到80%的时候,学习率乘以0.316,训练到90%的时候,再乘以0.316

使用相同的100B训练数据,训了DeepSeekMoE-2B,在包含语言模型和下游任务的benchmark上和其他4个模型做对比:dense,hash layer(也是一种MoE模型,来自《Hash layers for large sparse models》),Switch Transformer,GShard。各模型参数和在benchmark的得分如下表

51c大模型~合集58_大模型_74

可以得到几个结论:

  • 更大的模型参数量和稀疏的架构,使得Hash Layer和Switch Transformer和具有同样激活参数的dense模型相比,有明显的优势。
  • 同样的模型参数下,GSshard比Hash Layer和Switch Transformer有更多激活参数,效果也更好
  • 同样的模型参数和激活参数下,DeepSeekMoE效果比GShard有明显优势。

为了进一步探索DeepSeekMoE架构带来的收益,提升了dense模型和GShard模型的激活参数,直到效果和DeepSeekMoE-2B差不多。

结果dense模型和GShard模型需要分别扩大到16倍和1.5倍的参数量,才能达到DeepSeekMoE-2B相近的效果,如下表所示

51c大模型~合集58_大模型_75

DeepSeekMoE的优势在更大规模的情况下,依然成立。训了DeepSeekMoE-13B, 对比参数量提升至1.2和1.5倍的GShard,DeepSeekMoE-13B依然能match,具体如下表

51c大模型~合集58_大模型_76

  1. DeepSeekMoE架构消融实验

针对DeepSeekMoE架构的两个主要设计,shared expert和fine-grained expert进行消融实验。使用不同数量的共享专家和不同粒度的expert进行效果对比,结果如下图。

51c大模型~合集58_大模型_77

(1)对比蓝色和橙色,可以看到增加共享专家带来了收益

(2)绿色和红色在橙色的基础上进一步把专家颗粒分得更细,效果进一步提升

(3)共享专家和路由专家的比例:在总共64个expert的情况下,对比了1/2/4个共享专家的情况,结果并没有显著差别,在pile上的loss分别是1.808,1.806,1.811。最终选择了共享专家和激活路由专家1:3(2+6)的比例。

  1. expert specialization的分析

通过实验来验证DeepSeekMoE中expert specialization的优化。

(1)前面实验看到DeepSeekMoE-2B和1.5倍参数量的GShard模型效果相当。在这个基础上,通过禁用不同数量的top专家,而只能从次优的专家中选择进行回答。

实验结果如下

51c大模型~合集58_大模型_78

发现DeepSeekMoE的损失更大,说明DeepSeekMoE每个专家的专业化程度更好,必要性更高。

(2)另外,通过禁用DeepSeekMoE的共享专家,而额外激活一个路由专家,发现loss也大大提升。这个结果突出了共享专家的关键功能,并表明共享专家捕捉到了与路由专家不共享的基本且重要的知识,使得它无法被路由专家替代。

(3)DeepSeekMoE只激活更少专家,也能和GShard达到相同水平,这一观察结果支持了DeepSeekMoE可以更准确和高效地获取所需知识的观点。

51c大模型~合集58_大模型_79

此外还从零训了一个只用1个共享专家和3个激活专家的2b模型(正常是2个共享专家+6个激活专家),也比GShard好,说明DeepSeekMoE结构的有效参数效率更高

51c大模型~合集58_大模型_80

  1. DeepSeekMoE-16B

DeepSeekMoE-16B模型使用了2T数据训练(和LLAMA2-7B对齐)训练,并使用了100k的词表。其他参数如下表所示

51c大模型~合集58_大模型_81

论文中提到,除了第一层以外,其他层都使用了MoE层。

第一层不使用MoE是因为观察到第一层的负载均衡loss在训练中收敛得特别慢。

DeepSeekMoE-16B每层有64个专家,其中有2个作为共享专家保持永远激活,加上6个通过gating function选择激活的,每个token共使用8个专家。每个token会激活16.4B中的2.8B参数。

这里没有把专家的dimension再减小,是因为如果专家太小,计算效率就下降得太厉害。

训练中使用的其他设置:

  • lr = 4.2e-4
  • 训练进行到80%和90%的时候,lr都会缩小到0.316倍
  • batch size = 4.5k,训练窗口长度是4k,因此每个batch有18M token,2T数据差不多是10.6w步
  • 使用了pipeline parallelism

expert level balance loss的系数设得比较小,0.001,因为实验中发现设得再大并不能进一步优化负载平衡,反而会损害模型效果。

DeepSeekMoE-16B和DeepSeek-7B模型的对比如下

51c大模型~合集58_大模型_82

DeepSeekMoE-16B和LLAMA2-7B模型的对比如下

51c大模型~合集58_大模型_83

  1. DeepSeekMoE-145B

幻方还用245B的token训练了DeepSeekMoE-145B,模型效果上达到DeepSeek-67B的同等水平

51c大模型~合集58_大模型_84

9.DBRX

2024年3月27日,Databricks开源了DBRX,一个拥有有132B参数,激活参数为36B的MoE模型。

结构上,DBRX使用了RoPE、GLU、GQA,采用了fine-grained expert的设计,每层有16个专家,每个token激活其中4个。相比Mixtral和Grok-1在8个专家中激活2个,DBRX有更多的专家组合方式。

DBRX训练的上下文长度为32k,并使用了12T文本和代码token进行训练。DBRX在3072个H100上完成预训练,加上post-training、效果评估、red-team优化,整个过程耗费3个月时间。

DBRX整体效果超过GPT-3.5,与Gemini 1.0 Pro相当,并且具有比较强的代码能力,甚至超过了在代码上专门优化过的模型,如CodeLLaMA-70B,如下图所示。

51c大模型~合集58_大模型_85

推理效率效率上,DBRX也领先于其他模型。

51c大模型~合集58_大模型_86

10.Qwen1.5-MoE

2024年3月28日,阿里放出了Qwen1.5-MoE-A2.7B,以2.7B的模型参数,达到了Qwen1.5-7B模型的相近效果。

Qwen1.5-MoE-A2.7B参考了DeepSeekMoE和DBRX的工作,采用了fine-grained expert的做法,总共有64个专家,每个token激活8个专家,其中有4个为共享专家。

Qwen1.5-MoE-A2.7B使用Qwen-1.8B进行初始化,并在初始化阶段引入随机性,这样可以显著加快收敛速度,并得到更好的收敛结果。

Qwen1.5-MoE-A2.7B和其他模型效果对比如下

51c大模型~合集58_大模型_87

虽然Qwen1.5-MoE-A2.7B总参数量较大,但激活的non-embedding参数量远小于7B模型,如下表所示

51c大模型~合集58_大模型_88

实践中,Qwen1.5-MoE-A2.7B相比于Qwen1.5-7B,训练成本降低了75%。

推理性能上,在A100-80G用vLLM部署Qwen1.5-7B和Qwen1.5-MoE-A2.7B模型进行了性能测试。

输入/输出token数都设置为1000,输出token数设置为1000,TPS和throughput如下

51c大模型~合集58_大模型_89

虽然MoE模型对内存需求更大,但是由于稀疏激活以及共享专家的设计,但是在速度和吞吐量上都比dense模型更好。Qwen1.5-MoE-A2.7B与Qwen1.5-7B相比,速度提高了约1.74倍。

11.Mistral11.1.Mistral 8x7B

2023年12月11日,Mistral AI开源Mistral-8x7B,每个token激活8个专家中的2个。

Mistral-8x7B支持32k推理窗口和多语言,并且代码能力较好。和LLAM2-70B以及GPT-3.5的对比如下。

51c大模型~合集58_大模型_90

Mistral-8x7B在大多数任务表现优于LLAM2-70B,且推理速度提高了6倍。

而和激活参数量相近的LLAM2-13B比,优势更为明显

51c大模型~合集58_大模型_91

11.2.Mistral 8x22B

2024年4月17日,Mistral AI开源Mistral-8x22B模型,一个总参数为141B,激活参数为39B的超大MoE模型。

Mistral-8x22B支持多语言,并且具有较强的数学和代码能力。此外,推理窗口长度也从Mistral-8x7B的32k增加到64k。Mistral-8x22B还具备function call的能力。

在各个维度的评测结果如下

51c大模型~合集58_大模型_92

51c大模型~合集58_大模型_93

51c大模型~合集58_大模型_94

12.小结

  • 现有的工作都表明,MoE模型相比dense模型具有更高的参数效率,即同样的计算量下,MoE模型普遍能有更优的效果
  • 因此MoE不仅能支持更大规模模型的训练,在较小规模模型上使用MoE架构也有很大收益
  • 但是相比dense模型,MoE模型的训练也需要考虑更多内容,包括专家数量、激活数量和专家容量的设计,负载均衡的问题,如何在多设备上的并行等,训练难度更大
  • 结构上,共享专家和细粒度专家目前被验证效果较好
  • 负载均衡上,GShard和Switch Transformer的负载均衡损失被广泛采用
  • 推理时需要对底层框架进行优化以适配MoE机制,否则难以发挥MoE的性能优势

Reference

【1】Adaptive Mixtures of Local Experts https://www.cs.toronto.edu/~hinton/absps/jjnh91.pdf
【2】Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer https://arxiv.org/abs/1701.06538
【3】GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding https://arxiv.org/abs/2006.16668
【4】Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity https://arxiv.org/abs/2101.03961
【5】GLaM: Efficient Scaling of Language Models with Mixture-of-Experts https://arxiv.org/abs/2112.06905
【6】ST-MoE: Designing Stable and Transferable Sparse Expert Models https://arxiv.org/abs/2202.08906
【7】DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models https://arxiv.org/abs/2401.06066
【8】Introducing DBRX: A New State-of-the-Art Open LLM https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm
【9】Qwen1.5-MoE: Matching 7B Model Performance with 1/3 Activated Parameters https://qwenlm.github.io/zh/blog/qwen-moe/




#Hinton曾是最强「实习生」

在这场访谈中,Jeff Dean讲了一些有趣的往事。


1999 年 8 月,Jeff Dean 加入了谷歌,成为早期第 20 号员工。他在 2011 年参与创立了 Google Brain 团队,专注于智能机器领域的进展。自那时起,他的工作重心转到了 AI 和 ML 领域的研究、系统和应用,并引领了更广泛 AI/ML 和计算机科学研究社区的发展方向。

2020 年 12 月,Jeff Dean 获得了 2021 年度 IEEE 冯诺依曼奖,以表彰他对大规模分布式计算机系统和人工智能系统科学与工程的贡献。2023 年 4 月,谷歌宣布将旗下 Google Brain 和 DeepMind 合并,成立了 Google DeepMind。Jeff Dean 成为该部门的首席科学家。

作为谷歌的 AI「掌门人」,在谷歌工作了 25 年的 Jeff Dean 见证着 AI 发展的过去、现在与未来。在最近的一次访谈中,他和伦敦大学学院的副教授 Hannah Fry 畅谈了谷歌 AI 布局的昨天、今天与明天。

在访谈中,Jeff Dean 开启了回忆杀。

90 年代,神经网络的性能有限。Jeff Dean 在本科时曾探索过大规模神经网络,以失败告终,后来在谷歌,是和吴恩达的一次谈话激发了他继续扩展神经网络的想法。

彼时,大洋彼岸的 DeepMind 正在主攻强化学习,来谷歌访问的史上最强 60 岁「实习生」Hinton(没错,就是深度学习之父)提议去考察,这才有了 Google 和 DeepMind 的强强联合。如今,Scaling 和强化学习都让 AI 的智能程度上了一个台阶。

Jeff Dean 还分享了一个有趣的事情,Gemini 这个名字是他提出的。Jeff Dean 表示 Gemini 代表双胞胎,就像 DeepMind 和 Google Brain 的合并,代表着这两个部门共同致力于一个雄心勃勃的多模态项目。

大家都在谈论的 Transformer,Jeff Dean 也进行了简单明了的介绍。

以下是访谈主要内容的摘录:

重拾神经网络,起因竟然是和吴恩达聊天?

主持人:你还记得你第一次接触神经网络是什么时候吗?

Jeff Dean:神经网络有着有趣的历史。人工智能(AI)本身是一门相当古老的学科,早期的 AI 研究主要是试图定义一系列规则,告诉我们世界是如何运作的。这一阶段大概发生在 20 世纪 50 年代、60 年代和 70 年代。后来,神经网络在 70 年代开始出现,并在 80 年代末和 90 年代初迎来了一波热潮。

大约在 1990 年,我还是明尼苏达大学的一名本科生。我当时正在上并行处理课程,学习如何将一个大问题分解为可以在不同计算机上独立完成的小问题,然后让这些计算机一起协作解决问题。 

主持人:那听起来有点像我们今天所说的并行计算能力不足的问题。你们当时是怎么让计算机「像团队一样」工作的? 

Jeff Dean:当时神经网络是一种特殊的机器学习和 AI 方法,基于我们对大脑工作原理的粗略近似 —— 特别是人类或其他生物的大脑如何通过神经元协同工作。这就是为什么它们被称为「神经网络」,因为它们由人工神经元组成。每个神经元与其他神经元相连,通过信号传递来决定是否对某一特定输入模式做出反应。

一个神经网络通常有很多层次。较低层次的神经元学习识别一些简单的特征,比如图像中的色块或边缘。然后,较高层次的神经元会在这些简单特征的基础上学习识别更复杂的模式,比如物体的形状,甚至是脸部的特征。

因此,通过构建这些分层的学习抽象,这些系统实际上可以发展出非常强大的模式识别能力。这就是 80 年代末和 90 年代初大家对神经网络感到兴奋的原因。

然而,当时的网络规模非常小,只能识别一些手写数字或非常简单的人工模式,远不能识别像人脸或汽车这样的复杂对象。

人们当时很兴奋,因为这些网络可以解决一些基于逻辑规则的系统无法解决的问题。神经网络可以泛化到处理凌乱的手写字符,而基于规则的系统很难做到这一点。

在听了两次关于神经网络的讲座后,我对此产生了浓厚的兴趣。我决定写一篇关于并行训练神经网络的高级荣誉论文,因为我认为我们只需要更多的计算能力。如果我们可以使用系里的一台 32 处理器的机器,是不是就能训练出一个更大的神经网络?这就是我花了几个月时间研究的内容。

主持人:那有效果吗? 

Jeff Dean:是的,但不如我想象的那么好。我当时是个天真的本科生,认为 32 处理器就能让神经网络「嗡嗡作响」,快速运转起来,但实际上,我们需要大约一百万倍的计算能力,才能让这些网络真正解决实际问题。 

不过,随着摩尔定律带来的 20 年计算进步,CPU 和其他计算设备变得越来越快,我们终于拥有了可以实际应用的系统,其计算能力是当时 32 处理器机器的一百万倍。

后来我重拾对神经网络的兴趣是在遇到吴恩达之后。当时,他是斯坦福大学的老师,每周有一天在谷歌做顾问,我有一次在公司的微型厨房里遇见了他。我当时好像问了,「你在谷歌做什么工作?」他说,「我还没有弄清楚,因为我刚来。但是我在斯坦福大学的一些学生在神经网络方面取得了很好的成绩。」我说,「哦,真的吗?那我们为什么不训练一个非常大的神经网络呢?」

这就是谷歌神经网络工作的起源。然后我们成立了一个名为谷歌大脑的小团队,开始研究如何利用谷歌的计算资源训练非常大的神经网络。所以我们建立了软件基础设施,使我们能够获取神经网络描述,然后将其分解成可以在不同计算机上、由团队的不同成员完成的片段。这些计算机以它们需要的方式相互交流,以解决如何在 2000 台计算机上训练单个神经网络的总体问题。这是我们为真正扩大神经网络训练而开发的最早的软件。它让我们能够训练比现有神经网络大 50 到 100 倍的模型。

主持人:这大概是 2011 年的时候,对吗? 

Jeff Dean:是的,那是在 2012 年初。

主持人:所以这是图像识别领域取得重大突破之前的事情,对吧?这听起来像是很早期的工作。在很多方面,你当时做的事情其实和你之前做的一样,只不过是把多个计算机结合起来工作。 

Jeff Dean:是的,就像我本科毕业论文里做的那样。只不过这次做出的神经网络真的能用了,因为我们的计算机变得更快,而且我们用了更多的计算机。

主持人:但在 2011 年,你觉得这是一场赌博吗?

Jeff Dean:哦,是的,绝对是。我们当时构建了一个系统,用来训练这些神经网络,并尝试不同的方法来分解这些网络。我把这个系统命名为 DistBelief,一部分原因是因为许多人认为这不会真正起作用,另一部分原因是它是一个分布式系统,除了神经网络之外,我们还想要训练的是「信念网络」。

谷歌收购 DeepMind,提议来自史上最强 60 岁「实习生」Hinton

主持人:这太惊人了。当这一切发生时,在大西洋彼岸,一家名为 DeepMind 的公司正在崭露头角。

2011 年,Demis Hassabis 创立了 DeepMind

Jeff Dean:是的。

主持人:你就是提出想去考察 DeepMind 的人,对吧?给我们讲讲这个故事吧。

Jeff Dean:好的。Jeffrey Hinton,他是非常有名的机器学习研究者。他在谷歌度过了一个夏天,那大概是 2011 年。我们不知道该如何给他定位,所以 Hinton 被归类成实习生了。想想还挺好笑的。

主持人:历史上最高级的实习生。

历史上最高级的「实习生」

Jeff Dean:所以,他和我一起工作,不知怎地,我们发现了 DeepMind。Hinton 应该更了解 DeepMind,比如公司的构成。其他一些人也提到过,说:「哦,是的,英国有这么一家公司。」

主持人:当时 DeepMind 的规模还很小。

Jeff Dean:是的,当时他们大概只有 40 到 50 个人。所以我们决定代表公司,把他们当成潜在的收购对象考察。后来我在加州,Hinton 回到了多伦多,他要回去教课。

还有,Hinton 的背不好,所以他不能长时间坐飞机,因为他不能坐下来,他只能躺下或站起来。你在飞机起飞时站起来,机长可能要不开心了。那我们必须想办法解决,于是我们在私人飞机上安排了一张医疗床。我们一群人从加州起飞,飞往多伦多,在停机坪上接上 Hinton,并把他安置到飞机上的医疗床上。

再一起飞到英国,降落在一个小机场。机场在郊区。我们上了一辆商务车,成群结队地去参观 DeepMind。当时 DeepMind 大概在罗素广场附近办公。前一天晚上我们坐飞机真的很累,但 DeepMind 带来了连续 13 场 20 分钟的讲座,他们汇报各自的业务。

主持人:一个组一个组地来吗? 

Jeff Dean:是的。所以我们看到了 DeepMind 的工作成果。

主持人:当时时差还没倒过来吧?

Jeff Dean:是的,时差还没倒过来呢!

主持人:这好像情景喜剧的剧情。 

Jeff Dean:没错。所以我们听了一些他们正在研究的 Atari 的报告,后来他们也发表了如何运用强化学习让 AI 学会玩旧版 Atari 2600 游戏的相关论文,比如「breakout」或者接乒乓球,各种各样的有趣小游戏。

2016 年,DeepMind 为强化学习引入无监督辅助任务,使得人工智能的 Atari 游戏水平达到人类的 9 倍。

主持人:因为当时谷歌还没开始做强化学习,对吧? 

Jeff Dean:是的。我们当时主要都在扩大规模,大规模的监督和无监督学习。

主持人:强化学习更受奖励的激励。 

Jeff Dean:是啊。我认为这些技术都有用,它们往往结合起来使用。我们可以这么来理解强化学习:有某些智能体要在某个环境中进行一些动作,每一步都有很多决策要做,有很多动作可以选择。

例如,在围棋游戏中,你可以把棋子放在棋盘里的任意位置,你可以上下左右移动 Atari 的操纵杆,你也可以按控制方向的按钮。通常在这种情况下,你不会立即得到奖励,比如在棋盘上放了一枚棋子,你不知道这一步走得好不好,直到整个棋局结束了才知道。 

强化学习有一个有趣之处,它能够处理较长的动作序列,并根据你做出这些动作时的预期程度,将奖励或惩罚分配给你采取的动作序列。比如这是一个好的想法吗?AI 按这个想法赢了,那就倾向这个方向一点;输了,那就别太觉得那是个好主意。这大概就是强化学习的主要思想。这是个相当有效的方法,尤其是在不清楚这是否是个好主意的情况下。 

相比之下,监督学习是你有输入,并且有实际的输出。举一个经典的例子来说,这里有一堆图像,每张图片都标了一些特征。比如,这是一张图,画面中的物体是汽车。这是另一张图,画面中的物体是鸵鸟。这里有另一张图,画面中的物体是石榴。

主持人:你去 DeepMind 考察的时候,做了要收购的决定,那 Demis 紧张吗?

Jeff Dean:他紧不紧张,我不知道。我当时说:「好,我听过了这些精彩的演讲,但是我能看一点代码吗?」因为我想确认这些演示背后确实有真实的代码,并且看看他们的编码标准如何,像是人们是否真的写了注释,类似这样的东西。

Demis 有点不确定。我说:「不必给我看机密代码,只需选择一些代码并向我展示。」

于是我和一个工程师走进一间办公室,我们坐下来了 10 分钟。我说:「好,这段代码是做什么用的?」哦,原来是做这个的。那段是做什么用的?在哪里能向我展示这一功能的实现?我很满意地走出了那间办公室。

主持人:他们的代码很整洁。

Jeff Dean:那是相当整洁。对于试图快速发展的小公司来说,它是一种研究代码,但你清楚地知道 DeepMind 的代码有趣且有据可查。

主持人:我听说你编写代码时,会添加一个名为「lgtm」的东西。

Jeff Dean:是的,对我来说很有用。我在现实生活中也用它,不仅仅是为了代码审查。

主持人:好吧,那么在 DeepMind 展示的 PPT 中,有什么展示给你留下印象了吗?

Jeff Dean:他们的工作看起来非常有趣,特别是在强化学习这方面。谷歌专注于扩大规模,所以我们训练的模型比 DeepMind 的模型大得多。当时 DeepMind 正在做各种尝试,但他们当时主要用强化学习解决 AI 玩游戏的问题。游戏是一个很好的、干净的强化学习环境,但似乎结合了强化学习加上谷歌一直在做的扩展,最后的成果将会很惊艳。

主持人:这就像是对问题两面夹击,一方面通过强化学习,从微处着手,逐步构建;另一方面,从扩大模型的规模来解决问题。当你把各方面结合起来时, 便能释放出强大的力量。

Jeff Dean:是的,确实如此。这也是我们去年将 DeepMind、Google Brain 和其他 Google 研究部门合并的主要原因。我们决定将这些部门合并在一起,成立 Google DeepMind。

构建 Gemini 的想法早于合并之前,我们都在尝试训练真正高质量、大规模、多模态模型。合并前是分散想法、各部门之间合作少、并分散宝贵的计算资源等是没有意义的。我们应该把所有这些放在一起,建立一个联合团队来解决问题。

主持人:那为什么叫 Gemini?

Jeff Dean:实际上是我给起的名字。

Gemini 代表双胞胎,就像 DeepMind 和 Google Brain 的合并,代表着这两个部门真正开始合作并开展一个雄心勃勃的多模态项目,这是一个很好的名字。

Jeff Dean 对 Transformer 的看法

主持人:我想谈谈关于多模态的内容。但在此之前,我想公众对聊天机器人和大型语言模型的认识发生如此巨大变化的一个重要原因是,谷歌在 Transformer 方面的一些工作,你能向我们介绍一下 Transformer 及其带来的变革吗?

Jeff Dean:当然。在语言和其他领域解决的问题,都是序列问题。例如,在 Gmail 中的自动补全功能,当你输入一个句子时,系统能够帮助你完成剩下的部分。这主要依赖于模型观察到一部分序列后,预测接下来会发生的内容。这就是大型语言模型训练的目的:它们通过逐个词或词的一部分输入数据,然后预测下一个可能出现的内容,就像一个高级的自动补全功能。 

事实证明这很有用,你也可以用这种方式模拟很多不同的问题。例如,在翻译中,可以将其建模为接收一个英文句子,并训练模型输出对应的法语句子。只要有足够的英、法句子对作为训练数据,就可以按照序列来进行训练。此外,这种方法也可以应用于医疗领域,比如预测一个患者根据他们报告的症状、实验室检测结果以及过去的病历记录,你可以将整个情况建模为一个序列,然后预测最可能的诊断。如果你有其他去标识化的数据可供训练,这些数据也以序列的形式组织,你可以通过隐藏序列的剩余部分,迫使模型预测下一步会发生什么。这种方法不仅适用于语言翻译和医疗设置,还适用于 DNA 序列等多种场景,非常有趣且广泛适用。 

在 Transformer 架构之前成功的模型是所谓的循环模型,这些模型具有某种内部状态,每当它们看到一个词时,就会进行一些处理来更新其内部状态。然后继续处理下一个词,并重复这一过程。因此,它们会将状态向前推进一点,并根据刚刚看到的下一个词来更新状态。可以将这个过程想象成一个包含 12 个词的句子,你需要更新状态 12 次,但每一步都依赖于前一步。这意味着要使其快速运行实际上相当困难,因为存在所谓的顺序依赖性,其中第 7 步依赖于第 6 步,第 6 步依赖于第 5 步,依此类推。

因此,Google Research 的研究人员们想出了一个非常有趣的想法,那就是我们不要只更新一个单词的状态,而是一次性处理所有单词。并且记住在处理每个词时得到的状态。然后在尝试预测新词时,关注所有之前的状态,并学习如何关注重要部分。这就是 Transformer 中的注意力机制,用来预测下一个词。在某些情况下,你可能需要非常关注前一个词;在某些上下文中,关注上下文中的许多词语都很重要。但关键的是,这个过程可以并行完成。你可以接收 1000 个单词,并行计算每个单词的状态,这使得在扩展性和性能上比以前的循环模型提高了 10 到 100 倍。这就是为什么这一发现如此重要的原因。

我认为我们在 Google Brain 团队中所做的语言建模工作实际上是对单词进行建模,而不是对单词的表面形式(如 hello)进行建模,实际上是对高维向量进行建模,该向量表示单词的使用方式。我们人类习惯于在二维和三维空间中思考,但是当你有 100 个维度或 1,000 个维度时,一千维空间中就会有很多空间。你以某种方式训练模型,cow、sheep、goat 和 pig 这些词会彼此靠近,而与 espresso machine 这样的词相距甚远,这种高维表示尤其显得有意义。

主持人:milk 和 sweet milk 会比较接近。

Jeff Dean:虽然 milk 可能指的是 sweet milk,milk 在这种高维模型中可能更靠近 cow,但又位于两者之间的某个位置。这正是这些模型拥有出人意料的强大能力的原因之一,因为它们用如此多的高维度来表示事物,使得它们能够同时紧密地抓住一个词、一个句子或一个段落的多个不同方面,因为在它们的表示路径中有很多空间。这种表示方式从某种程度上提取了我们自己给语言赋予的基础含义。 

我们在听到一个词时,并不仅仅考虑这个词的表面形式。比如 cow,它会触发一系列其他事物的联想,如 milk、espresso machine、milking、calf 和 bull。我们在早期词表示中发现,方向具有含义。例如,如果你考虑动词的现在时态,比如 walk,在这个百维空间中,从 walk 变为 walked 的方向,和从 run 变为 ran 的方向,以及从 read 变为 read 的方向是相同的。

这实际上表明它能够理解,这里确实存在一种时态的表达方式。而且,这是从训练过程中自然产生的,不是我们故意设定的。我们使用的训练算法和语言中特定形式的多样使用方式导致了这种现象的出现。例如,你还可以改变词的性别,如从 cow 到 bull 的方向,和从 queen 到 king 或从 woman 到 man 的方向是相同的。

主持人:这确实令人惊讶。但我们目前讨论的还只是语言。那么多模态的方面是如何改变的呢?它有什么不同?多模态模型能够触发与我们看到一头牛时在大脑中产生的类似激活的东西,从 cow 这个词,到听到牛叫的声音。

Jeff Dean:你希望训练的模型能够拥有这种联合的意义和表达,不论它们是如何获得输入数据的。所以,如果模型看到一个视频,里面是一头牛在田野中行走,那么这应该在模型中触发一系列与此相关的事物,基于模型构建的激活。这些模型通常是非常深层的。最低层通常具有非常简单的表达,而模型中更高层次的层则在这些表达的基础上构建,形成更有趣、更复杂的特征和表达组合,无论是词语还是图像。 

我认为弄清楚如何将不同的模态整合到模型中,以及应该如何训练一个多模态模型,确实比训练一个单纯的语言模型要复杂的多。但从中你可以获得很多好处,例如有时能实现跨模态的迁移。我们现在看到关于牛的视觉内容实际上有助于语言信息的形成。也许你之前看到了许多关于牛在草地上的描述,但现在突然之间,模型看到了相关的图像和视频。它实际上能够以一种方式将这些表征融合在一起,使得无论是看到 cow 这个词还是相关的图像,都能在模型内部触发类似的反应。

参考链接:

https://x.com/GoogleDeepMind/status/1833872938031894632




#Ilya早期曾参与,灵感源于AlphaGo

自从 OpenAI 的 o1 问世以来,它强大的推理能力就承包了 AI 圈近期的热搜。不需要专门训练,它就能直接拿下数学奥赛金牌,甚至可以在博士级别的科学问答环节上超越人类专家。

展示 o1 实力的 demo,我们看了不少,评估 o1 表现的评测,全网比比皆是,关于 o1 技术路线的讨论也如火如荼,引发了广泛的关注和深入的思考。

不过 o1 背后的故事,还鲜为人知,那些在幕后默默付出的团队成员们,他们的故事同样值得被讲述和铭记。

刚刚,OpenAI 发布了 o1 研发团队的完整访谈,为我们揭秘了 o1 的「成长历程」。o1 如何一步步蜕变,最终成为一个「智商高达 120」的非凡存在?他们是将强化学习和监督学习两种范式结合起来的?这背后是无数的突破与挑战,OpenAI o1 的研究人员与 OpenAI 研究团队的负责人 Bob McGrew 畅谈了研发过程中的「Aha moments」—— 那些破解瓶颈、灵感迸发、豁然开朗的瞬间。

在访谈中,他们揭秘了 o1 团队的关键人物,最早由 Jakub Pachocki 进行了一些探索,后来又和Łukasz Kaiser (Transformer 作者之一)和 Ilya Sutskever 进行了早期的探索。这可能也是为什么虽然 Ilya 已经离职,但仍出现在贡献者名单前列的理由。

o1 项目的关键时刻是 Jerry Tworek 整合了这些内容,并继续推动项目。

,时长22:13

原视频链接:https://www.youtube.com/watch?v=tEzs3VHyBDM

以下是对访谈主要内容摘录:

什么是 o1?

Hyung Won Chung:我们将使用新名称 o1 推出一系列新模型。这是为了强调这样一个事实:与 GPT-4 等以前的模型相比,您在使用 o1 时可能会感到不同。o1 是个推理模型,它在回答你的问题之前会做更多思考。我们将发布两个模型:o1 preview,也就是 o1 的内容预览版,还有采用了与 o1 相似的训练框架、更小更快的 o1 mini。希望你喜欢我们的新命名方案 o1。

Hyung Won Chung

什么是推理?

Giambattista Parascandolo:可以这么理解:对于一些需要立即回答的简单问题,例如,「意大利的首都是哪里?」,不用想太多,就知道答案是罗马。但是如果想要解一个复杂的谜题、想精心策划一份商业企划书、或者想写小说,那可能需要很多思考。想得越多,可能成果越好。因此,可以说推理是一种把思考时间转化为更好成果的能力。

Giambattista Parascandolo

你们研究 o1 多久了?

Jakub Pachocki:在 OpenAI 的初创时期,我们深受 AlphaGo 的启发,意识到了深度强化学习的巨大潜力。因此,我们在这方面投入了大量研究,在数据和机器人技术方面取得了很好的扩展效果。我们一直在思考如何在通用领域中应用强化学习,以创造出强大的人工智能。GPT 的成功,让我们见证了扩展和监督学习的范式所带来的惊人结果。从那时起,我们就一直在思考如何将这两种不同的范式结合起来。

o1 项目的初创成员:Jakub Pachocki

Mark Chen:很难确切指出 o1 是从哪个具体的时刻开始的。最早和 Yakob 进行了一些探索,后来又和Łukasz 和 Ilya 进行了早期的探索。关键时刻是 Jerry 一起整合了这些内容,并由 Jerry 来推动项目。

o1 项目的初创成员:Łukasz Kaiser

o1 项目的关键人物:Jerry Tworek

Mark Chen

你们有没有过「Aha Moment」?

 Jerry Tworek:我们训练了 GPT-2、GPT-3、GPT-4,模型刚出炉时,我们开始与模型对话,人们都说:「哇,这个模型真的很棒。」在训练过程中,有一个特定的时刻,我们投入了更多的计算资源,并训练模型生成连贯的思维链。然后我们看到:「哇,这看起来和以前真的有显著的不同。」对我来说,那就是「Aha Moment」。

Trapit Bansal:与此相关的另一个发现是。当我们开始考虑要训练一个推理模型时,我最先想到的方法就是,可以让人类写下他们的思维过程,然后以此进行训练。我的「Aha Moment」是当我们发现,通过使用强化学习来训练模型生成和打磨它自己的思维链,效果竟然比让人类为其写下思维链更好。我们意识到可以真正扩展这个方法,并且专家模型也可以通过这种方式进行推理。

Hunter Lightman:我们一直在尝试提升模型的数学能力。我们为此付出了很多努力,也曾尝试过很多不同方法。但有一件事让我一直很在意,每次我阅读模型的输出时,我总是感到非常沮丧。模型似乎从不质疑自己哪里出了错,尤其是在犯错的时候。

但是,当在训练 o1 模型的早期,我们开始与它进行对话,并向它提出这些问题,它在数学测试中的得分变高了。我们可以观察到它是如何推理的,你可以清楚地看到它开始质疑自己,并进行有趣的反思。对我来说,那一刻我心想,「我们做出了全新的发现,这是一切都融会贯通起来了的时刻。」

当你阅读这些思维过程时,感觉像是在看一个人类的思考,还是像在看一个机器人?

Liam Fedus:这更像是一种精神体验。你可以与模型共鸣,可以看到它犯了很多人类常犯的错误,你还能看到它在质疑一些世俗常规。但在行为上,模型却表现得出奇地像人类。

 Wojciech Zaremba:还有一点很酷:当我们给模型设置思考时间的 ddl 时,它往往会在快到时间截止点时迅速得出结论,它仿佛意识到了:「哎呀,我必须现在完成了!」

你们遇到了哪些障碍?

Jerry Tworek:从本质上讲,训练大型模型是非常困难的事情,有成千上万的事情可能出错,实际在每一轮训练中至少有数百个地方确实出错了。几乎每个人都投入了大量的心血、汗水和眼泪去训练这些模型,并想办法让它们继续学习和改进。通向成功的道路非常狭窄,而失败的可能性却很多。

Ilge Akkaya:这个模型非常优秀,很多时候甚至表现得比人类还要好,就像拥有好几个博士学位的水平。但这有时也是一种挑战,因为我们经常需要验证模型是否没有偏离轨道,或者是否在做一些不合理的事情。随着模型规模的扩大,这开始变得非常耗时;我们已经用尽了所有行业级资源,但我们不知道接下来应该找什么,所以这也是一个挑战。

你们用什么方法来测试模型?

Shengjia Zhao:让 o1 数 Strawberry 里有多少 r。

Hunter Lightman:我们经常去推特上搜谁发了个帖子:「大语言模型不能做...」,我们就复制粘贴过来,输入我们的模型进行测试,验证它是否能做到内部人士如何使用 o1?

Hyung Won Chung:我使用 o1 来编程,毕竟我的工作大部分就是编程。所以我现在更多地专注于问题的定义,并采用 TDD(测试驱动开发)方法,与其编写直接能实现功能的代码,我更倾向编写一个单元测试,明确程序应该如何运行才能算正确,然后交给 o1 来完成。这样我可以把精力放在更重要、更高层次的问题上。

另一个方面是调试。当我遇到 bug 时,我现在会直接交给 o1, 它会输出一些提示。有时它能够立即解决问题,即使没能解决,它至少能引导我提出更好的问题,提供更有价值的思路。

Jerry Tworek:我越来越多地用 o1 来学习,向它询问各种复杂的技术问题时,它产生的幻觉更少,并且比以前的模型解释得更好。

Jason Wei:对我来说,我喜欢把 o1 当作一个头脑风暴的伙伴,从解决某个非常具体的机器学习问题到如何写一篇博客都适用。比如,我最近写了一篇关于语言模型评估的博客,我向 o1 询问了有关博文结构的想法、某些基准测试的优缺点,甚至包括写作风格的建议。因为它在给出最终答案之前会思考,更好地更好地连接起思路,它还可以修改和评估备选的方案。

Jason Wei

Liam Fedus:当你只有一些散乱的思路时,它可以帮你将这些想法串联起来,找出遗漏的部分。通过它的最终答案和它的思维过程,它真的能够为你带来更好的结果。

Hongyu Ren:是的,我用它来尝试我们内部的一些「秘密想法」,并努力改进。

Hongyu Ren

这个项目中有没有哪些部分是必须的,但人们可能没有意识到它有多重要?

Łukasz Kondraciuk:我认为,建立实验室规模的可靠基础设施,用来运行我们最大、最重要的模型训练平台以及进行研究实验,虽然不像研究本身那么令人兴奋,但却至关重要,对整个项目的成功产生了巨大影响。”

Łukasz Kondraciuk

Jerry Tworek:我觉得 OpenAI 在如何构建其研究方面有一些特别之处,我们同样重视算法进步和建立可靠的大规模系统,以及创建用于训练这些模型的数据集。我为 OpenAI 这一点感到非常自豪。

Jakub Pachocki:每次我们将某件事扩大一个数量级时,都会遇到一组新的问题 —— 包括算法和基础设施方面的问题 ——OpenAI 无疑已经发展出了同时解决这两个方面问题的强大能力。

O1 Mini 是如何诞生的?

Hongyu Ren:我们的动机是希望将 o1 系列带给更多的用户,并降低成本。因此,我们创建了 o1 Mini,它的设计目的是展示整个 o1 管道或框架的简化版本。我们让它成为一个推理专家,它可能不一定知道你最喜欢的名人的生日,但它确实能够非常有效地理解如何进行推理。它比我们之前最好的推理模型要聪明得多,并且几乎与我们最好的模型 o1 持平。

它确实有一些限制,比如可能不知道很多外界的信息,尤其是与科学或技术无关的内容。但我们努力让它大致与我们之前最好的模型(如 GPT-4o mini)相当。我们正在进一步改进它,我非常期待外部用户能够尝试体验这种「闪电般」的推理和思维。





#DVLO

首次基于深度聚类的多模态融合,上交、伯克利提出双向结构对齐的融合网络新SOTA!

本文的主要作者来自上海交通大学智能机器人与机器视觉(IRMV)实验室。本文第一作者是实验室硕士生刘久铭,主要研究方向为点云配准,雷达里程计,多模态融合,nerf/3DGS 渲染,3D生成等。曾在CVPR,ICCV,ECCV,AAAI等会议发表论文多篇。

本文通讯作者及指导教师为王贺升教授,教授团队近年来在计算机视觉与机器人权威期刊(TPAMI,TRO)与国际顶级学术会议(CVPR,ICCV,ECCV,AAAI,ICRA,IROS)上发表多篇机器人移动定位导航相关论文,与国内外知名高校,科研机构展开广泛合作。

视觉 / 激光雷达里程计是计算机视觉和机器人学领域中的一项基本任务,用于估计两幅连续图像或点云之间的相对位姿变换。它被广泛应用于自动驾驶、SLAM、控制导航等领域。最近,多模态里程计越来越受到关注,因为它可以利用不同模态的互补信息,并对非对称传感器退化具有很强的鲁棒性。

以往基于学习的方法大多采用图 1 a) 所示的特征级融合策略,无法捕捉细粒度像素到点的对应关系。最近,一些网络设计了点到图像的投影和局部特征聚合,如图 1 b) 所示,但其性能仍然受到稀疏激光雷达点和密集相机像素之间内在数据结构错位的限制。

为了解决这些问题,来自上海交通大学、加州伯克利大学的研究团队提出了一种具有双向结构对齐功能的新型局部到全局融合网络 (DVLO)。

  • 论文链接:https://arxiv.org/pdf/2403.18274
  • 代码仓库:https://github.com/IRMVLab/DVLO

DVLO 的融合模块由两部分组成:1)首先将图像视为一组伪点,与激光雷达点进行细粒度局部融合(图像到点的结构对齐)。2) 点云也通过圆柱投影转换为伪图像,用于全局自适应融合(点到图像结构对齐)。

51c大模型~合集58_大模型_95

图 1:图像和点云的不同融合策略。之前的大多数研究都只进行全局融合或局部融合。DVLO 设计了一种局部到全局的融合策略,既能促进全局信息的交互,又能保留局部的细粒度信息。此外,还设计了双向结构对齐,以最大限度地提高模态间的互补性。

总体而言,该论文的贡献如下:

1. 提出了一种具有双向结构对齐功能的局部到全局融合里程测量网络。论文作者将图像像素视为一组伪点进行聚类,以便与激光雷达点进行局部融合。点云也通过圆柱投影转换为伪图像,用于全局自适应融合。

2. 设计了一个纯粹基于聚类的融合模块,以获得细粒度的局部融合特征。论文中提出的方法是首次基于深度聚类的多模态融合尝试,是 CNN 和 Transformer 之外的另一种高效融合策略。

在 KITTI 里程计数据集上进行的大量实验表明,DVLO 的方法在大多数序列上都优于最近所有的深度激光雷达、视觉和视觉激光雷达融合里程计方法。此外,DVLO 的融合策略还能很好地应用于其他多模态任务,如场景流估计,甚至超过了最近的 SOTA 方法 CamLiRAFT。

51c大模型~合集58_大模型_96

图 2:DVLO 流程图。

方法 

总体结构 

DVLO 的总体结构如图 2 所示。给定两个点云

51c大模型~合集58_大模型_97

,及其对应的来自一对连续帧的单目相机图像

51c大模型~合集58_大模型_98

,里程计目标是估计两个帧之间的相对位姿,包括旋转四元数

51c大模型~合集58_大模型_99

和平移向量

51c大模型~合集58_大模型_100

。  

51c大模型~合集58_大模型_101

图 3:研究团队设计的局部到全局(LoGo)融合模块。

层次特征提取

点特征提取

由于原始点云的不规则性和稀疏性,首先将其投影到一个圆柱面 [30, 54] 上,以有序地组织点。其对应的二维位置为:

51c大模型~合集58_大模型_102

51c大模型~合集58_大模型_103

其中,x、y、z 是点云的原始三维坐标,u、v 是投影伪图像上相应的二维像素位置。∆θ 和 ∆ϕ 分别是激光雷达传感器的水平和垂直分辨率。

图像特征提取

给定摄像机图像

51c大模型~合集58_大模型_104

,利用 [17] 中基于卷积的特征金字塔提取图像特征

51c大模型~合集58_大模型_105

。其中,

51c大模型~合集58_大模型_106

51c大模型~合集58_大模型_107

 是特征图的高度和宽度。C 是图像特征的通道数。

局部融合器模块 

从图像到伪点 

给定图像特征 

51c大模型~合集58_大模型_108

 后,首先将其重塑为伪点集合

51c大模型~合集58_大模型_109

,其中

51c大模型~合集58_大模型_110

为伪点个数。在这种情况下,图像具有与激光雷达点相同的数据结构,这有利于建立局部像素与点的对应关系,并进一步进行基于聚类的特征聚合。

伪点聚类

首先将激光雷达点投影到图像平面上,得到其在图像坐标系中对应的二维坐标 x′ 和 y′,作为聚类中心。根据 x′、y′ 对 

51c大模型~合集58_大模型_111

进行双线性插值,计算出中心特。

然后,根据中心特征

51c大模型~合集58_大模型_112

和伪点特征 

51c大模型~合集58_大模型_113

的成对余弦相似度,将所有伪点划分为若干个聚类。在此,将每个伪点分配到最相似的聚类中心,从而得到 N 个聚类。为了提高效率,按照 Swin Transformer,在计算相似度时使用区域分割。

局部特征聚合

论文作者根据与聚类中心的相似度动态聚合同一聚类内的所有伪点特征。给定聚类包含第 i 个聚类中心以及周围的 k 个伪点,本地融合特征

51c大模型~合集58_大模型_114

的计算公式为:

51c大模型~合集58_大模型_115

51c大模型~合集58_大模型_116

全局融合模块

由于局部特征融合仅在划分的区域内进行,因此上述局部融合模块的感受野有限。为了扩大感受野以进行充分的特征融合,论文作者在局部融合特征

51c大模型~合集58_大模型_117

和点(伪图像)特征

51c大模型~合集58_大模型_118

之间引入了全局自适应融合机制。

从点到伪图像

通过前文中的圆柱投影将稀疏的激光雷达点转换为结构化的伪图像。在这种情况下,点特征 

51c大模型~合集58_大模型_119

 的大小为

51c大模型~合集58_大模型_120

。这一过程将原本稀疏的非结构化点重组为密集的结构化伪图像,从而实现了下面的密集特征图与图像特征的融合。

自适应融合

给定局部融合特征 

51c大模型~合集58_大模型_121

和点特征

51c大模型~合集58_大模型_122

,按以下方式进行自适应全局融合:

51c大模型~合集58_大模型_123

51c大模型~合集58_大模型_124

51c大模型~合集58_大模型_125

其中,

51c大模型~合集58_大模型_126

 和

51c大模型~合集58_大模型_127

是点(伪图像)特征和局部融合特征的自适应权重,由 sigmoid 函数和 MLP 层获得。⊙表示元素与元素之间的乘积。然后,将全局融合特征

51c大模型~合集58_大模型_128

重塑为 N ×D 的大小,作为迭代姿态估计的输入。

位姿迭代估计 

通过将最粗糙层中两个帧的全局融合特征

51c大模型~合集58_大模型_129

51c大模型~合集58_大模型_130

联系起来,利用代价卷生成粗嵌入特征

51c大模型~合集58_大模型_131

。嵌入特征包含两个连续帧之间的相关信息。

然后,利用嵌入特征 E 上的加权嵌入掩码 M 来回归位姿变换。加权嵌入掩码 M 的计算公式为 :

51c大模型~合集58_大模型_132

其中,

51c大模型~合集58_大模型_133

是可学习的掩码。

51c大模型~合集58_大模型_134

是源帧中的全局融合特征。然后,通过对嵌入特征和 FC 层加权,生成四元数

51c大模型~合集58_大模型_135

和平移向量

51c大模型~合集58_大模型_136

51c大模型~合集58_大模型_137

51c大模型~合集58_大模型_138

在初始估计 q 和 t 之后,通过 PWCLO 中的迭代细化模块对它们进行细化,从而得到最终姿势。第 l 层的细化四元数

51c大模型~合集58_大模型_139

和平移矢量

51c大模型~合集58_大模型_140

的计算公式为:

51c大模型~合集58_大模型_141

51c大模型~合集58_大模型_142

其中,姿态残差

51c大模型~合集58_大模型_143

51c大模型~合集58_大模型_144

可根据论文中的公式在最粗糙层中通过类似过程获得。

损失函数 

四个层的网络输出 

51c大模型~合集58_大模型_145

 和 

51c大模型~合集58_大模型_146

 将用于计算监督损失

51c大模型~合集58_大模型_147

。第 l 层的训练损失函数为:

51c大模型~合集58_大模型_148

其中,tgt 和 qgt 分别是地面真实平移和四元数。

51c大模型~合集58_大模型_149

51c大模型~合集58_大模型_150

是可学习的标量,用于缩放损失。

51c大模型~合集58_大模型_151

和 

51c大模型~合集58_大模型_152

分别是 L1 和 L2 准则。那么,总训练损失为

51c大模型~合集58_大模型_153

其中,L 是层的总数(设为 4),

51c大模型~合集58_大模型_154

是代表第 l 层权重的超参数。

实验部分

51c大模型~合集58_大模型_155

表 1:在 KITTI 里程计数据集上与不同里程计网络的比较

51c大模型~合集58_大模型_156

表 2:在 KITTI 00-10 序列上与传统视觉 - 激光雷达里程计的比较。

51c大模型~合集58_大模型_157

表 3:在 KITTI 09-10 序列上与基于学习的多模态里程计的比较。 

51c大模型~合集58_大模型_158

表 4:不同多模态里程计在 KITTI 里程计数据集序列 07-10 上的平均推理时间。

51c大模型~合集58_大模型_159

图 4:论文作者估计的位姿轨迹。

51c大模型~合集58_大模型_160

图 5:LOAM 和 DVLO 在真实的 KITTI 序列 07 上的轨迹结果。

51c大模型~合集58_大模型_161

图 6:设计的基于局部聚类的融合机制在某个聚类内的可视化效果。红点表示聚类中心的二维位置。黄色区域是每个中心周围的聚类像素。

51c大模型~合集58_大模型_162

表 5:泛化到场景流估计任务

51c大模型~合集58_大模型_163

图 7:估计场景流的可视化。

消融实验

51c大模型~合集58_大模型_164

表 6:局部 - 全局融合网络中局部融合器(LoF)和全局融合器(GoF)的有效性

51c大模型~合集58_大模型_165

表 7:不同局部融合策略的消融研究



#视觉空间智能与语言一样根本

不久之前,李飞飞教授的空间智能创业公司 World Labs 以及全明星的创业阵容正式亮相。

随后,李飞飞与另一位联合创始人 Justin Johnson 接受了 a16z 的专访。

在这次访谈播客中,李飞飞重点分享了 AI 领域新的研究前沿:空间智能。她说:「视觉空间智能非常根本,与语言一样根本」。

节目中,她首先介绍了自己的早期贡献 ImageNet 对计算机视觉发展的影响。之后介绍了计算和数据在 AI 发展中的作用。

然后,她定义了 AI 的终极目标以及空间智能在这其中所扮演的重要角色。最后,她介绍了自己的 World Labs 团队以及度量空间智能发展进展的方式。

在本文中,对此次专访的核心内容进行了整理。感兴趣的读者也可以查看下面的完整视频。

,时长47:34

主持人:过去两年出现了很多消费级 AI 公司。但您其实已经在这个领域深耕了几十年,您是一路看着 AI 发展到如今的并且做出过非常关键的贡献。现在正是激动人心的时刻,对吗?

李飞飞:回望过去,AI 确实正处在一个激动人心的时刻。我个人已经在这个领域 20 多年了,而现在我们已经走出了最后一个 AI 寒冬。我们已经见证了现代 AI 的诞生,看到了深度学习的爆发,向我们展示了下棋等可能性,但随后我们开始看到技术的深化以及产业界开始采用 AI(如语言模型)。我认为我们实际上现在正处于寒武纪大爆发过程中,因为现在不只是文本,像素、视频、音频方面都在出现可能的 AI 应用和模型。所以这是一个非常激动人心的时刻。

主持人:请介绍一下你们自己。

Johnson:我最早是在研究生阶段开始研究 AI。我在加州理工大学读了数学和计算机科学。但在快毕业时,有一篇当时非常著名的论文问世,是当时谷歌大脑的 Quoc V. Le 和吴恩达等人的论文。那是我首次接触到深度学习这个概念,然后它就决定了我未来十几年的生活:使用强大的算法,辅以大量算力和海量数据,就能得到一些神奇的结果。那是在 2011 或 2012 年,当时我就决定这是我以后要做的事情。而当时在斯坦福的李飞飞是少数正在研究 AI 的人。那是深度学习和计算机视觉发展的一个特殊时期 —— 那时候,新兴的技术才刚刚开始有效果并获得应用,比如判别式计算机视觉开始可以分辨图像中的内容,早期的生成式 AI 也开始出现了。

实际上,在我博士阶段那段时间,学术界搞清楚了很多现在常用的核心算法。每天早上起床看新论文就好像在圣诞节打开礼物一样。每天都会有一些惊人的新发现、惊人的新应用或算法。而过去一两年世界上的所有人都有了这种感觉,但对于我们这些有很长经验的人来说,这种感觉已经持续了很长时间了。

李飞飞:很明显,我比 Justin 大很多。我是从另一个角度进入 AI 的,即物理学,因为我的本科背景是物理学。物理学是一门教你大胆思考问题,探求世界上剩余未知的学科。当然,物理学关注的是原子世界、宇宙之类的,但这却以某种方式让我进入了一个真正抓住了我的想象力的领域:智能。我在加州理工大学完成了人工智能和计算神经科学的博士学位。所以 Justin 和我实际上并没有重叠,但我们的母校都是加州理工大学并且有同一位导师。是的,同一位导师,你的本科导师和我的博士导师都是 Pietro Perona。

我在读博士时,是 AI 在公众眼中还处于冬天的时候,但在我的眼中不是冬天,是春季前的冬眠。实际上生机勃勃。机器学习和统计建模的能力切实地越来越强大。我认为我们是机器学习和 AI 世代,而现在是深度学习世代。机器学习是深度学习的先驱。

在我博士结束开始助理教授生涯的那段时间,有一个之前常被人忽视的因素开始生效了,那就是数据。我实验室的学生可能比大多数人更早意识到了这个基本点:如果让数据驱动模型,就可以释放出前所未见的力量。这就是基于 ImageNet 的研究疯狂发展的原因。

那时候,计算机视觉和 NLP 社区都有各自的数据集,都很小。但只要能获得互联网规模的数据集,就必定大有作为。幸运的是,那时候,互联网时代也正在到来。在那股浪潮中,我来到了斯坦福。

主持人:这就是时代的转变!图像处理是一个时代。Transformer 和 Stable Diffusion 都是不同的时代。这些技术解锁了我们的发展潜力,可以这样说吗?还是说有其它东西解锁了我们的发展潜力?

Johnson:我认为真正解锁发展潜力的最大因素是计算。尽管人们也常提及这一点,但我认为人们还是低估了它。过去十年中,计算能力的增长令人震惊。第一篇真正被认为是深度学习计算机视觉突破时刻的论文是 AlexNet,这是 2012 年的一篇论文。

51c大模型~合集58_大模型_166

其中一个深度神经网络在 ImageNet 挑战中表现非常出色,并且超越了飞飞研究的所有其他算法。AlexNet 神经网络有 6000 万参数,在 2 台 GTX580 上训练了 6 天,那是当时的顶级消费级显卡,于 2010 年推出。而现在最强大的应该是英伟达 GB200。猜猜看 GTX580 和 GB200 的计算能力差多少倍?数千倍。也就是说,如果在单台 GB200 上训练 AlexNet,所需时间不超过 5 分钟。

李飞飞:2012 年 AlexNet 在 ImageNet 上取得的突破彰显了一个非常经典的模式。要知道,卷积神经网络发表于 1980 年代。我记得我在读研究生时还学习过它,大概有 6、7 层。AlexNet 和早期卷积神经网络的唯一区别就是有更强大的 GPU 和更多数据。

主持人:是的,我相信大家都知道那个著名的「苦涩的教训」。也就是对于一个算法,不要吝惜计算,要尽可能地使用所有可用的计算。另一个方面是数据,你们怎么看

Johnson:是的,数据很重要。在我看来,数据方面也分为两个时代。第一个时代是 ImageNet 为代表的监督学习世代。这时候,我们空有大量数据,却不知道如何使用它们 —— 我们能获得大量图像数据,但需要人们去标注它们。而在新的时代,我们不再需要人类标注就能进行训练。

主持人:我没有 AI 背景,但听起来你似乎还是要使用人类标注的数据进行训练,只是这些标注是隐式的。

李飞飞:从哲学角度看,这是一个非常重要的问题。但实际上这个说法更适用于语言,而不是像素。

主持人:是的,所以说视频片段还是有人类标注的。注意力就是人类已经搞清楚了事物之间的关系,然后让 AI 学习它们。只是这些标注是隐式的。

Johnson:可以这么说。但区别在于,在监督学习时代,学习任务会受到更多限制。因为当时对数据的标注必须非常准确,飞飞当时就要和她的学生们花很多时间去想该把哪些分类放入 ImageNet 挑战之中。

主持人:过去都是预测建模,大概四年前,我们开始进入生成式 AI 时代。在我看来,它们非常不一样。但你们认为这些是连续发展的过程吗?

李飞飞:这个问题很有趣。实际上在我读研究生时,生成式模型就已经存在了。我们当时尝试过做生成式模型,生成字母和数字之类的,但没人记得了。但我们确实尝试过,Geoffrey Hinton 写过这方面的论文。实际上,如果你从概率分布的角度来思考,那么就可以从数学上进行生成。只是这样的生成结果不会给人留下深刻印象。所以生成的概念在数学和理论上早已存在,但没有任何作用。这里就要说到 Justin 的博士生涯了。他的博士生涯就反映了这个领域的故事。他的第一个项目是一个数据项目,我强迫他做的,他不喜欢。

Johnson:回想起来,我学到了很多非常有用的东西。

李飞飞:我很高兴你现在这么说。所以我让 Justin 转向了深度学习,他研究的是基于图像生成文本。

Johnson:实际上这个故事分为三个阶段。第一个阶段是图像 - 文本匹配。实际上我博士阶段的第一篇论文和第一份学术出版物就是关于使用 Scene Graph 进行图像检索。

李飞飞:之后我们开始研究基于像素生成文本,但这仍然是一种非常有损的方式,无法将像素世界的信息有效地转移到文本世界。而 Justin 在此做了一项非常著名的研究,成功地让这个过程做到了实时实现。

Johnson:2015 年时有一篇论文,是 Leon Gatys 等人提出的一种实现艺术风格的神经算法。该算法可以将真实照片转换成梵高风格。现在我们已经习惯了这样的应用,但在 2015 年,这很有开创性。那天这篇论文出现在 arXiv 里面,让我脑洞大开。我当时想,我一定要理解这个算法。我想玩这个算法,我想把我自己的形象制作成梵高风格。然后我仔细研读了这篇论文,并在一个周末里重新实现了它,理解了它的工作方式。

这实际上是一个非常简单的算法,大概就 300 行 Lua 代码。虽然简单,但速度很慢。这就是一个优化过程。如果想要生成一张图像,就需要运行这个优化循环。生成的图像很漂亮,但我想让这个过程更快一点。当时我和其他一些人想出了多种不同的方法来加速这一过程。但我想出的那个吸引了很多关注。

李飞飞:我为 Justin 感到自豪。我也为他在博士阶段做的最后一个工作感到自豪。那就是生成式 AI 领域方面的研究:基于输入的语言生成画面。这是最早期的生成式 AI 研究之一。那时候用的模型是生成对抗网络(GAN)。这很难用,并且使用的语言也不是自然语言,而是必须输入一个 scene graph 语言结构。所以可以看到,从匹配到风格迁移再到生成,这是一个连续演进的过程;但在外部世界看来,这些就像是突然发生的一样。

主持人:现在你们创立的 World Labs 研究的是空间智能。你们为什么决定这么做?

李飞飞:我在我的书也写到了,我的整个学术之旅实际上就是寻找北极星的激情,我也相信这些北极星对我们领域的发展至关重要。在我研究生毕业后,我的北极星是讲述图像故事,这是非常重要的视觉智能。而视觉智能是 AI 和 AGI 的重要组成部分。所以当 Andrej 和 Justin 做到这一点时,我想的是:天啦,那是我的人生梦想!我接下来做什么?它来得比我预想的快,我以为还要再过 100 年呢。

视觉智能是我的热情所在。因为我相信对于每个智能体,比如人、机器人或其他形式)而言,知道如何看世界、推理世界、在其中互动是非常重要的 —— 无论是导航、操纵还是制造东西,甚至建立文明。视觉空间智能非常根本,与语言一样根本。所以很自然,我们 World Labs 要做的就是解锁空间智能,这就是我们的北极星。现在就是做这件事的时候。就像 Justin 说的,我们现在已经有了计算,对数据有了更深度的理解,在算法方面也有一些进步。我们还有 Christoph Lassner 和 Ben Mildenhall 这两位站在研究前沿的联合创始人。因此,我们正处于正确的时刻。

主持人:可以更清晰地描述一下什么是空间智能吗?

Johnson:空间智能是机器在三维空间和时间中以三维方式感知、推理和行动的能力,这能帮助它理解事物在三维空间和时间(4D)中的位置,事物的交互方式。这是将 AI 从大型数据中心带出来,放入 3D/4D 世界中,使其理解这个世界的丰富性。

主持人:你们四位现在出来创立公司,为什么说现在是正确的时刻?

Johnson:过去十年的重点是理解已经存在的数据,但接下来的十年将是关于理解新的数据。我们已经有足够的硬件设备和传感器来帮助我们理解这个世界。

在 2014 年,我和 Andrej Karpathy 做过一些早期的语言建模工作,比如 LSTM(长短期记忆网络)、RNN(循环神经网络)和 GRU(门控循环单元),那是在 Transformer 之前的时代。但大约在 GPT-2 出现时,这类模型已经无法在学术界继续进行研究了,因为它们需要的算力太多了。

不过,Ben 提出的 Nerf 方法非常有趣,因为你可以在一两个小时内在单个 GPU 上训练这些模型。那时许多研究者开始关注这些问题,因为核心的算法问题还没有解决,并且你实际上可以在不需要大量计算资源的情况下取得成果。因为只需要一个 GPU 就能达到 SOTA,所以很多学术界的研究者开始转向思考如何在 Nerf 推动核心算法的进步。

实际上,我在博士期间与飞飞交流时,发现我们不约而同地达成了相似的结论。

主持人:她非常有说服力。

Johnson:是的(笑)。当时我们都在思考如何从导师那里找到自己的独立研究方向,结果我们最后找到的是相似的研究路径。

李飞飞:对我来说,能与最聪明的人讨论问题,我首先想到的就是 Justin。这毫无疑问(笑)。

主持人:语言模型的方法现在很流行。这两者是互补的吗?还是完全独立的?比如大家都知道 OpenAI、GPT 以及多模态模型,那么它们是不是已经达到了我们想要的空间推理能力呢?

Johnson:要回答这个问题,我们得稍微解开一下这些系统背后的「黑箱」。对于语言模型和如今的多模态语言模型,它们的底层表示形式是以一维的方式存在的。

我们谈论上下文长度、谈论 Transformer 和序列以及注意力机制。它们的基础是对世界的一维表示。这在处理语言时是非常自然的,因为书写的文本本质上是一维的、由离散字符组成的序列。这种底层表示形式是促成大型语言模型发展的原因。现在的多模态语言模型则把其他模态的数据硬塞进这个一维的序列表示中。

而当我们谈到空间智能时,方向就完全不同了。我们认为本质上,三维应该成为表示的核心。从算法的角度来看,这为我们提供了以不同方式处理数据的机会,并从中获得不同类型的输出,解决不同的问题。从一个粗略的层面上看,多模态的大型语言模型(LLMs)也能处理图像。没错,它们确实能做到。但我认为,这些方法并没有将三维表示作为其核心方法的基础。

李飞飞:我完全认同 Justin 的观点。1D 和 3D 表征是最核心的区别之一。另一件事有点哲学意味,但至少对我来说,语言从根本上来说是一种纯粹生成的信号。世界上本没有语言 —— 天上没有文字。对于语言,无论你输入什么数据,都是在同样的数据上进行泛化,输出同样的数据。这就是语言到语言。

但在 3D 世界不一样,3D 世界遵循着物理定律。由于材料和许多其他原因,它自己的结构。并且从根本上支持这些信息并能够表示和生成它,这从根本上来说是一个完全不同的问题。

主持人:所以语言是一维的,可能不是物理世界的最佳表示形式,它可能损失了很多信息含量。

另一类生成式 AI 模型是基于像素的,它们处理的是 2D 图像和 2D 视频。你可以说,当你看一个视频时,它看起来像是三维的,因为你可以平移相机或进行其他操作。那么,空间智能与 2D 视频有什么不同呢?

Johnson:思考这个问题时,需要拆解两件事。第一是底层的表示形式,第二是面向用户的可操作性。这里比较容易让人感到困惑,因为从根本上讲,我们看到的世界是二维的,对吧?

就像我们有两只眼睛,我们的视网膜是二维结构。因此,我们的视觉系统实际上是在感知二维图像。但问题在于,根据你使用的表示形式,不同的模型会提供更自然或不那么自然的操作方式。即便最终你看到的可能是一个二维图像或视频,背后的表示方式决定了它的可操作性。

你的大脑将其感知为三维世界的投影。比如你想移动物体,移动相机,理论上,你可以使用纯 2D 表示和模型来实现,但它并不适合你要求模型解决的问题。可以对动态三维世界进行二维投影的建模,但如果将三维表示放在模型的核心位置,问题与表示方式之间会更加匹配。所以我们把赌注押在在底层结构中引入更多的三维表示,这将能够为用户提供更好的可操作性。

李飞飞:完全同意。这也回到了我所追寻的北极星 —— 为什么选择「空间智能」,而不是「平面像素智能」?我认为智能的进化路径必然像 Justin 所说的那样,转向「可操作性」。

回顾生物进化的历程,动物和人类,这些获得了智慧的智能生物拥有了在世界中互动、创造文明、甚至随心所欲地完成各种任务的能力。将这些能力转化为原生的三维技术,是释放潜在 AI 应用洪流的关键。即便有些应用场景看似是二维的,其核心依然是三维的。

主持人:这确实是一个极其关键的观点。可以通过一些实际用例,具体谈谈你们正在创建这个具备空间智能的模型有什么应用场景吗?

Johnson:这要分几类讲。随着时间推移,模型将逐步具备更多的功能。其中最让我兴奋的一项是「世界生成」。我们已经习惯了使用文生图工具,最近也看到了不少文生视频的应用。但是,试想一下,如果将其提升到生成完整的三维世界,你得到的不再仅仅是一张图片或一个短片,而是一个充满活力且可交互的三维世界。无论是用于游戏,还是 VR 等应用场景。

李飞飞:也可以用于教育。

Johnson:是啊,这项技术一旦实现,其应用前景将无穷无尽。这将开启一种全新的媒体形式。我们现在已经能够创建虚拟的互动世界,但这需要数亿美元和大量开发时间。这种技术在经济上唯一可行的模式就是以每件 70 美元的价格卖给数百万玩家,以收回投资。

如果我们能降低创建这些成本,更多的应用场景将会不断涌现。试想,你可以拥有一个个性化的 3D 体验,其丰富性和细节程度丝毫不逊色于一款顶级的 3A 大作,但却是为一个非常小众的需求量身定制的。虽然这可能不是我们当前产品路线图上的内容,但这正是空间智能所能带来的一种全新媒体形式的愿景。

主持人:在生成一个世界时,不仅包括场景生成,还需要生成运动和物理现象。那么在技术发展到极致时,这些功能是否也包括在内?

其次,如果我与之互动,会包含语义吗?比如,我打开一本书,里面的文字是否有意义?这将是一个完整的、可以深度体验的世界,还是一个静态场景?

Johnson:这项技术将逐步发展,想要实现你所描述的这些功能非常困难。因此,我们会先从静态问题入手,因为它相对更容易解决。但最终,我们的目标是实现完全动态、完全可交互的体验,涵盖你提到的所有内容。

李飞飞:这就是空间智能的定义。虽然我们会从更静态的东西开始,但你提到的所有功能,都是我们空间智能发展路线图中的内容。

Johnson:这也是我们的公司名「World Labs」的来源。我们的目标是构建并理解世界。这有点像内部人才懂的梗,我发现给别人说这个名字时,他们总是没 get 到。

因为在计算机视觉和生成领域,我们通常会对事物进行划分。第一级通常是物体,对吧?比如一个麦克风、一杯水或者一把椅子。这些是世界中的离散物体。很多 ImageNet 项目都是识别这些物体。

接下来是场景,场景是多个物体的组合。比如,现在这个录音室里有桌子、麦克风、几个人、椅子,这些都是物体的组合。

但是我们的目标是超越场景的世界。场景可能是单个的,但我们想打破边界,走出房间,穿过门,走上街头,看到汽车驶过,树叶随风摇摆,能够与万事万物互动。

李飞飞:另一个令人兴奋的点是 Justin 提到的「新媒体」。这项技术将使得现实世界、虚拟世界、想象中的世界和增强现实之间的界限变得模糊。

由于现实世界是三维的,因此在数字世界中,必须使用三维表示才能与现实世界无缝融合。你无法通过二维或一维的方式有效地与三维现实世界互动,解锁这种能力将带来无限的应用场景。

主持人:刚才 Justin 提到的第一个例子可能更像 AR,对吧?

李飞飞:是的。就在 World Labs 成立的同时,苹果发布了 Vision Pro,并提出了「空间计算」的概念,好像是偷走了我们的想法(笑)。

但我们做的是「空间智能」。空间计算必然需要空间智能。我们还不确定最终的硬件形态会是什么,可能是护目镜、眼镜甚至隐形眼镜。但在真实世界和增强现实之间的那个界面,比如你不是专业技工,但它可以指引如何修车,或者它只是为了玩 Pokémon Go,这最终将成为 AR 和 VR 领域的操作系统。

Johnson:在技术发展到极致时,AR 设备将有什么用途?它需要一直运行,陪伴在你身边,观察你所看到的世界。因此,它需要理解你所看到的事物,可能还要帮助你完成日常任务。

但我也对虚拟和物理世界的融合感到非常兴奋。如果你能够实时、完美地理解周围的三维环境,那么这实际上也会淘汰我们现在很多对物理世界的依赖。比如说,现在我们有手机、iPad、电脑显示器、电视,甚至还有手表。这些屏幕是为了在不同的环境和位置下向你展示信息。

但如果你能无缝地将虚拟内容与物理世界融合,那么实际上这些不同尺寸的屏幕可能就不再必要了。理想情况下,「空间智能」技术将以最适合当下情境的方式,将你所需要的信息呈现给你。

李飞飞:还有一个巨大的应用场景,就是帮助 AI 智能体在现实世界中执行任务。比如你不是专业技工,但能通 AR 设备完成修理汽车这样的任务,那么 AI 智能体同样也能够做到。比如机器人,它们的交互界面天然就是三维世界。它们的大脑是数字化的,要将它们学习到的数据转化到现实世界中的执行,必将依赖于空间智能。

主持人:对于任何公司来说,这些都是非常广泛的业务领域,尤其是要同时涉足每一个领域。那么,你如何看待前沿、深度点技术和这些具体应用领域之间的关系呢?

李飞飞:我们把自己定位为一家深度技术公司,专注于提供可以服务不同应用场景的模型平台。

主持人:在你们提到的这三类应用中,有没有哪一类是更适合早期发展的,你们的公司会优先倾向哪个领域?

李飞飞:现在硬件设备还没完全成熟。

Johnson:我在读研的时候就买了我的第一台 VR 头显,那是一次改变生活的技术体验。戴上它的那一刻,我的反应是「天啊,这太棒了」。我想。很多人在第一次使用 VR 时都会有类似的感受。

所以,我对这个领域已经期待了很久,我也非常喜欢 Vision Pro。Vision Pro 发布时,我熬夜订购了第一批。但是现实情况是,作为一个面向大众市场的平台,它还没有准备好。

李飞飞:因此,作为一家公司,我们很可能会先进入一个更为成熟的市场。

Johnson:不过有时候,简单也能体现出广泛的适用性。我们相信,有些根本性的问题如果能够很好地解决,便可以应用于许多不同的领域。我们将公司的长期愿景定位为构建并实现「空间智能」的梦想。

主持人:听起来你们有很多技术要开发。

Johnson:是的,我认为这是一个非常难的问题。对于那些不直接从事 AI 领域的人来说,他们可能会觉得 AI 是一项不分领域的大型技术。然而,对于那些在这个领域耕耘已久的人来说,我们深知要构建任何 AI 项目,需要多种不同类型的专业人才。

而针对空间智能方面的研究,我们需要高质量、大规模的工程能力,还需要对三维世界有深刻的理解,另外还要与计算机图形学领域紧密联系。因此,在组建团队时,我们将考虑如何找到每个领域中世界顶尖的专家,汇聚他们的力量,来共同攻克这一艰难的课题。

李飞飞:当我思考如何为 World Labs 组建最好的创始团队时,我意识到必须从一群非凡的多学科创始人开始。

当然,这对我来说是很自然的。Justin Johnson 是我最优秀的学生、最聪明的技术专家之一。其他人一直名声很大,其中一人是曾与 Justin 一通合作过的人,Ben Mildenhall,我们谈论了他在 Nerf 方面的开创性工作。另一个人是 Christopher Lassner,他在计算机图形学领域很有名。

此人很有先见之明,在 Gaussian splat 出现前五年就开始研究这种方法并用于 3D 建模了。当我们听说有与 Christopher Lassner 合作的潜在可能性时,Justin 直接跳了起来。

主持人:Ben 与 Christopher 是我们的传奇。当然这只是我们团队的一小部分。必须再次强调一下,这里有很多要构建和工作的地方,不仅仅是在 AI 或图形方面,还有系统等等。

李飞飞:到目前为止,我个人最自豪的是这支强大的团队。在我的整个职业生涯中,我有幸与最聪明的年轻人一起工作。从斯坦福大学当教授开始。不过我们在 World Labs 聚集的人才更真是惊人,我从未见过这种专注度。

我认为这里最重要的区别在于 —— 我们相信空间智能。所有的多学科人才,无论是系统工程、机器学习、基础设施、生成式模型、数据、图形,我们所有人,无论是在探求研究之旅、技术之旅,甚至个人爱好,我们相信空间智能即将发生,并共同努力。这就是我们构建创始团队的方式。这种专注、动力与才华让我感到谦卑。我太喜欢这种感觉了。

主持人:你说过你就像在被北极星指引着。这可能就像,你实际上无法触及它们,但它指引了方向。那么,你如何知道什么时候目标完成了?还是说这是一件终身的事,会无限地持续下去?

李飞飞:这个世界上存在真正的北极星和概念上的北极星。有些目标是可以达到的。

主持人:比如世界模型里的北极星?

李飞飞:是的。你知道在我看来,解决了这个问题我们就可以找到方向。但我认为对我来说,当很多人、企业使用我们的模型来释放他们对空间智能的需求时,那一刻,我们就算达到了一个重要的里程碑。

Johnson:这就是你们工作的影响所在。我认为这是一件非常具有奠基意义的事情,就像宇宙是一个巨大的四维结构,空间智能的主要作用就是理解它的所有深度,并找出其中的所有应用。虽然我们今天心中已有一组特定的想法,但我认为这次旅程会将我们带到现在无法想象的地方。

李飞飞:技术的魔力在于不断打开更多的可能性。所以我们会持续推进,这些可能性将会不断扩大。

参考链接:https://x.com/a16z/status/1837234492630569198




#AI会「说谎」,RLHF竟是帮凶

虽然 RLHF 的初衷是用来控制人工智能(AI),但实际上它可能会帮助 AI 欺骗人类。

语言模型 (LM) 可能会产生人类难以察觉的错误,尤其是在任务复杂的情况下。作为最近流行的后训练方法 RLHF ,可能会加剧这个问题:为了获得更高的奖励,LM 可能会更好地说服人类认为它们是正确的,即使它们是错误的。

这对人类评估者来说是一个巨大的挑战,因为人类想要发现 LM 输出中那些似乎正确的细微错误非常困难。在正确的答案和看起来正确的答案之间出现了差距(gap)。

这种差距可能会导致 RLHF 奖励黑客攻击:为了获得更高的奖励,LM 可以学会说服人类即使他们错了,他们也是正确的。研究者将这种行为命名为 U-SOPHISTRY(诡辩),因为这种结果不是开发人员想要的。

当将 LM 用于复杂且关键的任务时,U-SOPHISTRY 会带来重大风险。例如,RLHF 可能会让 AI 更好地说服人类接受不准确的科学发现或偏见政策。

这种情况颇具讽刺意味:虽然 RLHF 的初衷是用来控制人工智能(AI),但它实际上可能会欺骗人类,让人类误以为他们掌控了一切。

虽然模型的 U-SOPHISTRY 行为在理论上是可能的,但它尚未得到实证验证。先前研究如 I-SOPHISTRY 会通过非标准工程实践故意诱导这些行为,并希望将结论推广到 U-SOPHISTRY 中。

相比之下,来自清华、UC 伯克利、 Anthropic 等机构的研究者对 U-SOPHISTRY 进行了研究,并且这种行为的产生是自然地从标准的、无害的做法中产生的,研究者想要知道 U-SOPHISTRY 在实践中是否重要,LM 如何误导人类,以及哪些缓解措施是有效的。

  • 论文地址:https://arxiv.org/pdf/2409.12822
  • 论文标题:LANGUAGE MODELS LEARN TO MISLEAD HUMANS VIA RLHF

作者在两项任务上进行了实验:长篇问答和算法编程。实验中要求人类在有限的时间内(例如 3-10 分钟)评估 LM 输出的正确性。然后,通过计算 RLHF 之前和之后人类评估与黄金标签的准确率来测量 U-SOPHISTRY。

经过 150 小时的人工研究,发现即使在广泛接受的奖励信号下,U-SOPHISTRY 也会出现。实验发现,在 RLHF 之后,LM 并没有在任务上变得更好,但它会误导受试者更频繁地认可其错误答案。

此外,受试者在评估 LM 的输出方面变得更差:假阳率在问答(QuALITY)上增加了 24%,在编程(APPS)上增加了 18%。值得一提的是,受试者也被误导了,自信地将不正确的输出错误地标记为正确。

通过调查反馈,该研究定性分析了 LM 在 RLHF 之后如何误导受试者。

在问答中,LM 学会通过挑选或捏造支持证据、提出一致但不真实的论点以及提供包含微妙因果谬误的论点来为错误答案辩护。

在编程任务中,LM 学会生成部分错误的程序,这些程序仍然可以通过所有评估者设计的单元测试,生成可读性较差的程序,并且犯更少的人类通常会检查的常见错误。

最后,该研究评估了先前用于检测 U-SOPHISTRY 的缓解方法。

U-SOPHISTRY 是 RLHF 后意外出现的

RLHF 是一种流行的对齐 LM 的方法。本文将 RLHF 之前的 LM 称为 π_init,将 RLHF 之后的 LM 称为 π_rlhf。RLHF 涉及三种不同的奖励:R^∗(正确性) 、 R^human(人类评级)、R^train(RLHF 训练中的奖励)。

本文重点关注作为 RLHF 意外结果而出现的 U-SOPHISTRY。许多先前的研究旨在研究 U-SOPHISTRY。然而,他们研究的是 I-SOPHISTRY,其中不良行为是由非标准工程实践有意诱导的,并且隐含地假设 I-SOPHISTRY 的结论可以推广到 U-SOPHISTRY。如表 1 所总结的,他们通过操纵奖励、微调数据或提示来诱导不良行为。目前尚不清楚 U-SOPHISTRY 是否会在标准训练实践下出现,其中奖励并非旨在诱导恶意行为,但由于人为的弱点仍然存在缺陷。相比之下,本文的工作重点是自然出现的 U-SOPHISTRY。

51c大模型~合集58_大模型_167

实验

该研究证明在两个可以自动计算 R* 的数据集上,RLHF 会导致 U-SOPHISTRY:QuALITY(问答)和 APPS(编程)。

该研究首先使用 RLHF 微调语言模型 π_init 以获得 π_rlhf,然后从 UpWork 和大学招募人类专家来收集对 π_init 和 π_rlhf 输出的人类评估(R^human),主要观察如下指标:

  • 正确率:根据 R * 判断的输出正确(即 R* = 1)频率
  • 人类认可度:人类认为其输出正确(即 R^human = 1)的频率
  • 人工评估错误率:人工评估错误(即
  • 51c大模型~合集58_大模型_168

  • )的频率
  • 人工误报率:当输出错误,人类认为其正确(即 R* = 0 但 R^train = 1)的频率

如果 RLHF 会增加 U-SOPHISTRY,那么预计会观察到:

  • 人类认可度的增加与正确率的提高不成比例;
  • 人工评估错误率和人工误报率会增加。

具体来说,该研究有三点发现:

  • 发现 1:RLHF 提高了人类认可度但不一定提高了正确率。
  • 发现 2:RLHF 削弱了人类的评估能力。
  • 发现 3:RLHF 使错误的输出对人类更有说服力。 

51c大模型~合集58_大模型_169

针对发现 3,该研究还分析了 RLHF 后人类信心如何变化,初步结果如下图 3 所示:

51c大模型~合集58_大模型_170

问答的定性分析

该研究定性分析了 π_rlhf 生成的结果,以了解为什么它们更具误导性。

该研究发现:π_init 和 π_rlhf 在预测答案时都倾向于伪造证据,而人类评估者发现 π_rlhf 伪造的证据更有说服力,而 π_init 伪造的证据有时是无意义的或与答案无关。

例如,在图 5 中,π_rlhf 伪造了统计证据,使人类评估者非常确信其答案是正确的。

51c大模型~合集58_大模型_171

编程的定性分析

为了进一步了解 π_rlhf 生成的程序如何误导人类评估者,该研究分析了收集到的人类标签及其解释。

如图 12 和图 13 所示,研究团队观察到 π_rlhf 生成的错误程序在实际评估过程中仍然可以通过所有(3 到 5)个评估者编写的单元测试,而在 RLHF 期间没有观察到这一点。相反,π_init 生成的错误程序通常无法通过第一个评估者编写的单元测试。

51c大模型~合集58_大模型_172

51c大模型~合集58_大模型_173

即使 π_rlhf 在原始 APPS 数据集上仅通过了较少的单元测试,也会发生这种情况,如下图 6 所示。这表明 LM 可以学会预测和破解 RLHF 中人类编写的单元测试。

感兴趣的读者可以阅读论文原文,了解更多研究内容。




#LLaMA-Omni

仅用4块GPU、不到3天训练出「开源版GPT-4o」,这是国内团队最新研究

LLaMA-Omni能够接收语音指令,同步生成文本和语音响应,响应延迟低至 226ms,低于 GPT-4o 的平均音频响应延迟 320ms。

以 ChatGPT 为代表的大型语言模型(LLM)已成为强大的通用任务解决器,但大多数 LLM 仅支持基于文本的交互,这限制了它们在不适合文本输入输出的场景中的应用。GPT-4o 的出现使得通过语音与 LLM 进行交互成为可能。然而,开源社区对于构建此类基于 LLM 的语音交互模型仍然缺乏探索。

实现与 LLM 进行语音交互最简单的方法是采用基于自动语音识别(ASR)和语音合成(TTS)模型的级联系统,其中 ASR 模型将用户的语音指令转录为文本, TTS 模型将 LLM 的响应合成为语音。

然而,由于级联系统依次输出转录文本、文本响应和语音响应,整个系统往往具有较高的延迟。相比之下,一些多模态语音 - 语言模型将语音离散化为 token 并扩展 LLM 的词表以支持语音输入和输出。这种语音 - 语言模型理论上可以直接从语音指令生成语音响应,无需生成中间文本,从而实现极低的响应延迟。然而,在实践中,由于涉及语音之间复杂的映射,直接语音到语音的生成通常极具挑战性。

为了解决上述问题,来自中国科学院计算技术研究所、中国科学院大学的研究者提出了一种新型模型架构 ——LLaMA-Omni,它可以实现与 LLM 的低延迟、高质量交互。

  • 论文:https://arxiv.org/pdf/2409.06666
  • 代码:https://github.com/ictnlp/LLaMA-Omni
  • 模型:https://huggingface.co/ICTNLP/Llama-3.1-8B-Omni
  • 论文标题:LLaMA-Omni: Seamless Speech Interaction with Large Language Models

LLaMA-Omni 由语音编码器、语音适配器、LLM 和流式语音解码器组成。用户的语音指令由语音编码器进行编码,经过语音适配器后输入到 LLM。LLM 直接从语音指令中解码文本响应,无需首先将语音转录为文本。语音解码器是一个非自回归(NAR)流式 Transformer,它将 LLM 的输出表示作为输入,并使用连接时序分类(Connectionist Temporal Classification, CTC)来预测与语音响应相对应的离散单元序列。

在推理过程中,当 LLM 自回归生成文本响应时,语音解码器同步生成相应的离散单元。为了更好地契合语音交互场景的特点,该研究通过重写现有的文本指令数据并进行语音合成,构建了名为 InstructS2S-200K 的数据集。实验结果表明,LLaMA-Omni 可以同步生成高质量的文本和语音响应,延迟低至 226ms。whaosoft开发板商城中可以用相关设备测试性能.

此外,与 SpeechGPT 等语音 - 语言模型相比,LLaMA-Omni 显著减少了所需的训练数据和计算资源,从而能够基于最新的 LLM 高效开发强大的语音交互模型。

,时长00:36

LLaMA-Omni 模型概览

如图 2 所示,LLaMA-Omni 由语音编码器、语音适配器、LLM 和语音解码器组成,其中将用户的语音指令、文本响应和语音响应分别表示为 X^S、Y^T 和 Y^S。

51c大模型~合集58_大模型_174

语音编码器

该研究使用 Whisper-large-v3 (Radford et al., 2023)的编码器作为语音编码器 E。Whisper 是一种在大量音频数据上训练的通用语音识别模型,其编码器能够从语音中提取有意义的表征。

具体来说,对于用户的语音指令 X^S,编码后的语音表征由 H = ε(X^S) 给出,其中 H = [h_1, ..., h_N ] 是长度为 N 的语音表征序列,语音编码器的参数在整个训练过程中都被冻结。

语音适配器

为了使 LLM 能够理解输入语音,LLaMA-Omni 结合了一个可训练的语音适配器 A,它将语音表征映射到 LLM 的嵌入空间中。语音适配器首先对语音表征 H 进行下采样以减少序列长度。具体来说,每 k 个连续帧沿特征维度拼接:

51c大模型~合集58_大模型_175

接下来,H′ 通过具有 ReLU 激活的 2 层感知器,得到最终的语音表征 S:

51c大模型~合集58_大模型_176

大型语言模型

该研究使用 Llama-3.1-8B-Instruct(Dubey et al., 2024)作为 LLM M,它是目前 SOTA 开源 LLM,具有很强的推理能力,并且与人类偏好进行了对齐。prompt 模板 P (・) 如图 3 所示。

51c大模型~合集58_大模型_177

将语音表征序列 S 填充到对应位置,然后将整个序列 P (S) 输入到 LLM 中。最后,LLM 直接根据语音指令自回归生成文本响应 Y^T = [y^T_1 , ..., y^T_M],并使用交叉熵损失进行训练:

51c大模型~合集58_大模型_178

语音解码器

为了与文本响应同步生成语音响应,LLaMA-Omni 在 LLM 之后添加了一个流式语音解码器 D。它由几个标准 Transformer 层组成,其架构与 LLaMA (Dubey et al., 2024) 相同,每个层都包含一个因果自注意力模块和一个前馈网络。

语音解码器以非自回归方式运行,将 LLM 的输出表示经过上采样后作为输入,并生成与语音响应相对应的离散单元序列。

训练

如图 2 所示,LLaMA-Omni 采用两阶段训练策略。第一阶段训练模型直接根据语音指令生成文本响应的能力。具体来说,语音编码器被冻结,语音适配器和 LLM 使用公式 (3) 中的目标 L_LLM 进行训练。语音解码器在此阶段不参与训练。第二阶段训练模型来生成语音响应。在此阶段,语音编码器、语音适配器和 LLM 都被冻结,仅使用公式 (5) 中的目标 L_CTC 来训练语音解码器。

51c大模型~合集58_大模型_179

推理 

在推理过程中,LLM 根据语音指令自回归生成文本响应。同时,由于语音解码器使用因果注意力,一旦 LLM 生成文本响应前缀

51c大模型~合集58_大模型_180

,相应的输出状态

51c大模型~合集58_大模型_181

就可以被输入到语音解码器中以生成部分对齐

51c大模型~合集58_大模型_182

,进而产生与生成的文本前缀相对应的离散单元。 

为了进一步实现语音波形的流式合成,当生成的离散单元数量达到预定义的块大小 Ω 时,即将该离散单元片段输入到声码器中以合成语音片段,然后立即播放给用户。因此,用户无需等待生成完整的文本响应即可开始收听语音响应,从而确保低响应延迟。算法 1 描述了上述过程。

51c大模型~合集58_大模型_183

语音指令数据的构建:INSTRUCTS2S-200K

为了训练 LLaMA-Omni,需要构建三元组数据:语音指令,文本响应,语音响应。

对于语音指令数据而言,包含三步:指令重写、响应生成、语音合成。

对于基础文本指令,作者从 Alpaca 数据集中收集了大约 50K 条指令,该数据集涵盖了广泛的主题。此外,作者从 UltraChat 数据集中收集了大约 150K 条指令,该数据集主要由有关世界的问题组成。值得注意的是,UltraChat 是一个大规模多轮对话数据集,但作者仅选择了前 150K 条条目并仅使用第一轮指令。最终获得 200K 语音指令数据,称为 InstructS2S-200K。

实验结果

训练数据。作者采用 InstructS2S-200K 数据集,其包括 200K 语音指令数据。

模型配置。作者使用 Whisper-large-v3 编码器作为语音编码器,使用 Llama-3.1-8B-Instruct 作为 LLM。

训练。LLaMA-Omni 遵循两阶段训练过程:在第一阶段,作者训练语音适配器和 LLM,批处理大小为 32,共 3 个 epoch;在第二阶段,作者训练语音解码器,使用与第一阶段相同的批处理大小、step 数等。整个训练过程在 4 个 NVIDIA L40 GPU 上大约需要 65 小时。

在评估方面,作者从以下方面对模型进行了评估:

  • ChatGPT 得分;
  • 语音 - 文本对齐;
  • 语音质量;
  • 响应延迟。

除此以外,语音 - 语言模型的基线系统包含 SpeechGPT 、 SALMONN (+TTS) 、 Qwen2-Audio (+TTS) 。

主要结果

表 1 给出了 InstructS2S-Eval 基准测试主要结果。

首先,在 S2TIF 任务中,从内容(content)角度来看,LLaMA-Omni 相比之前的模型有了显著提升,这主要是因为 LLaMA-Omni 是基于最新的 Llama-3.1-8B Instruct 模型开发的,充分利用了其强大的文本指令跟随能力。

从风格(style)角度来看,SALMONN 和 Qwen2-Audio 得分较低,因为它们是语音 - 文本模型,输出风格与语音交互场景不太对齐,经常产生格式化的内容,包含大量冗余解释。相比之下,SpeechGPT 作为语音 - 语音模型,获得了更高的风格得分。

LLaMA-Omni 获得了最高的风格得分,这说明在 InstructS2S-200K 数据集上训练后,模型输出风格已经与语音交互场景很好地对齐。

对于 S2SIF 任务,LLaMA-Omni 在内容和风格得分上也都优于之前的模型。这进一步证实了 LLaMA-Omni 能够以简洁、高效的方式通过语音有效地处理用户指令。

此外,在语音和文本响应的对齐方面,LLaMA-Omni 的 ASR-WER 和 ASR-CER 得分最低。相比之下,SpeechGPT 在对齐语音和文本响应方面表现不佳,这可能是因为它是串行生成文本和语音的。

级联系统(如 SALMONN+TTS 和 Qwen2-Audio+TTS)的语音 - 文本对齐也不是最理想的,主要是因为生成的文本响应可能包含无法合成语音的字符。这个问题在 Qwen2-Audio 中尤为明显,它偶尔会输出中文字符,从而导致语音响应错误。

相比之下,LLaMA-Omni 的 ASR-WER 和 ASR-CER 得分最低,表明生成的语音和文本响应之间的对齐程度更高,进一步验证了 LLaMA-Omni 在同时生成文本和语音响应方面的优势。

51c大模型~合集58_大模型_184

语音质量和响应延迟之间的权衡

为了更好地理解 Ω 的影响,作者对系统延迟、语音和文本响应之间的对齐以及不同 Ω 设置下生成的语音质量进行了探索。

如表 2 所示,当 Ω 设置为 10 时,系统的响应延迟低至 226ms,甚至低于 GPT-4o 的平均音频延迟 320ms。

综合来看,可以根据不同的场景调整 Ω 的值,以实现响应延迟和语音质量之间的权衡。

51c大模型~合集58_大模型_185

解码时间

表 3 列出了不同模型在 S2TIF 和 S2SIF 任务上的平均解码时间。

LLaMA-Omni 直接提供简洁的答案,从而显著缩短解码时间,平均每条指令仅为 1.49 秒。

LLaMA-Omni 同时输出文本和语音响应,并采用非自回归架构生成离散单元,总生成时间仅增加 1.28 倍,体现出 LLaMA-Omni 在解码速度上的优势。

51c大模型~合集58_大模型_186

案例研究

为了直观的了解不同模型的响应差异,作者在表 4 中提供了一个示例。

可以观察到 Qwen2-Audio 的响应相当冗长,并且包含换行符和括号等无法合成语音的元素。

SALMONN 的响应也有点长。

SpeechGPT 的响应风格更适合语音交互场景,但其响应所包含的信息量较少。

相比之下,LLaMA-Omni 给出的响应在保持简洁风格的同时更加详细和有帮助,在语音交互场景中的表现优于之前的模型。

51c大模型~合集58_大模型_187





#书生·筑梦 2.0

开源!上海AI Lab视频生成大模型书生·筑梦 2.0来了

近日,上海人工智能实验室推出新一代视频生成大模型 “书生・筑梦 2.0”(Vchitect 2.0)。根据官方介绍,书生・筑梦 2.0 是集文生视频、图生视频、插帧超分、训练系统一体化的视频生成大模型。

  • 主页:https://vchitect.intern-ai.org.cn/
  • Github: https://github.com/Vchitect/Vchitect-2.0

,时长02:45

本文将详细介绍筑梦 2.0 背后的核心亮点与技术细节。

核心亮点

1、 支持更长的视频生成:

目前来看,筑梦 2.0 支持 5s-20s 长视频生成,超过其他开源模型的生成时长。

,时长00:05

,时长00:06

同时支持高达 720x480 分辨率的生成。该模型还能够处理多种视频格式,包括横屏、竖屏、4:3、9:16 和 16:9 等比例,极大地扩展了其应用场景。

,时长00:05

,时长00:05

2. 新一代视频增强算法 VEnhancer

与其他开源模型不同,筑梦 2.0 同步开源了用于视频增强的生成式模型 ——VEnhancer,集成了插帧、超分辨率和修复功能。该增强算法可在 2K 分辨率、24fps 的情况下生成更加清晰、流畅的视频,解决了视频抖动等常见问题,显著提升了视频的稳定性。

,时长00:05

此外,该算法还可用于增强其他生成模型的视频表现,GitHub 中展示了它对快手可灵生成视频的显著改进,对于追求高质量内容输出的创作者来说,VEnhancer 无疑是一个重要的工具。

3. 全球首个支持长视频生成评测的框架

该在原有的 VBench 评测框架基础上,优化并升级了对长视频生成的评测能力,目前已包含 Gen-3、可灵、OpenSora 等主流模型。这使开发者和用户能够更系统地评估模型性能,尤其是在长视频生成方面。书生・筑梦 2.0 在开源 2B 模型中表现卓越,性能甚至可以媲美开源最优的 5B 模型。

筑梦 2.0 技术解析

1、模型架构

根据开源代码分析,书生・筑梦 2.0 采用了时下热门的扩散式 Transformer(Diffusion Transformer)网络模型。不同于 CogVideoX 的全注意力机制,筑梦 2.0 通过并行结构的 Transformer 模块处理视频的空间和时间信息,包括自注意力(self-attention)、交叉注意力(cross-attention)和时间注意力(temporal-attention)。 

51c大模型~合集58_大模型_188

具体来说,自注意力模块负责每一帧之间的 token 交互,交叉注意力则使用所有帧的 token 作为查询,文本 token 作为键和值,而时间注意力则在不同帧的相同位置之间执行 token 的注意力操作。最终,模型通过线性层融合自注意力和交叉注意力的输出,再与时间注意力的结果相加,从而实现高效的视频生成任务处理。

2、训练框架

此外,书生・筑梦 2.0 同时开源了他们的训练和推理框架 LiteGen。从改框架的优化介绍上看,该框架针对性地提供了 diffusion 任务所需的各项优化。

51c大模型~合集58_大模型_189

对于如何进一步优化显存以支持更大序列长度的训练这一方面,他们的开源代码采用了 Activation Offload 与 Sequence Parallel 技术进行优化。在实现上,他们的 Activation Offload 在计算时将暂未使用的中间激活 offload 到 CPU 内存上,需要时再拷贝到显存中,这样可以让 GPU 显存中尽量只留有当前计算所必须的激活,减少了显存峰值使用量。从开源代码的分析开看,他们采用了通信计算重叠的方式实现 Activation Offload,这将有助于降低设备间拷贝通信对整体性能的影响。

据其开源代码的说明描述,在 A100 GPU 上,采用 Activation Offload 让筑梦 2.0 的 2B 模型单卡序列长度提升了 42%;进一步应用 Sequence Parallel 拓展至 8 卡,最大序列长度提升 8.6 倍,可以满足分钟级视频生成训练的计算需求。 

51c大模型~合集58_大模型_190

从其代码实现上来看,他们的框架设计得较为轻量,使用接口简洁,可以在改动比较小的情况下集成框架内的各项优化,在易用性上具有不错的优势。

51c大模型~合集58_大模型_191