照片源自:图虫创意
近期,OpenAI推出的聊天设备人ChatGPT真可谓是红到发紫。无论是做技术的、做投资的,还是普通网友,好似不聊几句ChatGPT就显出落伍了。当然,在一片对ChatGPT的追捧其中,亦有有些区别的意见。例如,图灵奖得主、Meta的首席AI专家杨立昆(Yann LeCun)就在社交媒介上发帖说:从底层技术看,ChatGPT并无什么创新。与其说它是一次巨大的技术革新,倒不如说它是一个工程上的杰作。
杨立昆的这番言论一出,就遭遇到了网友的一片嘲讽,非常多人乃至毫不客气地说,做为Meta的AI掌门人,这完全便是一种“吃不到葡萄说葡萄酸”的狡辩。因为Meta先前在同类制品上的失败经历,因此面对如此汹汹的舆论,杨立昆亦是百口莫辩,只能就此噤声,再也不对ChatGPT进一步发布评论。
不外,倘若咱们认真回味一下杨立昆的话,就会发掘他的话其实是非常有道理的:虽然从表现上看,此刻的ChatGPT确实非常惊艳,但从基本上讲,它依然是深度学习技术的一个小拓展。事实上,与之类似的制品在几年前已经显现过,所区别的是,ChatGPT在参数数量上要远远多于之前的制品,其运用的训练样本亦要大得多。而它卓越的性能,其实在很大程度上只是这些数量优良累积到了必定程度之后产生的质变。
有意思的是,倘若咱们回顾一下深度学习的历史,就会发掘这种利用神经网络进行设备学习的思路其实在上世纪50年代就有了,能够叫作得上是人工智能行业最古老的理论之一。早在1958年,罗森布拉特就曾经用这个原理制造了一台设备来识别字符。然而,在很长的一段时间内,这个理论却始终无人问津,即使此刻被尊为“深度学习之父”的杰弗里·辛顿(Geoffrey Hinton)亦长时间遭受孤立和排挤。究其原由,固然有来自当时在人工智能行业占主导地位的“符号主义”的打压,但更为重要的是,当时的深度学习模型确实表现不良。
直到本世纪初,这一切才出现了改变。长时间蛰伏的深度学习理论最终翻身作为了人工智能的主流,一个个基于这一理论研发的模型如雨后春笋通常显现。从打败围棋能手的AlphaGo到识别出几亿种蛋白质结构的AlphaFold,从能够瞬间生成大师画作的Dall-E、Stable Diffusion到当今如日中天的ChatGPT,所有的这些在短短的几年之间涌现了。
那样,到底是什么原由让深度学习在过去的几年中扭转了长时间的颓势,让它得以完成为了从异端到主流的转换?我想,最为关键的一点便是算力的突破。
算力及其经济效应
所说算力,便是设备处理数据、输出结果的能力,或简而言之,便是计算的能力。它的基本单位是用“每秒完成的标准操作数量”(standardized operations per second,简叫作SOPS)来进行衡量。不外,因为此刻的设备性能都非常高,因而在实践中用SOPS来衡量算力已然变得不那样方便。相比之下,“每秒完成的百万次操作数”(million operations per second,简叫作MOPS)、“每秒完成的十亿次操作数”(giga operations per second,简叫作GOPS),以及“每秒完成的万亿次操作数”(tera operations per second,简叫作TOPS)等单位变得更为常用。当然,在有些文献中,亦会运用某些特定性能的设备在某一时间段内完成的计算量来做为算力的单位——其规律有点类似于理学学中用到的“马力”。例如,一个比较常用的单位叫做“算力当量”,它就被定义为一台每秒运算千万亿次的计算机完整运行一天所实现的算力总量。
那样,算力的道理到底安在呢?关于这个问题,阿格拉沃尔(Ajay Agrawal)、甘斯(Joshua Gans)和戈德法布(Avi Goldfarb)在她们合著的《预测设备》(Prediction Machines,中文译名为《AI极简经济学》)中,曾经提出过一个有启发的观点:算力的成本将关系到AI模型的“价格”。经济学的原理告诉咱们,在给定其他要求的前提下,人们对一种商品的需要量取决于该商品的价格。而针对两种性能相近,拥有替代关系的商品来讲,拥有更低价格的那种商品会在市场上拥有更高的竞争力。将这一点应用到人工智能行业,咱们就能够找到深度学习理论为何在几十年中都不被待见,却在近期几年中实现爆发的原由。
虽然深度学习的理论并不算困难,然则为了实现它,要投入的运算量是非常巨大的。在算力低下的时代,算力的单位成本非常高。在罗森布拉特提出深度学习思想雏形的那个年代,一台计算机的体积几乎和一间房子那样大,但即便如此,让它运算一个大一点的矩阵都还需要很长期。虽然理论上咱们亦能够用深度学习来训练大模型并达到比较好的效果,但这般的成本显然是无人能够承受的。而相比之下,符号学派的模型针对计算量的需求要小得多,因此呢这些模型的相对价格亦要比深度学习模型来得低。在这种状况下,深度学习理论当然不会在市场上有竞争力。然则,当算力成本大幅度降低之后,深度学习模型的相对价格就降了下来,它的竞争力亦就提高了。从这个方向看,深度学习在现周期的胜利其实并不是一个纯粹的技术事件,在很大程度上,它还是一个经济事件。
改进算力的办法
那样,决定算力的原因有那些呢?
为了直观起见,咱们不妨以计算数学题来对此进行说明:倘若咱们要加强在单位时间内计算数学题的效率,有那些办法能够达到这一目的呢?我想,可能有以下几种办法是可行的:一是找更加多人一块来计算。倘若一个人一分钟能够算一个题,那样十个人一分钟就能够算十个题。这般,即使每一个人的效率无提高,随着人数的增多,单位时间内能够计算的数学题数量亦能够成倍增多。二是改进设备。例如,最早时,咱们完全是依靠手算的,效率就很低。倘若改用计算器,效率会高一点。倘若运用了Excel,效率就可能更高。三是将问题转化,用更好的办法来计算。例如,计算从1加到100,倘若根据次序一个个把数字加上去,那样可能要算很久。然则,倘若咱们像高斯那样用等差数列求和公式来解这个问题,那样火速就能够计算出结果。
将以上三个方法对应到提高算力问题,咱们亦能够找到类似的三种办法:一是借助高性能计算和分布式计算;二是实现计算模式上的突破;三是改进算法——尽管严格地说这并不能让算力本身得到提高,然则它却能让一样的算力完成更加多的计算,从某个方向看,这就好似让算力增多了同样。
1、高性能计算和分布式计算
从基本上讲,高性能计算和分布式计算都是经过同期动用更加多的计算资源去完成计算任务,就好似咱们前面讲的,用更加多的人手去算数学题同样。所区别的是,前者聚集的计算资源通常是聚集在本地的,而后者动用的计算资源则可能是分散在网上的。
(1)高性能计算
先看高性能计算。高性能计算中,最为重要的核心技术是并行计算(Parallel Computing)。所说并行计算,是相针对串行计算而言的。在串行计算其中,计算任务不会被拆分,一个任务的执行会固定占有一起计算资源。而在并行计算中,任务则会被分解并交给多个计算资源进行处理。打个比方,串行计算过程就像是让一个人独立根据次序完成一张试卷,而并行计算则像是把试卷上的题分配给非常多人同期作答。显然,这种任务的分解和分配能够是多样的:既能够是把计算任务分给多个设备,让它们协同求解,亦能够是把被求解的问题分解成若干个部分,各部分均由一个独立的设备来并行计算。并行计算系统既能够是含有多个处理器的超级计算机,亦能够是以某种方式互连的若干台独立计算公司成的集群。
从架构上看,并行计算能够分为同构并行计算(homogeneous parallel computing)和异构并行计算(heterogeneous parallel computing)。顾名思义,同构并行计算是把计算任务分配给一系列相同的计算单元;异构并行计算则是把计算任务分配给区别制程架构、区别指令集、区别功能的计算单元。例如,多核CPU的并行运算就属于同构并行,而CPU+GPU的架构就属于异构并行。
对比于同构并行,异构并行拥有非常多的优良。用通俗的语言解释,这种优良来自于各样计算单元之间的“术业专攻”,在异构架构之下,区别计算单元之间的优良能够得到更好的互补。正是因为这个原由,异构并行计算正得到越来越多的注重。
例如,此刻越来越多的设备其中,都采用了将GPU和CPU混搭的架构。为何要这么做呢?为了说明白这一点,咱们需要略微介绍一下CPU和GPU的结构:从总体上看,无论是CPU还是GPU,都包含运算器(Arithmetic and Logic Unit,简叫作ALU)、掌控单元(Control Unit,简叫作CL)、高速缓存器(Cache)和动态随机存取存储器(DRAM)。然则,这些成份在两者中的形成比例却是区别的。
在CPU其中,掌控单元和存储单元占的比例很大,而做为计算单位的ALU比例则很小,数量亦不多;而在GPU其中则正好相反,它的ALU比例很大,而掌控单元和存储单元则只占很小的一个比例。这种结构上的差异就决定了CPU和GPU功能上的区别。CPU在掌控和存储的能力上比较强,就能进行比较繁杂的计算,不外它能够同期执行的线程很少。而GPU则相反,海量的计算单位让它能够同时执行多线程的任务,但每一个任务都比较简单。打个比喻,CPU是一个精通数学的博士,微积分、线性代数样样都会,但尽管如此,让他做一万道四则运算亦很难;而GPU呢,则是一群只会四则运算的小学生,虽然她们不会微积分和线性代数,但人多力量大,倘若一块开干,一万道四则运算分分钟就能搞定。
因为GPU的以上性质,它最初的用途是做为显卡,由于显卡负责图形和色彩的变换,需要的计算量很大,但每一个计算的繁杂性都不高。当深度学习兴起之后,人工智能专家们发掘GPU其实亦很适合用来训练神经网络模型。由于在深度学习模型中,最重点的运算便是矩阵运算和卷积,而这些运算从基本上都能够分解为简单的加法和乘法。这般一来,GPU就找到了新的“就业”空间,起始被广泛地应用于人工智能。然则,GPU并不可单独执行任务,因此它必须搭配上一个CPU,这般的组合就能够完成非常多繁杂的任务。这就好似让一个能把握方向的导师带着非常多肯卖力的学生,能够干出非常多研究成果同样。正是在这种状况下,异构并行起始作为了高性能计算的流行架构模式。
不外,异构架构亦是有代价的。相针对同构架构,它针对应用者的编程需求更高。换言之,仅有当运用者能够更好地把握好区别计算单元之间的属性,并进行有针对性的编程,才可能更好地利用好它们。
除此之外,咱们还必须认识到,哪怕是借助异构架构,经过并行运算来提高运算效率的可能亦是有限的。按照阿姆达尔定律(Amdahl’s Law),针对给定的运算量,当并行计算的线程趋向于无穷时,系统的加速比会趋向于一个上限,这个上限将是串行运算在总运算中所占比例的倒数。举例来讲,倘若在一个运算中,串行运算的比例是20%,那样无论咱们在并行运算部分投入多少处理器,引入多少线程,其加速比亦不会突破5。这就好似,倘若我要写一本关于生成式AI的书,能够将有些资料查询的工作交给科研助手。显然,倘若我有更加多的科研助手,写书的进度亦会加快。但这种加快不是无限的,由于最后这本书什么时候写完,还要看我自己“码字”的速度。
(2)分布式计算
采用聚集资源的方式来加强算力的另一种思路便是分布式计算。和高性能计算重点聚集本地计算单位区别,分布式计算则是将分散在不同理学区域的计算单位聚集起来,去一起完成某一计算任务。例如,刘慈欣在他的小说《球状闪电》中就说到过一个叫做SETI@home的研究计划(注:这个项目是真实存在的),这个计划试图将互联网上闲置的个人计算机算力集中起来处理天文数据,这便是一个典型的分布式计算用例。
分布式计算的一个典型表率便是咱们此刻经常听说的云计算。关于云计算的定义,日前的说法并不统一。一个比较有表率性的观点来自于美国国家标准和技术科研所(NIST),按照这种观点,“云计算是一种按运用量付费的模式。这种模式对可配置的IT资源(包含网络、服务器、存储、应用软件、服务)共享池供给了可用的、方便的、按需供应的网络拜访。在这些IT资源被提供的过程中,只需要投入很少的管理和交流工作”。
这个定义很抽象、很学院派,咱们能够用一个通俗的比喻来对其进行理解。在传统上,用户重点是经过调用自有的单一IT资源,这就好比每家每户自己发电供自己用;而云计算则好似是(用海量算力设备)建了一个大型的“发电站”,而后将“电力”(IT资源)输出给所有用户来用。
按照云服务供给者所供给的IT资源的区别,能够产生区别的“云交付模式”(Cloud Delivery Model)。因为IT资源的种类非常多,因此呢对应的“云交付模式”亦就非常多。在各类资讯报告中,最平常的“云交付模式”有三种:
第1种是IaaS,它的全叫作是“基本设备做为服务”(Infrastructure-as-a-Service)。在这种交付模式下,云服务的供给者供给的重点是存储、硬件、服务器和网络等基本设备。
第二种是PaaS,它的全叫作是“平台做为服务”(Platform-as-a-Service)。在这种交付模式下,云服务的供给者需要供应的资源更加多,以便为运用者供给一个“就绪可用”(ready-to-use)的计算平台,以满足她们设计、研发、测试和安排应用程序的需要。
第三种是SaaS,亦便是“软件做为服务”(Software-as-a-Service)。在这种交付模式下,云服务供给者将成品的软件做为制品来供给给用户,供其运用。
有了以上区别的云交付模式,用户就能够按照自己的需要来选取相应的IT资源。例如,倘若元宇宙的用户需要更加多的算力或存储,而本地的设备没法满足,那样就能够经过从云端来获取“外援”。一个云端GPU不足,那就再来几个,按需取用,丰俭由人,既方便,又不至于产生浪费。
需要指出的是,尽管从理论上看云计算能够很好地承担巨大运算和存储需要,但其缺陷亦是很显著的。比较重要的一点是,在执行云计算时,有海量的数据要在本地和云端之间进行交换,这可能会导致显著的延迟。尤其是数据吞吐量过大时,这种延迟就更加严重。针对用户来讲,这可能会对其运用体验产生非常消极的效果。
那样怎么才可克服这个问题呢?一个直观的思路便是,在靠近用户或设备一边安顿一个能够进行计算、存储和传输的平台。这个平台一方面能够在终端和云端之间承担起一个中间商的功效,另一方面则能够对终端的各样需求作出实时的回复。这个思想,便是所说的边缘计算。因为边缘平台靠近用户,因而其与用户的数据交换会更加即时,延迟问题就能够得到比较好的破解。
2、超越经典计算——以量子计算为例
无论是高性能计算还是分布式计算,其本质都是在运算资源的分配上下功夫。但正如咱们前面看到的,经过这种思路来提高算力是有非常多阻碍的。因此呢,此刻非常多人期盼从计算方式本身来进行突破,从而实现更高的计算效率。其中,量子计算便是最有表率性的例子。
咱们晓得,经典计算的基本单位是比特,比特的状态要么是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就只能执行量子退火(Quantum Annealing)算法,而我国开发的光量子计算机“九章”则是专门被用来科研“高斯玻色取样”问题的。尽管它们在各自的专业行业表现非常优异,但都还不可用来处理通用问题。这就好似游戏中的群体攻击大招,虽然攻击范围广,然则对每一个个体的杀伤力都比较弱。因此呢,倘若遇上大群的小怪,群体攻击固然厉害,但倘若遇上防御高、血条厚的Boss,这种攻击就派不上用处了。
从这个方向看,倘若咱们期盼让量子计算大发神威,就必须先找出适合量子计算应用的问题和场景,而后再找到相应的算法。与此同期,咱们亦必须认识到,虽然量子计算的开发和探索非常重要,然则它和对其他技术路径的探索之间更应该是互补,而不是替代的关系。
3、经过改进算法节约算力
倘若说,经过高性能计算、分布式计算,以及量子计算等手段来提高算力是“开源”,那样经过改进算法来节约算力便是“节流”。从提高计算效率、减少因计算而产生的经济、环境成本而言,开源和节流在某种程度上拥有同等重要的价值。
在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)的科研人员埃利亚斯·弗朗塔(Elias Frantar)和丹·阿里斯特尔(Dan Alistarh)合作进行了一项科研,首次针对 100至 1000亿参数的模型规模,提出了精确的单次剪枝办法SparseGPT。SparseGPT能够将GPT系列模型单次剪枝到 50%的稀疏性,而无需任何重新训练。以日前最大的公开可用的GPT-175B模型为例,只需要运用单个GPU在几个小时内就能实现这种剪枝。不仅如此,SparseGPT还很准确,能将精度损失降到最小。在进行了类似的修剪之后,这些大模型在训练时所需要的计算量就会大幅减少,其对算力的需要亦就会相应下降。
关于提高算力、
支持人工智能发展的政策思考
随着ChatGPT引领了新一轮的人工智能热潮,市场上对算力的需要亦会显现爆炸性的增长。在这种状况下,为了有力支撑人工智能的发展,就必须要经过政策的手段引导算力供给的大幅度增多。而要实现这一点,以下几方面的工作可能是最为值得注重的。
第1,应当加快对算力基本设备的建设和布局,提高对全社会算力需要的支持。如前所述,从日前看,分布式计算,尤其是其中的云计算是提高算力的一个有效之举。而要让云计算的效应充分发挥,就需要大力建设各类算力基本设备。唯有如此,才能够让人们随时随地都能够直接经过网络得到所需的算力资源。
这儿需要指出的是,在布局算力基本设备的时候,应当谨慎思虑它们的地域和空间分布,尽可能降低算力的成本。咱们晓得,区别的地区的土地、水、电力等要素的价格是区别的,这决定了在区别地区生产相同的算力所需要的成本亦不尽相同。因此呢,在建设算力基本设备时,必须统一全局,尽可能优化成本。需要指出的是,我国正在推进的“东数西算”工程便是这个思路的一个表现。因为我国东部各样资源的运用成本都要高于西部,因此呢在西部地区创立算力设备,就会大幅降低算力的供给成本,从而在全国范围内达到更优的配置效率。
第二,应当加强与算力关联的硬件技术及其应用的开发,为增多算力供应供给支持。与算力关联的硬件技术既包含基于经典计算的各样硬件,如芯片、高性能计算机等,亦包含超越经典计算理论,按照新计算理论研发的硬件,如量子计算机等。从供给的方向看,这些硬件是基本,它们的性能直接关系到算力供给的可能性界限。因此呢,必须用政策积极促进这些硬件的攻关和开发。尤其是针对有些“卡脖子”的项目,应当首要加以突破。
这里需要指出的是,在进行技术开发的同期,亦应该积极探索技术的应用。例如,咱们此刻已然在量子计算行业取得了有些成果,然则因为用例的缺乏,这些成果并无能够转化为现实的应用。从这个道理上讲,咱们亦需要加强对技术应用的科研。倘若能够把有些计算问题转化成量子计算问题,就能够充分发挥量子计算机的优良,实现计算效率的大幅提高。
第三,应当对算法、架构等软件层面的要素进行优化,在保准AI制品性能的同期,尽可能减少对算力的依赖。从降低AI计算成本的方向看,降低模型的算力需要和提高算力拥有同等重要的道理。因此呢,在用政策的手段促进算力供给的同期,亦应当以一样的力度对算法、架构和模型的优化予以同等的激励。
思虑到类似的成果拥有非常巨大的社会正外边性,因此呢用专利来守护它们并不是最合适的。因此呢,能够积极鼓励对取得类似成功的人员和单位给予直接的奖励,并同期鼓励她们将这些成果向全社会开源;亦能够思虑由政府出面,对类似的模型制品进行招标采购。倘若有个人和单位能够根据需求供给相应的成果,政府就支付相应的花费,并对成果进行开源。经过这些措施,就能够很好地激励人们积极投身到改进模型、节约算力的事业中,亦能够在有成果产出时,让全社会即时享受到这些成果。
总而言之,在人工智能突飞猛进的时代,算力可能是决定人工智能发展上限的一个关键原因。唯有在算力问题上实现突破,人工智能的发展才可能有基本保证。
阅读作者更加多文案
AI来袭:这一次,咱们还能保住自己的饭碗吗
生成式AI:缘起、机遇和挑战
2023:平台经济再出发
|