文/夏乙、问耕
来源:量子位(ID:QbitAI)
我们错了。
今天凌晨,2018 大会最后一日,前不久刚刚获得年度图灵奖的 Alphabet 新任董事长 John Hennessy 登上舞台。
原本以为这是一次例行公事的演讲。只是简单讲讲责任、做做科普等等。没想到,曾经的斯坦福校长 Hennessy 毫不打官腔。(他比上一版 Alphabet 董事长有趣太多)
听完之后,我们久久不能平静。
Hennessy 一开场就花了大量的时间,仔细讲解了计算领域的发展、现状和困境,以及未来可能的突破方向等。句句干货。
当然亦有激动人心的情怀抒发。
比如,这位已经 65 岁的宗师泰斗说:你们可能不信,我搭建自己的第一台电脑,已经是几乎 50 年前的事了。
Hennessy 说这五十年来,他亲眼目睹着不可思议的 IT 产业,上演一波又一波的革命,互联网、芯片、智能手机、电脑……展现着各自的魔力。但仍有一件事,他认为将会真正改变我们的生活。
“那就是机器学习和人工智能领域的突破。”
“人们投入这个领域的研究已经 50 年了。终于,终于,我们取得了突破。为了实现这个突破,我们所需要的基本计算能力,是之前设想的 100 万倍。但最终我们还是做到了。”
他说:这是一场革命,将会改变世界。
然后更震撼的一幕上演。
相信很多人已经见识过 Google Duplex。就是前两天在 Google I/O 2018 大会首日,Google CEO 展示的那个对话 AI。
能够在真实的环境下,打电话给美发店、餐馆预约服务和座位。全程流畅交流,完美应对不知情的人类接线员。看看下面这段视频,再感受下 Google 的 AI 黑科技。
Google Duplex 一出,所有人都炸了。效果拔群的好。坊间观众们缓过神来一想:Google 演示的这个 AI,难不成就是通过了图灵测试?
没错,Alphabet 董事长 John Hennessy 今天终于亲口承认:“在预约领域,这个 AI 已经通过了图灵测试。”
“这是一个非凡的突破。”
他进一步补充说,虽然这个 AI 不是在所有情境下取得突破,但仍然指明了未来的道路。
1950 年,图灵发表了一篇划时代的论文,预言人类能创造出具备真正智能的机器。他还提出了著名的图灵测试:如果一台机器能与人类展开对话(通过电传设备)而不被识别出身份,那么这台机器就具有智能。
通过图灵测试,意味着机器可以思考。
△ 图灵当年的惊世论文
了不起,再次为 Google 打 Call(以及希望可以是 AI 接听)。
在演讲中,John Hennessy 还问全场:有一件事,现在还能按照摩尔定律的速度快速增长,你们猜是什么?
答案是:机器学习论文的数量。
说完这个,全场都大笑起来。(感谢 Jeff Dean、Dave Patterson、Cliff Young 等贡献的数据。)
他还讲解了 TPU 的内部结构。下面有详细阐述。
那么,今天我们满怀敬意和激动发出这篇推送。我们觉得可以把这篇称为:《Alphabet 董事长在山景城科技座谈会上的讲话》。
Hennessy 讲话脱水全文如下,还没出版单行本。
讲话脱水全文
今天我要讲一讲,未来 40 年我们在计算领域将面临的最大挑战是什么,但这同时也是一个巨大的机遇,让我们重新思考该如何构建计算机。
现在流行谈摩尔定律的终结,高登·摩尔自己曾经跟我说过:所有指数都会终结,只是迟早的问题。摩尔定律所遇到的正是这样的自然规律。
摩尔定律终结意味着什么?
我们先来看看 DRAM(动态随机存取存储器)的情况。很多年来,DRAM 都在以每年 50% 的速度增长,比摩尔定律说的增速还要快一点。
但后来,就进入了平缓期。过去 7 年里究竟发生了什么?DRAM 是一种比较特殊的技术,它需要深槽电容,因此也需要一种特殊的装配技术。
那么在处理器领域又发生了什么呢?处理器发展的减缓和 DRAM 是相似的。红线是摩尔定律的预测,蓝线是一个普通英特尔处理器上的晶体管数量。这两条线一开始只是略微分叉,但到 2015、2016 年,差距就很大了。
我们必须记住,这里还有个成本因素。生产线越来越贵了,芯片成本降得却没有那么快,因此每个晶体管的成本实际上在上升。我们去考虑架构的时候就会看到这些问题的影响。
在摩尔定律的减速之外,还有一个更大的问题,登纳德缩放定律(Dennard Scaling)的终结。
Bob Dennard 是 IBM 员工,第一个晶体管 DRAM 的发明者,他多年之前曾经预测:每平方毫米的硅片需要的能量将保持恒定,因为电压电平、电流容量会下降。
这意味着什么呢?如果能量保持恒定,晶体管数却在指数型增长,那么每个晶体管的能量,实际上是在下降的,也就是说,从能耗的角度来看,计算的成本越来越便宜。
实际上登纳德缩放定律怎么样了呢?我们来看一下上图,红线是技术按标准摩尔定律曲线的发展,蓝线代表单位面积能耗的变化。
现在的处理器会调慢时钟频率、关闭核心,因为如果不这么干它就会烧起来。我从来都没想到竟然会看见这样一天,处理器给自己减速来防止过热,但是现在这种情况已经发生了。
实际上,登纳德缩放定律到 2007 年已经停止了,带来了芯片行业的剧变。忽然之间,关键限制因素不再是晶体管的数量,而是能耗。这就要求你完全重新思考架构、思考如何构建机器。
这意味着晶体管在计算中的低效、架构上的低效比以往危害更大。
我们平时所用的、随身带着的各种设备,都离不开电池,忽然之间能量就成了关键资源。还有比手机没电了更糟糕的事吗?再想想即将到来的 IoT 时代,设备永远开着机,还指望依靠能量采集技术一块电池用 10 年。
我们越来越需要设备永远保持开机。比如说装了 Google Assistant 的东西,你可能不需要它的屏幕总亮着,但是需要 CPU 一直在工作。因此,我们需要越来越多地考虑能源效率。
让很多人惊讶的是,在大型云计算数据中心里,能量效率也是个巨大的问题。
这是 Google 数据中心的典型成本构成。红色的那一块是耗能加上冷却的成本,几乎和花在服务器上的成本持平。因此,能源效率是一个非常关键的问题,而登纳德缩放定律的终结意味着已经没有免费的午餐了,你也可以看出它的影响。
上图展示了 40 年来处理器性能的变化。最初几年,我们每年能够看到 22% 的进步;80 年代中期 RISC 发明之后,每年的进步速度达到了大约 50%;接下来,就是登纳德缩放定律的终结,芯片界所有人都转向了多核。多核有什么用呢?硬件设计者用它把能量效率的皮球踢给了软件设计者;现在我们进入了一个平台期,平均每年的性能增长只有3% 左右,要 20 年才能翻倍。这是通用处理器性能增长的终结。
为什么会这样?
大量并行执行指令是不可行的,比如说在英特尔酷睿 i7 里,25% 指令的执行结果都被扔掉了,但是,执行这些指令依然需要消耗能量。这也是为什么单处理器性能曲线终止了。
但是多核处理器也面临着类似的问题。写一个大型的复杂软件,就必然有序列性的部分。
假设,你将来用一个 64 核的处理器,但它运行的代码中有1% 是序列性的,于是,它的运算速度就只相当于一个 40 核的处理器,但是你却要为 64 核的能量买单。
我们要跨越这个能量效率的障碍,就要重新思考如何设计机器。
我们还有什么方法,能让系统更加经济?
以软件为中心的方法行得通吗?现代脚本语言对于使用它们的程序员来说很高效,但是在执行上效率很低。
以硬件为中心的方法呢?我和 Patterson 把它称为“特定领域架构”,这类架构不是通用的,但能非常好地处理一些领域的应用。
根据上面提到的挑战,我们来看一下有哪些机会。
这个表格出自 Charles Leiserson 和他 MIT 同事们的论文“There’s Plenty of Room at the Top”。他们以矩阵乘法为例,在英特尔酷睿处理器上运行这种算法并优化它。用C语言重写、加上并行循环、加上内存优化都会带来速度的提升,最后他们用 Intel AVX instructions 重写了程序,和 Python 相比提速了 6 万多倍。
虽然只是一个很简单的算法,但是这体现了软件优化能够带来的潜力。
那么特定领域架构(DSA)呢?我们实际上要做的是要在硬件的能效上获得突破。“特定领域”指的是让一个处理器能实现一定范围内的用途,它们在运行的时候能够运用这个特定领域的知识,因此更加高效,比如专门用于运行神经网络的处理器,做的是机器学习相关的事情。
DSA 不是魔法,把架构限制在某个领域并不会自动让计算更快,我们需要做一些架构上的改变才能更高效。重要的有这样几点:
首先我们更有效地实现了并行,从现在多核处理器的多重指令多重数据变成了单指令多重数据,因此每个核心不必再单独从不同缓存中读取指令流,而是用一组功能单位存储一组指令。这是牺牲一些灵活性来换取的巨大的效率进步。我们用的更像是 VLiW,让编译器来决定一组运算是不是要并行,将工作从运行时转移到编译时。
我们还脱离了缓存。缓存是个好东西,但是当空间局部性和时间局部性比较低的时候,它不仅没用,还会拖慢程序。于是,我们就把它转移到了用户控制的本地存储中。这里所做的取舍就是必须有人将他们的应用银蛇到用户控制的存储结构中。
另外,我们还去除了不必要的精度,转向低精度的浮点运算。
与这些相配合,我们还需要特定领域语言。用 Python 或C写的代码,无法提取出特定领域架构所需要映射到信息。
因此,我们需要重新思考改如何为这些机器编程,它们要用到高级运算,比如向量乘法、向量矩阵乘法或者系数矩阵的组织等,有了这些运算才能获得编译到架构中的高级信息。
设计特定领域语言的关键是要保持足够的机器独立性,不能换一台机器就要重写程序。应该有一个编译器能针对一种特定领域语言,既能映射到云端运行的架构,也能映射到手机上运行的架构,这是一种挑战。TensorFlow、OpenGL 等正往这个方向发展,但这是一个船新的空间,我们刚刚开始理解,也刚刚开始理解该如何针对它来设计。
为深度神经网络设计一种特定领域架构,你们觉得应该什么样?
这张图是 TPU 内部的架构,我想说明的是,这上面占满硅片区域的不是控制,也不是缓存,而是与计算直接相关的东西。
也正因为如此,这个处理器每个 clock 可以完成 256×256 次,也就是 64000 次 8 位矩阵乘法,因此它可以轻松拿下推理任务。你不能用它来运行通用的C语言代码,而是要用它运行神经网络的推理。
我们来看一看每瓦能耗实现的性能,TPU 是通用处理器的 30 多倍,甚至比 GPU 强很多。这就体现了为特定领域来定制架构非常关键。
这是一个新时代,但在某种意义上来讲也回到了过去。在计算机发展早期,应用领域的专家、研究软件环境、做编译器的人和做架构的人会组成一个垂直的团队。
而现在,我们也需要这样的综合团队,理解如何从应用来发展特定领域语言、发展特定领域架构,来思考如何重构机器。
对于行业发展来说,这是巨大的机遇,也是一种新挑战。我相信有足够多像这样有趣的应用领域,我们可以通过为领域定制机器,取得巨大的性能优势。
我想,如果能实现这种进步,就会为人们腾出时间,来担心信息安全问题,这也正是一个我们应该关注的重要问题。
One More Thing
演讲结束后,John Hennessy 老师还在现场,进行了 20 多分钟的答疑。
这次答疑涉及的领域包括:量子计算、神经网络,安全、计算架构的演变、行业未来发展、教育等等诸多领域。Hennessy 都给出了诚恳而明确的回答。
这里先讲几个花絮。
现场有个提问者说:我上的处理器架构课程,用的就是你写的教材。
Hennessy 立刻回答:“I hope it didn’t hurt you。”
又是一次全场大笑。
还有一个提问涉及比特币这类加密货币。
Hennessy 回答:“确实,我能构建一个专门进行比特币挖矿的架构。”他说加密货币很重要,但还有一些问题需要解决。