在被英特尔收购两年之后,深度学习芯片公司 Nervana 终于准备将代号为「Lake Crest」的架构转化为实际的产品了。
对于英特尔来说,现在入局或许有些迟到,英伟达已经占据深度学习芯片市场很长一段时间了,后者有充分的时间通过新的深度学习专用 GPU 和软件加速器来维持并扩张自己的市场。换句话说,即使技术优秀,价格合理,英特尔想要把 Nervana 推上深度学习训练市场并占据一席之地也需要大量的努力——现在看来,英特尔似乎正把筹码押注在 Nervana 的激进路线图上。
现在,我们可以在架构上对它一窥究竟了——它究竟与 GPU 有多大区别,存在哪些优势,以及它的性能优势主要在哪里——确切地说,是功耗效率优势。据 Nervana 元老,现任英特尔 AI 硬件负责人 Carey Kloss 介绍,Nervana Intel 目前的芯片与初代 Nervana 芯片非常相似,但由于英特尔提供了更多专业技术,新的深度学习芯片可以以每年一次的频率快速更新换代。
「加入英特尔之后,我们并没有改变很多,但我们确实应用了母公司很多技术资源,包括封装、电路板设计、电力传输、实验室和接口,在很多事情上一切如常,但在很多技术方面上我们也有了很大进步,」Kloss 告诉 The Next Platform。相比他看到的其他半导体公司,Nervana 的产品先进很多,他们很有信心让新款英特尔集成产品保持稳定的性能曲线。
现在,英特尔已经非常接近推出「Lake Crest」,或它的新名称:英特尔神经网络处理器(Intel Nervana Neural Network Processor,NNP),越来越多的硬件架构细节正逐步被披露。我们从英特尔收购 Nervana 之后几年里陆续获知了这款芯片是如何在模型训练上优于 GPU 的,现在更了解了新的芯片通过改变内存带宽瓶颈获得了更加高效的表现。
虽然目前我们还没有得到任何英特尔 NNP 的性能基准测试结果,Kloss 表示在未来几个月内我们将会看到重大的结果发表。当然,将 NNP 的性能以 GPU 常用的浮点运算速度来测量并不容易,因为两种架构(尽管有一些结构相同)在浮点依赖上的运行方式非常不同。换句话说,即将出现的基准测试将展示 NNP 的高性能,但并不是简单地将其映射到「TFLOPS」数字上。
如果想了解这种新架构的潜力,我们需要先回到 2016 年 8 月,英特尔收购 Nervana 前夕。那时该公司披露了一些内存技巧之外,有关架构方面的细节。时任 Nervana 首席执行官 Naveen Rao 曾告诉我们,在仅握有 2800 万美元资金的情况下,想要推出 28nm 制程的芯片还需要相当大的努力。他简要解释了公司产品在连接和内存构造的特点,并指出它将成为英伟达 NVlink 技术的有力竞争者。Rao 表示,在纯每秒处理速度上,第一块 Nervana 芯片的速度将是英伟达 Pascal 架构的 5-6 倍。
「我们知道目前人们都在使用 Pascal 架构来做深度学习,所以我们在数据上很有信心,他们(英伟达)引入了 NVLink,但我们从底层开始开发了自己的多芯片解决方案。我们的芯片拥有更快的速度,芯片之间拥有专用的串行链路。我们也有相应的软件,让很多芯片运行起来就像一块芯片。我们抛弃了累赘——而不是在已有内存层级之上分层,构建只能解决单一问题的结构。」Naveen Rao 表示。
今天看来,所有这些都仍然适用,除了日益增长的 FP16 运算速度,低精度训练已经成为了深度学习硬件上的一个热门话题,而英伟达的新一代 GPU 架构 Volta 也加入了专门用于处理矩阵乘法的 TensorCore。英特尔 Nervana 也会在今年的晚些时候推出自己的强力产品,但其性能、功耗和先进性如何,还有待考量。
Nervana 芯片是如何处理大规模低精度训练的,以内存连接策略是什么机制,这些特性都是人们期待已久的。其中的一些问题已经在 2017 年底的论文《Flexpoint: An Adaptive Numerical Format for Efficient Training of Deep Neural Networks》,及其在 NIPS 2017 上的演讲中得到了解答。除了论文之外,Flexpoint 也有一个更加简单的展示页:https://ai.intel.com/flexpoint-numerical-innovation-underlying-intel-nervana-neural-network-processor/
实际上,与更标准的 FP16 方法相比,使用 16 位整数乘法器和加法器树,NNP 更加节省功耗与面积。这是一个有趣的选择,因为 FP16 有更小的乘法器,但是也有加法器树和移位的需要,这抹去了 FP16 的优势,Kloss 解释道。「我们相信 Flexpoint 是神经网络性能与功耗的最佳平衡。我们已经看到大量神经网络在其之上运行良好,所以 16 位动态范围是足够的,同时我们也通过更少的移位器和低位运算降低了浮点运算量的需求,提高了效率。」
「在单个芯片上的神经网络计算极大地受到能源与带宽的限制。为了让神经网络负载获得更高的吞吐量,除了前面提到的存储创新之外,我们还创造了一种新的数字格式 Flexpoint。Flexpoint 能让标量计算(scalar computation)部署为固定点相乘和相加,同时可使用共享的指数做大型动态范畴。因此,每个回路变得更小,这可带来芯片上并行处理的增加,同时可同步降低每次运算的能耗。」
对 Nervana 和英特尔而言,神经网络优秀表现的另一面是其存储和网络优势带来的带宽提升。如果你观察 NIPS 上展示的芯片,其片上高速网格网络都带有高频宽存储(HBM)。Nervana 的目标是最大化芯片上处理矩阵乘积和卷积运算的区域,而不是让这些区域做其他事,例如像 GPU 这样的芯片会设置做常见工作负载的区域。面对大型的神经网络,这种设计能使用外部网络,加上有足够频宽的多个芯片进行扩展,从而使组合的芯片能像单个大型计算节点一样做运算。
「矩阵相乘和卷积在深度学习中都是非常重要的计算。这些计算不同于常用工作负载,因为这些计算和数据移动大部分都可以提前知道。如此情况下,NNP 芯片没有标准的缓存层级,片上存储也直接由软件管理。更好的存储管理能让芯片在每个单元裸片(die)上都能获得最大的计算量,也就是对深度学习模型更快的训练。」
这些芯片上的连接性是架构宽带的另一个重要指标,它通过 SerDes(串行器/解串器,被拆分为四个 100GB 的「quads」),具有 1.2Terabits 的双向带宽。不幸的是,对此机制的性能我们没有看到图示。然而,就像 Kloss 告诉我们的,非常明显,能够把多个芯片组合成单个大型虚拟芯片,从而满足更大的模型。
再次强调,这些启示并不令人惊讶,因为 Nervana 几年前就曾介绍过这是一种快速地、定制化的、互相连接、高宽带内存、高精准的芯片。然而,最终能看到已经很好了,因为我们能把已有方法与巨头的训练方法、深度学习芯片创业公司的方法做对比了。
英特尔在深度学习上的目的是做出一款能够面相所有实现大小的产品。除了以上对此芯片的讨论,他指出最近的论文只强调 Xeon CPU 和 FPGA 的训练时间,以及 Movidius 对大规模机器学习推理的有利条件。英特尔和 Nervana 的未来将会如何发展?时间将会给我们答案。