人工智能年代的算力应战

 时间:2023-02-28 22:29:49      开云作者: 开云科技

  最近,OpenAI推出的谈天机器人ChatGPT真可谓是红到发紫。不管是做技能的、做出资的,仍是一般网友,如同不聊几句ChatGPT就显得掉队了。当然,在一片对ChatGPT的追捧傍边,也有一些不同的定见。比方,图灵奖得主、Meta的首席AI科学家杨立昆(YannLe-Cun)就在交际媒体上发帖说:从底层技能看,ChatGPT并没有什么立异。与其说它是一次巨大的技能革新,倒不如说它是一个工程上的创作。

  杨立昆的这番言辞一出,就遭遭到了网友的一片嘲讽,许多人乃至毫不客气地说,作为Meta的AI掌门人,这彻底便是一种“吃不到葡萄说葡萄酸”的狡赖。因为Meta从前在同类产品上的失利阅历,所以面临如此汹汹的言论,杨立昆也是百口莫辩,只能就此噤声,不再对ChatGPT进一步宣布谈论。

  不过,假如咱们仔细回味一下杨立昆的话,就会发现他的话其实对错常有道理的:虽然从表现上看,现在的ChatGPT的确非常冷艳,但从底子上讲,它依然是深度学习技能的一个小拓宽。事实上,与之相似的产品在几年前现已呈现过,所不同的是,ChatGPT在参数数量上要远远多于之前的产品,其运用的练习样本也要大得多。而它杰出的功用,其实在很大程度上仅仅这些数量优势堆集到了必定程度之后发生的突变。

  有意思的是,假如咱们回忆一下深度学习的前史,就会发现这种运用神经网络进行机器学习的思路其实在上世纪50年代就有了,能够称得上是人工智能范畴最陈旧的理论之一。早在1958年,罗森布拉特就从前用这个原理制作了一台机器来辨认字符。可是,在很长的一段时刻内,这个理论却一向无人问津,即便现在被尊为“深度学习之父”的杰弗里·辛顿(GeoffreyHinton)也长时刻遭受孤立和架空。究其原因,当然有来自其时在人工智能范畴占主导地位的“符号主义”的镇压,但更为重要的是,其时的深度学习模型的确表现欠安。

  直到本世纪初,这一切才发生了改动。长时刻蛰伏的深度学习理论总算翻身成为了人工智能的干流,一个个依据这一理论开发的模型如漫山遍野一般呈现。从打败围棋高手的AlphaGo到辨认出几亿种蛋白质结构的AlphaFold,从能够瞬间生成大师画作的Dall-E、StableDiffusion到当今如日中天的ChatGPT,一切的这些在短短的几年之间呈现了。

  那么,到底是什么原因让深度学习在曩昔的几年中扭转了长时刻的颓势,让它得以完结了从异端到干流的转化?我想,最为要害的一点便是算力的打破。

  所谓算力,便是设备处理数据、输出效果的才干,或许简而言之,便是核算的才干。它的基本单位是用“每秒完结的规范操作数量”(standardizedoperationspersecond,简称SOPS)来进行衡量。不过,因为现在的设备功用都非常高,因而在实践顶用SOPS来衡量算力现已变得不那么便利。相比之下,“每秒完结的百万次操作数”(millionoper-ationspersecond,简称MOPS)、“每秒完结的十亿次操作数”(gigaoperationspersecond,简称GOPS),以及“每秒完结的万亿次操作数”(teraoperationspersecond,简称TOPS)等单位变得更为常用。当然,在一些文献中,也会运用某些特定功用的设备在某一时刻段内完结的核算量来作为算力的单位——其逻辑有点相似于物理学顶用到的“马力”。比方,一个比较常用的单位叫做“算力当量”,它就被界说为一台每秒运算千万亿次的核算机完好运转一天所完结的算力总量。

  那么,算力的含义终究安在呢?关于这个问题,阿格拉沃尔(AjayAgrawal)、甘斯(JoshuaGans)和戈德法布(AviGoldfarb)在他们合著的《猜测机器》(PredictionMachines,中文译名为《AI极简经济学》)中,从前提出过一个有启示的观念:算力的本钱将联系到AI模型的“价格”。经济学的原理告知咱们,在给定其他条件的前提下,人们对一种产品的需求量取决于该产品的价格。而关于两种功用附近,具有代替联系的产品来说,具有更低价格的那种产品会在商场上具有更高的竞争力。将这一点运用到人工智能范畴,咱们就能够找到深度学习理论为什么在几十年中都不被待见,却在最近几年中完结迸发的原因。

  虽然深度学习的理论并不算困难,可是为了完结它,要投入的运算量是非常巨大的。在算力低下的年代,算力的单位本钱非常高。在罗森布拉特提出深度学习思维雏形的那个年代,一台核算机的体积简直和一间房子那么大,但即便如此,让它运算一个大一点的矩阵都还需求很长时刻。尽办理论上咱们也能够用深度学习来练习大模型并到达比较好的作用,但这样的本钱显着是没有人能够接受的。而相比之下,符号学派的模型关于核算量的要求要小得多,因而这些模型的相对价格也要比深度学习模型来得低。在这种情况下,深度学习理论当然不会在商场上有竞争力。可是,当算力本钱大幅度下降之后,深度学习模型的相对价格就降了下来,它的竞争力也就提高了。从这个视点看,深度学习在现阶段的成功其实并不是一个朴实的技能事情,在很大程度上,它仍是一个经济事情。

  为了直观起见,咱们无妨以核算数学题来对此进行阐明:假如咱们要进步在单位时刻内核算数学题的功率,有哪些办法能够到达这一意图呢?我想,或许有以下几种办法是可行的:一是找更多人一起来核算。假如一个人一分钟能够算一个题,那么十个人一分钟就能够算十个题。这样,即便每个人的功率没有提高,跟着人数的添加,单位时刻内能够核算的数学题数量也能够成倍添加。二是改善设备。比方,最早时,咱们彻底是依托手算的,功率就很低。假如改用核算器,功率会高一点。假如运用了Excel,功率就或许更高。三是将问题转化,用更好的办法来核算。比方,核算从1加到100,假如依照次序一个个把数字加上去,那么或许要算好久。可是,假如咱们像高斯那样用等差数列求和公式来解这个问题,那么很快就能够核算出效果。

  将以上三个方案对应到提高算力问题,咱们也能够找到相似的三种办法:一是凭借高功用核算和散布式核算;二是完结核算形式上的打破;三是改善算法——虽然严格地说这并不能让算力自身得到提高,可是它却能让相同的算力完结更多的核算,从某个视点看,这就如同让算力添加了相同。

  从底子上讲,高功用核算和散布式核算都是经过一起动用更多的核算资源去完结核算使命,就如同咱们前面讲的,用更多的人手去算数学题相同。所不同的是,前者集合的核算资源一般是集合在本地的,然后者动用的核算资源则或许是涣散在网上的。

  先看高功用核算。高功用核算中,最为重要的核心技能是并行核算(ParallelComputing)。所谓并行核算,是相关于串行核算而言的。在串行核算傍边,核算使命不会被拆分,一个使命的履行会固定占有一块核算资源。而在并行核算中,使命则会被分化并交给多个核算资源进行处理。打个比方,串行核算进程就像是让一个人独立依照次序完结一张试卷,而并行核算则像是把试卷上的题分配给许多人一起作答。显着,这种使命的分化和分配能够是多样的:既能够是把核算使命分给多个设备,让它们协同求解,也能够是把被求解的问题分化成若干个部分,各部分均由一个独立的设备来并行核算。并行核算体系既能够是含有多个处理器的超级核算机,也能够是以某种办法互连的若干立核算机构成的集群。

  从架构上看,并行核算能够分为同构并行核算(homogeneousparallelcomputing)和异构并行核算(heterogeneousparallelcomputing)。望文生义,同构并行核算是把核算使命分配给一系列相同的核算单元;异构并行核算则是把核算使命分配给不同制程架构、不同指令集、不同功用的核算单元。比方,多核CPU的并行运算就归于同构并行,而CPU+GPU的架构就归于异构并行。

  比照于同构并行,异构并行具有许多的优势。用浅显的言语解说,这种优势来自于各种核算单元之间的“术业专攻”,在异构架构之下,不同核算单元之间的优势能够得到更好的互补。正是因为这个原因,异构并行核算正得到越来越多的注重。

  比方,现在越来越多的设备傍边,都选用了将GPU和CPU混搭的架构。为什么要这么做呢?为了阐了解这一点,咱们需求稍微介绍一下CPU和GPU的结构:从总体上看,不管是CPU仍是GPU,都包含运算器(ArithmeticandLogicUnit,简称ALU)、操控单元(ControlUnit,简称CL)、高速缓存器(Cache)和动态随机存取存储器(DRAM)。可是,这些成分在两者中的构成份额却是不同的。

  在CPU傍边,操控单元和存储单元占的份额很大,而作为核算单位的ALU份额则很小,数量也不多;而在GPU傍边则正好相反,它的ALU份额很大,而操控单元和存储单元则只占很小的一个份额。这种结构上的差异就决议了CPU和GPU功用上的差异。CPU在操控和存储的才干上比较强,就能进行比较杂乱的核算,不过它能够一起履行的线程很少。而GPU则相反,许多的核算单位让它能够一起履行多线程的使命,但每一个使命都比较简略。打个比方,CPU是一个通晓数学的博士,微积分、线性代数样样都会,但虽然如此,让他做一万道四则运算也很难;而GPU呢,则是一群只会四则运算的小学生,虽然他们不会微积分和线性代数,但人多力量大,假如一起开干,一万道四则运算分分钟就能搞定。

  因为GPU的以上性质,它开端的用处是作为显卡,因为显卡担任图形和颜色的改换,需求的核算量很大,但每一个核算的杂乱性都不高。当深度学习鼓起之后,人工智能专家们发现GPU其实也很合适用来练习神经网络模型。因为在深度学习模型中,最首要的运算便是矩阵运算和卷积,而这些运算从底子上都能够分化为简略的加法和乘法。这样一来,GPU就找到了新的“作业”空间,开端被广泛地运用于人工智能。可是,GPU并不能独自履行使命,所以它有必要调配上一个CPU,这样的组合就能够完结许多杂乱的使命。这就如同让一个能掌握方向的导师带着许多肯卖力的学生,能够干出许多科研效果相同。正是在这种情况下,异构并行开端成为了高功用核算的盛行架构形式。

  不过,异构架构也是有价值的。相关于同构架构,它关于运用者的编程要求更高。换言之,只有当运用者能够更好地掌握好不同核算单元之间的特点,并进行有针对性的编程,才或许更好地运用好它们。

  除此之外,咱们还有必要认识到,哪怕是凭借异构架构,经过并行运算来提高运算功率的或许也是有限的。依据阿姆达尔定律(Amdahl’sLaw),关于给定的运算量,当并行核算的线程趋向于无量时,体系的加速比会趋向于一个上限,这个上限将是串行运算在总运算中所占份额的倒数。举例来说,假如在一个运算中,串行运算的份额是20%,那么不管咱们在并行运算部分投入多少处理器,引进多少线程,其加速比也不会打破5。这就如同,假如我要写一本关于生成式AI的书,能够将一些材料查找的作业交给研讨帮手。显着,假如我有更多的研讨帮手,写书的进展也会加速。但这种加速不是无限的,因为终究这本书什么时分写完,还要看我自己“码字”的速度。

  选用集合资源的办法来增强算力的另一种思路便是散布式核算。和高功用核算首要集合本地核算单位不同,散布式核算则是将涣散在不同物理区域的核算单位集合起来,去共同完结某一核算使命。比方,刘慈欣在他的小说《球状闪电》中就提到过一个叫做SETI@home的科研方案(注:这个项目是实在存在的),这个方案企图将互联网上搁置的个人核算机算力会集起来处理地理数据,这便是一个典型的散布式核算用例。

  散布式核算的一个典型代表便是咱们现在常常传闻的云核算。关于云核算的界说,现在的说法并不一致。一个比较有代表性的观念来自于美国国家规范和技能研讨所(NIST),依据这种观念,“云核算是一种按运用量付费的形式。这种形式对可装备的IT资源(包含网络、服务器、存储、运用软件、服务)同享池供应了可用的、快捷的、按需供应的网络拜访。在这些IT资源被供应的进程中,只需求投入很少的办理和沟通作业”。

  这个界说很笼统、很学院派,咱们能够用一个浅显的比方来对其进行了解。在传统上,用户首要是经过调用自有的单一IT资源,这就比方每家每户自己发电供自己用;而云核算则如同是(用许多算力设备)建了一个大型的“发电站”,然后将“电力”(IT资源)输出给一切用户来用。

  依据云服务供应者所供应的IT资源的不同,能够发生不同的“云交给形式”(CloudDeliveryModel)。因为IT资源的品种许多,因而对应的“云交给形式”也就许多。在各类新闻报导中,最常见的“云交给形式”有三种:

  榜首种是IaaS,它的全称是“基础设备作为服务”(Infrastructure-as-a-Service)。在这种交给形式下,云服务的供应者供应的首要是存储、硬件、服务器和网络等基础设备。

  第二种是PaaS,它的全称是“渠道作为服务”(Platform-as-a-Service)。在这种交给形式下,云服务的供应者需求供应的资源更多,以便为运用者供应一个“安排妥当可用”(ready-to-use)的核算渠道,以满意他们规划、开发、测验和布置运用程序的需求。

  第三种是SaaS,也便是“软件作为服务”(Software-as-a-Service)。在这种交给形式下,云服务供应者将制品的软件作为产品来供应给用户,供其运用。

  有了以上不同的云交给形式,用户就能够依据自己的需求来挑选相应的IT资源。比方,假如元世界的用户需求更多的算力或存储,而本地的机器无法满意,那么就能够经过从云端来获取“外援”。一个云端GPU不行,那就再来几个,按需取用,丰俭由人,既便利,又不至于发生糟蹋。

  需求指出的是,虽然从理论上看云核算能够很好地承当巨大运算和存储需求,但其缺点也是很显着的。比较重要的一点是,在履行云核算时,有许多的数据要在本地和云端之间进行交流,这或许会形成显着的推迟。尤其是数据吞吐量过大时,这种推迟就愈加严峻。关于用户来说,这或许会对其运用体会发生非常负面的作用。

  那么怎样才干战胜这个问题呢?一个直观的思路便是,在接近用户或设备一侧安放一个能够进行核算、存储和传输的渠道。这个渠道一方面能够在终端和云端之间承当起一个中介的作用,另一方面则能够对终端的各种要求作出实时的回应。这个思维,便是所谓的边际核算。因为边际渠道接近用户,因而其与用户的数据交流会愈加及时,推迟问题就能够得到比较好的破解。

  不管是高功用核算仍是散布式核算,其本质都是在运算资源的分配上下功夫。但正如咱们前面看到的,经过这种思路来提高算力是有许多妨碍的。因而,现在许多人期望从核算办法自身来进行打破,然后完结更高的核算功率。其间,量子核算便是最有代表性的比方。

  咱们知道,经典核算的基本单位是比特,比特的状况要么是0,要么是1,因而经典核算机中的一切问题都能够分化为对0和1的操作。一个比特的存储单元只能存储一个0或许一个1。而量子核算的基本单位则是量子比特,它的状况则能够是一个多维的向量,向量的每一个维度都能够表明一个状况。这样一来,量子存储器就比经典的存储器有很大的优势。

  考虑一个有 N物理比特的存储器,假如它是经典存储器,那么它只能存储2的N次方个或许数据傍边的任一个;而假如它是量子存储器,那么它就能够一起存储2的N次方个数据。跟着 N的添加,量子存储器相关于经典存储器的存储才干就会呈现指数级添加。例如,一个250量子比特的存储器或许存储的数就能够到达2的250次方个,比现有已知的世界中悉数原子数目还要多。

  在进行量子核算时,数学操作能够一起对存储器中悉数的数据进行。这样一来,量子核算机在施行一次的运算中能够一起对2的N次方个输入数进行数学运算。其作用相当于经典核算机要重复施行2的N次方次操作,或许选用2的N次方个不同处理器实施并行操作。依托这样的设定,就能够大幅度节省核算次数。

  为了协助咱们了解,咱们能够打一个并不是太恰当的比方:玩过动作游戏的朋友大多知道,在游戏中,咱们扮演的英豪常常能够运用许多招数,有些招数只能是针对单一目标输出的;而另一些招数则能够针对整体敌人输出。这儿,前一类的单体输出招数就相当于经典核算,然后一类的集体输出招数就相当于量子核算。咱们知道,在面临许多小怪进犯的时分,一次集体输出发生的作用能够顶得上许屡次单体输出的招数。相同的道理,在一些特定情况下,量子核算能够比经典核算完结非常大的功率提高。

  举例来说,大数因式分化在破解揭露密钥加密的进程中有非常重要的价值。假如用核算机,选用现在常用的Shor算法来对数N进行因式分化,其运算的时刻将会跟着N对应的二进制数的长度呈现指数级添加。1994年时,曾有人安排全球的1600个作业站对一个二进制长度为129的数字进行了因式分化。这项作业足足用了8个月才完结。可是,假如相同的问题换成用量子核算来处理,那么整个问题就能够在1秒之内处理。量子核算的威力由此可见一斑。

  可是,在看到量子核算威力的一起,咱们也有必要认识到,至少到现在为止,量子核算的威力还只能表现对少量几种特别问题的处理上,其通用性还比较弱。事实上,现在见诸报导的各种量子核算机也都只能履行专门算法,而不能履行通用核算。比方,谷歌和NASA联合开发的D-Wave就只能履行量子退火(QuantumAnnealing)算法,而我国研制的光量子核算机“九章”则是专门被用来研讨“高斯玻色取样”问题的。虽然它们在各自的专业范畴表现非常优异,但都还不能用来处理通用问题。这就如同游戏中的集体进犯大招,虽然进犯规划广,可是对每个个别的杀伤力都比较弱。因而,假如遇上大群的小怪,集体进犯当然凶猛,但假如遇上防护高、血条厚的Boss,这种进犯就派不上用处了。

  从这个视点看,假如咱们期望让量子核算大发威风,就有必要先找出合适量子核算运用的问题和场景,然后再找到相应的算法。与此一起,咱们也有必要认识到,虽然量子核算的研制和探究非常重要,可是它和对其他技能途径的探究之间更应该是互补,而不是代替的联系。

  假如说,经过高功用核算、散布式核算,以及量子核算等手法来提高算力是“开源”,那么经过改善算法来节省算力便是“节省”。从提高核算功率、削减因核算而发生的经济、环境本钱而言,开源和节省在某种程度上具有平等重要的价值。

  在ChatGPT爆火之后,大模型开端越来越遭到人们的喜爱。因为在平等条件下,模型的参数越多、练习的数据越大,它的表现就越好,因而为了寻求模型的更好表现,现在的模型正在变得越来越大。咱们知道,现在的ChatGPT首要是在GPT-3.5的基础上练习的。在它呈现之前,GPT共阅历了三代。GPT-1的参数大约为1.17亿个,预练习数据为5GB,从现在看来并不算多;到了GPT-2,参数量就添加到了15亿个,预练习数据也到达了40GB;而到了GPT-3,参数量则现已敏捷胀大到了骇人的1750亿个,预练习数据也到达了45TB。为了练习GPT-3,单次本钱就需求140万美元。虽然OpenAI并没有发布GPT-3.5的具体情况,但能够幻想,它的参数量和预练习数据上都会比GPT-3更高。为了练习这个模型,微软专门组建了一个由1万个V100GPU组成的高功用网络集群,总算力耗费到达了3640“算力当量”——也便是说,假如用一台每秒核算一千万亿次的核算机来练习这个模型,那么大约需求近十年才干完结这个使命。

  假如任由这种“一代更比一代大”的趋势继续下去,那么在未来几年,对算力的需求将会呈现爆炸性的添加。一项最新的研讨估量,在5年之后,AI模型需求的算力或许会是现在的100万倍。很显着,由此发生的经济和环境本钱将会是非常惊人的。

  令人欣慰的是,现在现已有不少研讨者期望改善算法、优化模型来削减对算力的需求,而且现已获得了必定的效果。比方,就在本年1月3日,来自奥有利地势科学技能研讨所 (ISTA)的研讨人员埃利亚斯·弗朗塔(EliasFrantar)和丹·阿里斯特尔(DanAlistarh)协作进行了一项研讨,初次针对 100至 1000亿参数的模型规划,提出了精确的单次剪枝办法SparseGPT。SparseGPT能够将GPT系列模型单次剪枝到 50%的稀少性,而无需任何从头练习。以现在最大的揭露可用的GPT-175B模型为例,只需求运用单个GPU在几个小时内就能完结这种剪枝。不仅如此,SparseGPT还很精确,能将精度丢失降到最小。在进行了相似的修剪之后,这些大模型在练习时所需求的核算量就会大幅削减,其对算力的需求也就会相应下降。

  跟着ChatGPT引领了新一轮的人工智能热潮,商场上对算力的需求也会呈现爆炸性的添加。在这种情况下,为了有力支撑人工智能的开展,就有必要要经过方针的手法引导算力供应的大幅度添加。而要完结这一点,以下几方面的作业或许是最为值得注重的。

  榜首,应当加速对算力基础设备的建造和布局,提高对全社会算力需求的支撑。如前所述,从现在看,散布式核算,尤其是其间的云核算是提高算力的一个有用之举。而要让云核算的效应充分发挥,就需求大力建造各类算力基础设备。唯有如此,才干够让人们随时随地都能够直接经过网络获得所需的算力资源。

  这儿需求指出的是,在布局算力基础设备的时分,应当慎重考虑它们的地域和空间散布,尽或许下降算力的本钱。咱们知道,不同的区域的土地、水、电力等要素的价格是不同的,这决议了在不同区域出产相同的算力所需求的本钱也不尽相同。因而,在建造算力基础设备时,有必要统筹大局,尽或许优化本钱。需求指出的是,我国正在推动的“东数西算”工程便是这个思路的一个别现。因为我国东部各种资源的运用本钱都要高于西部,因而在西部区域树立算力设备,就会大幅下降算力的供应本钱,然后在全国规划内到达更优的装备功率。

  第二,应当加强与算力相关的硬件技能及其运用的研制,为添加算力供应供应支撑。与算力相关的硬件技能既包含依据经典核算的各种硬件,如芯片、高功用核算机等,也包含逾越经典核算理论,依据新核算理论开发的硬件,如量子核算机等。从供应的视点看,这些硬件是底子,它们的功用直接联系到算力供应的或许性边界。因而,有必要用方针活跃促进这些硬件的攻关和研制。尤其是关于一些“卡脖子”的项目,应当首要加以打破。

  这儿需求指出的是,在进行技能研制的一起,也应该活跃探究技能的运用。例如,咱们现在现已在量子核算范畴获得了一些效果,可是因为用例的缺少,这些效果并没有能够转化为实际的运用。从这个含义上讲,咱们也需求加强对技能运用的研讨。假如能够把一些核算问题转化成量子核算问题,就能够充分发挥量子核算机的优势,完结核算功率的大幅提高。

  第三,应当对算法、架构等软件层面的要素进行优化,在确保AI产品功用的一起,尽或许削减对算力的依靠。从下降AI核算本钱的视点看,下降模型的算力需求和提高算力具有平等重要的含义。因而,在用方针的手法促进算力供应的一起,也应当以相同的力度对算法、架构和模型的优化予以平等的鼓舞。

  考虑到相似的效果具有非常巨大的社会正外部性,因而用专利来维护它们并不是最合适的。因而,能够活跃鼓舞对获得相似成功的人员和单位给予直接的奖赏,并一起鼓舞他们将这些效果向全社会开源;也能够考虑由政府出头,对相似的模型产品进行投标收购。假如有个人和单位能够依照要求供应相应的效果,政府就付出相应的费用,并对效果进行开源。经过这些行动,就能够很好地鼓舞人们活跃投身到改善模型、节省算力的工作中,也能够在有效果产出时,让全社会及时享遭到这些效果。

  总而言之,在人工智能日新月异的年代,算力或许是决议人工智能开展上限的一个要害因素。唯有在算力问题上完结打破,人工智能的开展才或许有底子保证。