博客其实没有透露太多的信息,我还去看了一下Jeff Dean在Monterey的演讲:
思路其实是很清晰的。稀疏激活的大模型(GShard、Switch Transformer等等)基本立足点是:完全可以有一个超大容量的模型,但是针对每个样本只使用其中的一小部分参数,即在前向计算过程中用到其中的一条path,这样不显著增加计算量的前提下可以用到更“聪明”的模型。当然这个简单的思路背后有很多技术挑战,之前Google为代表的各种实验室都有过探索了。
这种思路稍微拓展一下,稀疏激活是否也可以从样本维度,拓展到任务、模态上去?即每一个任务/模态也是从网络中选取特定的path组成计算图:Google给出的猜想是,也许可以。人类在完成任务/学习新任务的时候,有很多经验/知识是跨模态、跨任务共享的,这也是Pathways的一个selling point。
不过博客和演讲不同于技术报告,毕竟没有给出什么细节,不过可以期待一下,万一做出来了呢?
最后扔几张TED talk的截图:
概括下来有3点:
1,Today's AI models are typically trained to do only one thing. Pathways will enable us to train a single model to do thousands or millions of things.
2,Today's models mostly focus on one sense. Pathways will enable multiple senses.
3,Today's models are dense and inefficient. Pathways will make them sparse and efficient.
也就是“多任务,多通道,稀疏激活”,可以理解成他认为单独解决视觉,听觉,语言单独一个通路的问题已经差不多了,重心要向向真正的、完整的大脑的功能进发。从模型架构上看,落脚点是Mixture of experts, switch transformer,以及由此引发的系统架构问题。
这些观点在业界也讨论很多了,可能不会让人感到新鲜。不过,Jeff Dean和谷歌是老早就是这么想的了,前几年“大模型”还不是一个热点,但我坚信这个会发生,就很留意世界上其他同行是怎么看这个问题的,很早的时候就看到Jeff Dean在slides 里讨论模型变很大,以及稀疏激活的问题(应该是2018年甚至更早,原始资料不太好找到)。
所以,这篇博客像是一种总结,没什么新意,但实际上是再次强化他很久以前的判断。
很多人说是正确的废话,当然不是了。。。凡事都要人带头的,深度学习这领域每天都有无数个concept被各路人马讨论无数遍。可以说随便拉出一个话题来,都不新,都被谈论过,这没什么好奇怪的。但如果有人说这个是正确的方向,要投入资源搞,而且这个人是Jeff Dean,那性质就不一样了。
多模态,多任务,这都无甚出奇的,用现有的基础设施可以无痛解决。多模态方兴未艾,多任务已经属于业界标配了,很成熟了。
真正的革命是稀疏计算。各种技术和现象都表明,神经网络的运作是稀疏的。
宏观的看,比如多任务和多模态学习,这属于最高层次的稀疏;
再往下走,那就是类似于CapsuleNet这个级别的稀疏,由小单元组成的稀疏运算通路;
再往下,就是注意力机制,注意力机制让神经网络把注意力集中在稀疏的信息上。
再往下,更微观的,那就是通道甚至权重的稀疏连接。比如认为神经网络的微观结构是一堆Subnetwork,比如Relu本身其实就意味着产生稀疏性,比如神经网络train完了出现的无数零权重和空连接,几乎全为零的特征图,这些都是肉眼可见的稀疏。
但我们的基础设施,根本没有利用上这些稀疏的连接,只有在进行网络压缩的时候,才会利用一下稀疏性,一压缩发现压掉50%都无伤大雅。这还没有利用权重的稀疏性呢,要是都利用上了,还能再压缩。而且这还是平均过的稀疏性,要知道在每一个输入数据的inference中,都会产生不一样的稀疏性,可以这么说,每一个输入样本真正利用上的权重和需要的计算量其实是很少很少的,只是限于我们的基础设施,无法利用这种微观的稀疏性而已。
比如神经网络做自动驾驶的语义分割,那大片的蓝天白云,有必要让这部分像素完整的跑完全程吗?其实在很早的阶段就被Relu掉了,这部分跑完整个神经网络带来的计算量全部都是浪费的,而且往往蓝天白云占到了图像的三分之一甚至二分之一那么多,光这一项就能省30%计算量。
除此,还有一个极少被触及,但前途无限的东西:脉冲神经网络
这个回答我很赞同:
脉冲神经网络可以说是对稀疏性的极致利用,而且不仅是空间的稀疏性,还有时间的稀疏性。
人脑的运作就是这样的,人对环境形成了认知之后,就不会集中精力去感知环境了,只需要利用已有的感知结果。绝大部分的精力都集中在变化的东西上,效率是很高的。最近几年出来的Event-Camera,就是这一理念的绝佳例子,一般的相机能耗是1W,事件相机能耗才1mW,只有普通相机的千分之一。
大家可以看看苏黎世Scaramuzza教授的实验室做的一个事件相机+脉冲神经网络可视化,便于理解,他们是专攻这方面的:
https://www.zhihu.com/video/1438395734147788800上半部分是脉冲神经网络的结构图,下面的时间线和信号输入。其实和普通神经网络区别不大,就是稀疏激活而已。脉冲神经网络还有二值激活的特性,可能精度差点,但可以利用这个思想改造现有结构嘛。
如果神经网络的基础设施能支持稀疏运算,搭配上脉冲神经网络,这意味着我们只需要在时间线上对感兴趣的内容加以注意。同时对某一感兴趣时间点,只需要对输入数据的感兴趣部分加以注意。完了对这一小部分感兴趣内容,神经网络也只有一部分权重被利用起来对其进行感知。
这种时空的稀疏加感知的稀疏三管齐下,带来的能耗降低不说有事件相机千分之一那么狠,两个数量级还是可以期待的。
说白了,各个层面的稀疏性是摆在那里肉眼可见的,缺的就是个基础设施。一旦Jeff Dean能提供这个东西,带来的变化绝对是翻天覆地的。现在这方面的研究没有爆发,只是缺乏基础设施而已,搞了也用不上,自然没人搞。一旦基础设施到位,研究必然会井喷,同时还会带来硬件,芯片,整个算法流程的更新,真是非常期待。
感觉全是软件的概念,我觉得是不是也可以硬件reconfig,也就是FPGA 要再次兴起?
也许。。。
更新:
对于Jeaf Dean的观点,回去和公司的几位算法大佬又探讨了一下,总结一下观点:
先简单的谈谈对Pathways的几个关键点的看法。
Pathways一文,三个要点,其实是两个方面:
关于第一方面,多任务,是智能算法一直在发展的方向,多任务模型问题在于任务到底有多么多?泛泛的说多任务,其实需要看这些不同的问题之间,内部是否具有通用的机理,多任务的模型对各个任务都有增益;多模态,其实也是智能算法一直在发展的方向,到底融合哪些信息,其实是一个按应用分场景的问题。我们认为,在多感官信息融合,类似拟人机器人等场合,为了丰富信息来源,本就是必然的;如何多信息融合,不一定有一个通用的最优模式。
总之,关于第一方面的两个点,如果泛泛的一股脑的多任务多模态,效果未必就好,甚至可能过于理想主义。关键要看是否必要:智能模型的部署,至少要粗略的分两种场景,数据中心的巨无霸,和边缘终端等专一小模型,在计算力和能耗上不得不考虑。 如果是面向更强或者更通用的智能的研究,怎么探索都不为过。 只是多任务和多模态,对所谓下一代AI架构来说,个人感觉不是最关键的。
关于第二方面,文章提到的GShard和Switch Transformer等代表的稀疏激活/动态路由等机制,确实会对AI平台的架构产生影响。
我们认为除了Jeaf Dean提到的几个点外,下面几个方向也会深刻影响AI架构未来,值得关注:
1)当前AI计算模式和理想模式的差距;
AI算法最基本的两部分,表达和优化。前者NeruralNetwork/DeepLearning对平台来说是算子的DAG;后者BackPropagation对平台来说是计算梯度然后逐层调整权重。对于后者,从计算流程上看,形象的说,就是ABCDE层前馈,然后EDCBA反馈,一轮又一轮。每一轮,输出对标签的“全局”错误信号,本质上要的逐层传播到最前面的层。
对比人脑,很难找到这种全局错误信号的一轮次一轮次的同步的传播,做到基于物理邻接的层(节点)的错误信息进行学习,应该才是更理想的表达和学习的机制。其中Local Learning是对该问题的研究,曾经系统的跟踪了这些方向:Predictive Coding,Proxy Objective,Feedback Connection,Weight Constraint,Synthetic Gradient,Target Propagation,NGRAD GlobalErrorVector DistributionalCodeDopamine,Biological Plausibility,Equilibrium Propagation,Extra X-Learning。
按照不同的"Local"思路,进一步展开看:
Random Feedback Weights
我们需要从三个维度权衡出一条好的路线:1) 能否规模化学习深度网络处理复杂大任务,2) 是否具有局部学习之外的其他学习能力(在线,增量,持续),3) 是否具有硬件友好性(哪怕是全新的可行的底层硬件结构)。
可惜到目前为止,这些方向的研究进展,都还没有达到期望的效果。
回到我们讨论的AI下一代架构的话题上来,Local Learning/Non-BP/Gradient-Free的突破,应该是对架构影响最大的,直接对DAG和BP的冲击。
2)类脑等神经科学发展和相关机制/思想被引入智能算法的影响;
在Bio-Brain和Brain-like的神经计算中,我们觉得这几个关键特征,对AI架构影响很大,现在的AI平台在计算流程中并没有很好的支撑:Asynchronized,Full-Parallel,Pipeline Inference,Sparse Activation,Dynamic Routing。
以异步、高并行度来说,每一个神经元都可以看成一个带有独立内存的和独立芯片的完整的计算单元,甚至更小的神经突触都可以看成异步并行的单元。
以Pipeline Inference来说,人脑是不间断的在做Inference,而且Learning/Train和Inference是紧密的结合在一起的,现在即使是Online Learning也是相对明确可区分的Train和Infer。
当然,另外一个大的方向Spike NN如果能够在CV,NLP等主要的问题上效果超越,AI的平台架构也将是大的改变甚至重启。
Pathways提到的关键点中,包含了Sparse Activation,Dynamic Routing;而Multitask-SingleModel,MultiModeling我们任务对AI架构冲击不大。
3)AI算法发展可能引出的架构需求;
在AI算法发展中,如Reservoir Computing,那种Dense的Topology和Recurrent的计算流,如果大型的网络,会对当前的AI平台有一定挑战。 当前AI算法能较好的解决很多类型的问题如CV,NLP的,特别Transformer为主的巨无霸模型大有一招鲜吃遍天的感觉;但还有一些问题求解极其糟糕,比如Math-Problem(参见google,facebook等公开的一些数据集和当前AI解决的进展),在这些问题上,堆规模几乎无用甚至还有反作用,我们分析,可能Modularity Compositional-Generalization,Neural Memory,High-Integrated Complex Reinforcement Learning,Discrete/Non-Differentiable Algorithms等会是潜在的突破方向;这些方向对AI下一代的架构,可能会有冲击,虽然还不太明朗。
4)AI重量级应用方向的计算的特点;
笼统的说,相对通用的问题如CV,NLP的AI的算法发展进入了一个平缓期,我们认为AI+Science,诸如生物、材料、数字艺术等领域,会有更多的人力物力会投入进来。
这些方向,我们已经感受到一些对AI下一代架构的冲击或诉求:
1)在生物制药、物理材料、求解器等科学问题上,有一类共同的问题:Size Generalization或Scale Generalization。如果我们叫传统的泛化为Instance Generalization,即我们训练和推理的输出结构一样,需要的泛化能力是对新样本的正确预测。而Size/Scale泛化,则是在一个小体系上训练,需要在大若干倍的体系上预测。在Protein/AlphaFold,RL|GNN-TSP,Material等场景已经存在。这既需要算法支持,对平台也有一定的冲击,比如计算图动态能力,超大规模数据结构(不一定稀疏)的支持。
2)同样,在科学计算领域,广义物理世界的很多问题,是含有时间因素的,即Time Dependent。无论是原子,分子,到蛋白质,到细胞。含时对模型和平台都有新的挑战。
综上,我们分析了包含Pathways一文三个关键点中真正对AI Architecture有影响的Sparse-Activation/Dynamic-Routing,也分析了其他一些有潜在大冲击的方向,特别是Local Learning和AI Science Computing。 当然最近期看,Sparse-Activation/Dynamic-Routing是已经最急迫的需要,大模型上由平台原生支持:类似Dynamic-Dispatch这种面向用户的API/算子,和内部在节点内和节点间的Sparse Activation来低能耗大模型计算。
瞎扯一下:
1、试图通过多模/多通道/动态路由/稀疏激活来模拟人脑,但是没有描述大脑中很重要的一个特征-局部学习,所谓局部学习指全局可以分为许多module,每个module可以做局部BP,module间可以灵活组合;Pathways总的来说还是使用全局BP,是个全局学习。
2、感觉没有和DeepMind进行沟通啊,像AI+科学计算这种范式没有描述,比如Alphafold2,通过传统的方程或者传统的实验方式得到一个小的数据集,然后通过神经网络训练从小体系扩展到大体系。
这个想法和实施在Google内部是比较早以前就在做了,在前几年的学术会议和一些技术沙龙里其实已经能听到相关的信息。在 @谭旭 的回答里也把学术研究中公开的线索也梳理了一下。仔细去挖掘的话,技术进步的过程总是存在草蛇灰线的联系。
在一些非Google家的研究工作里也有一些相近的insights,会观察到dense模型训练过程中存在大量的神经元处于conditional activated的状态,比如建模角度的这个工作以及硬件架构设计leverage ReLU sparsity的一些工作(我映象中Cerebras、NV和寒武纪都有过相关的工作)。
能把这个想法推进到技术趋势的角度,确实是G家和Jeff Dean对行业的贡献了。因为除了基于实验现象的观察和insights以外(这个学术界和工业界都会有所发现),还需要一些要素
从一个技术趋势的提出,来推敲一下背后的深层次的原因和逻辑,可能是对从业人员及公司更有帮助的事情吧。技术趋势不断在变,是一朝风月,而背后支撑技术趋势演化的第一性原理,是万古长空。当然,工作总是辛苦的,现实总是骨感的,也不可能都是纯粹的技术理想化的状态,所以适度地也多一点阿Q式的自嘲自乐精神,坦然拥抱可能的技术彩票效应也是有必要的:)。
通用大模型+多任务+稀疏共享(路由),等新风口的同学可以抓紧上车了
顺便推荐一篇我们之前的工作:Learning Sparse Sharing Architectures for Multiple Tasks, https://arxiv.org/abs/1911.05034