点击上方关注,All in AI中国
机器学习,特别是深度学习,正迫使重新评估芯片和系统的设计方式,这将改变未来几十年行业的发展方向。
从芯片到软件再到系统,计算领域将在未来几年内因机器学习的普及而发生巨大变化。我们可能仍然将这些计算机称为“通用图灵机”,因为我们已有八十年或更长时间了。但在实践中,它们将不同于迄今为止的构建和使用方式。
任何关心计算机工作的人以及对所有形式的机器学习感兴趣的人都会感兴趣。
2月,Facebook的A.I.负责人研究人员Yann LeCun在旧金山举行的国际固态电路会议上发表了演讲,这是世界上运行时间最长的计算机芯片会议之一。在ISSCC上,LeCun明确指出了计算机技术对A.I.的重要性。
LeCun表示,“硬件功能和软件工具既能激励又能限制AI研究人员想象,我们所掌握的工具比我们承认的更能影响我们的想法。”
从2006年开始,深度学习的兴起不仅是因为大量数据和机器学习中的新技术,例如“dropout”,而且还因为计算能力越来越强。特别是,越来越多地使用来自Nvidia的图形处理单元或“GPU”,导致计算的更大并行化。这使得训练比过去更大的网络成为可能。20世纪80年代提出的“并行分布式处理”的前提,即同时训练人工网络的节点,最终成为现实。
一些人认为,机器学习现在有望“接管”世界上大部分的计算活动。在2月份的ISSCC期间,LeCun向ZDNet讲述了计算方向的变化。 LeCun表示,“如果你走了五年,未来十年,你会看到计算机花费时间做些什么,大多数情况下,我认为就计算量而言,他们会做一些像深度学习这样的事情。”
深度学习呈指数增长
随着深度学习成为计算的焦点,它正在推动当今计算机达到能够做到的界限,在某种程度上推动神经网络进行预测的“推理任务”,但对于训练神经网络更是如此,计算密集型功能。
诸如OpenAI的GPT-2之类的现代神经网络需要并行训练超过十亿个参数或网络权重。Facebook的热门机器学习训练库PyTorch的产品经理表示,“模型越来越大,它们真的非常大,而且训练成本非常高。”如今最大的模型通常不能完全存储在GPU附带的内存电路中。”
计算周期的需求速度也越来越快。根据OpenAI提供的数据,早在2012年创建的令人尊敬的AlexNet图像识别系统在总训练时间内耗费了相当于每秒1000万次浮点运算的“千万亿次浮点运算”,总时间达到一天。但AlphaZero是由谷歌的DeepMind在2016年建立的神经网络,它击败了世界上的国际象棋冠军,并且实现每秒消耗超过一千天的千万亿次飞越。 AlexNet和AlphaZero之间计算周期的增加使得每3.5个月的计算消耗量翻了一番。这是2016年收集的数据。到目前为止,步伐无疑会增加。
计算机芯片危机
可以说目前还没有一个很好的petaflop芯片。用于深度学习训练的顶级芯片,如Nvidia的Tesla V100,每秒运行112万亿次。因此,你必须在1000天内运行其中的8个,或者把它们集中到一个消耗越来越多能量的系统中。
更糟糕的是,近年来芯片改进的步伐已经触底。正如加州大学伯克利分校教授大卫帕特森和英国航空公司董事长约翰轩尼诗在今年早些时候的一篇文章中所指出的那样,摩尔定律已经耗尽了“气数”。英特尔长期以来一直否认这一点,但得到的数据是支持他的看法的,正如他们在报告中提到的那样,芯片性能现在每年仅增长3%。
计算机科学家David Patterson和John Hennessy一直在跟踪新芯片的数据,这些数据显示整个领域正在形成一条渐近线,最新的芯片每年的性能提升不超过3%。
这两位作者都认为,芯片的设计,也就是众所周知的架构必须彻底改变,才能使晶体管获得更高的性能,而这些晶体管本身并不能带来性能上的好处。(帕特森帮助谷歌创建了“Tensor Processing Unit”芯片,因此他对硬件如何影响机器学习非常了解,反之亦然。)
由于处理器的改进停滞不前,但机器学习需求每隔几个月就会翻一番,我们必须有所付出。令人高兴的是,如果采用正确的方法,机器学习本身可以为芯片设计带来好处。因为机器学习需要很少的遗留代码支持 - 它不必运行Excel或Word或Oracle DB - 并且由于其最基本计算的高度重复性,正如他们所说的,对于芯片设计师,机器学习是一个很好的机会。
建造一台新机器
卷积神经网络和长期短期记忆网络是深度学习的两个主要支柱,甚至在更现代的网络中,如谷歌的Transformer中,大多数计算都是线性代数计算,即tensor math。最常见的是,将一些输入数据转换为矢量,然后将该矢量乘以神经网络权重矩阵的列,并将所有这些乘法的乘积相加。称为乘法累加,这些计算使用所谓的“乘法累加”电路或“MAC”在计算机中呈现。因此,只需改进MAC并在芯片上创建更多的MAC来增加并行化,就可以立即改善机器学习。
无论是主导人工智能训练的英伟达(Nvidia),还是主导机器学习推理的cpu的英特尔(Intel),都试图调整自己的产品,以利用这些原子线性代数函数。 Nvidia为其Tesla GPU添加了“tensor cores”,以优化矩阵乘法。英特尔已花费300亿美元收购那些从事机器学习的公司,包括Mobileye、Movidius和Nervana Systems,后者有望在某个时点推出一款“Nervana神经网络处理器”。
到目前为止,这些举措并不能让机器学习领域的人满意,例如Facebook的LeCun。在今年2月的时候,在与ZDNet的交谈中,LeCun表示:“我们需要的是竞争对手,是目前(英伟达)占主导地位的供应商。”他说,这并不是因为英伟达不生产优质芯片,而是因为他们确实生产优质芯片。如果有一套不同的硬件来做不同的假设,可以用于当前gpu擅长的互补功能,那就太好了。”
他说,其中一个错误的假设是,认为训练神经网络将是一个可以操作的“整齐阵列”的问题。相反,未来的网络可能会使用大量的网络图,其中神经网络的计算图的元素作为指针流到处理器。 LeCun表示,芯片必须进行大量的乘法增加,但对于如何将这些乘法增加呈现给处理器,芯片有着不同的期望。
作为TPU芯片贡献者之一的谷歌软件工程师Cliff Young,去年10月在硅谷举行的芯片活动上发表了主题演讲时更直言不讳。 “很长一段时间,我们都拒绝了,并说英特尔和Nvidia非常擅长构建高性能系统,五年前我们超越了这个门槛。”
创业公司的崛起
作为突破口,新芯片不仅来自谷歌等人工智能巨头,还来自大量风投支持的初创企业。
除了谷歌的TPU,现在已经进行了第三次迭代,微软还有一个可编程处理器,一个名为Project Brainwave的“FPGA”,客户可以通过其Azure云服务租用它。亚马逊表示,它将在今年晚些时候推出自己的定制芯片,名为“Inferentia”。当LeCun在2月份与ZDNet谈话时,他提到Facebook也在研发芯片。
“当然,像谷歌和Facebook这样拥有大量产品的公司来说,因为它们有大量的时间来开发自己的引擎,这方面有内部活动。”
创业公司包括Graphcore,一家位于布里斯托尔的成立五年的创业公司,一个位于伦敦西南一个半小时的港口城市; Cornami、Effinix和Flex Logix,所有这些都是由ZDNet描述的;和硅谷的洛斯阿尔托斯的Cerebras系统公司仍然处于秘密模式。
许多这些初创公司都有一个共同点,那就是大大增加用于矩阵乘法的计算机芯片区域的数量,即MAC单元,以便在每个时钟周期内挤出最大的并行度。 Graphcore是所有初创公司中最远的,是第一个真正向客户发送生产芯片的公司。关于它的第一个芯片最引人注目的事情之一是巨大的内存,该芯片名为“Colossus”,首席技术官Simon Knowles称其为“迄今为止最复杂的处理器芯片”。
Graphcore的“Colossus”芯片以第一台数字计算机命名,拥有超过一千个相同的矢量处理器内核,在史无前例的304兆字节的片上SRAM的帮助下,实现了高并行性。它面积为806平方毫米,是有史以来最大的芯片之一。
Colossus由1,024个被称为“智能处理单元”的独立核心组成,每个核心都可以独立处理矩阵运算。众所周知,每个IPU都有自己的专用内存,256千字节的快速SRAM内存。总而言之,304兆字节的内存是有史以来内置在芯片中的内存最多的。
没有人知道芯片上存在如此多的内存会如何改变构建的神经网络的种类。这可能是因为,随着访问内存数量的增加,随着访问延迟的降低,更多的神经网络将以新的、有趣的方式重用存储在内存中的值。
软件难题
对于所有这些芯片的努力,问题当然是由于该公司的“CUDA”编程技术,他们没有为Nvidia建立多年的软件。 Graphcore和其他人给出的答案将是双重的。一个是用于机器学习的各种编程框架,例如TensorFlow和Pytorch,提供了一种避免芯片本身细节并专注于程序结构。所有进入市场的芯片都支持这些框架,他们的创造者认为这些框架与Nvidia的竞争环境是平等的。
第二点是Graphcore和其他人正在构建自己的编程技术。他们可以证明他们的专有软件既可以转换框架,也可以智能地将并行计算分配给芯片上的众多MAC单元和向量单元。这就是Graphcore为其“Poplar”软件提出的论点。 Poplar将神经网络的计算图分解为“codelets”,并将每个codelet分配到Colossus的不同核心,以优化并行处理。
Graphcore的“Poplar”编译器采用一个神经网络,并在整个Colossus处理器中有效地分发其各种功能元素,作为独立的“codelet”。
在过去的二十年中,大数据和快速并行计算成为常态,推动了机器学习,带来了深度学习。计算机硬件和软件的下一波浪潮可能涉及大量内存和神经网络,这些内存和神经网络受到动态限制,以利用高度并行的芯片架构。未来看起来很有趣。