在过去的数年间,人工智能技术得到了前所未有的爆发式的增长。这主要归功于万物互联的浪潮带来的海量的数据、芯片技术革新带来的算力的飞跃,还有计算机和数据科学领域对算法的不断的优化。这也是我们常说的驱动AI技术发展的三大要素数据、算力和算法,而且这三大要素都是相互促进,缺一不可的。 那么作为芯片来说,它是承载这三大要素最重要的力量。除了人工智能专用芯片之外,其实还有很多通用的芯片类型,比如说GPU、FPGA、中央处理器CPU,这些芯片都在人工智能时代针对AI应用进行了架构优化,并且再次焕发了新生。今天我们就以英特尔的至强可扩展处理器为例,一起来看一下在云计算和数据中心领域,CPU 在人工智能时代的独特优势。
对这些人工智能芯片说,有5个衡量因素,分别是芯片的性能、灵活性、同构性、成本和功耗。那么接下来结合这个来和大家一起来看一下英特尔的至强可扩展处理器的一些技术特点,特别是它针对人工智能应用进行的优化和创新。那么这里既包含芯片指令集的扩展和硬件架构的升级,也包括软件和生态系统的支持。
我们先来简单看一下英特尔的至强可扩展处理器的一些技术特点。去年六月,英特尔正式发布了它的第三代制强可扩展处理器,代号为Cooper lake。那么和它的前一代产品也就是Cascade Lake 相比,Cooper Lake 单芯片集成了最高28个处理器核心,每个8路服务器平台最高可以支持224个处理器核心,每个核心的基础频率可以达到3.1G赫兹,单核最高频率可以达到4.3G赫兹。此外它还集成了一些其他的架构升级,比如增强了对传统DDR4内存的带宽和容量的支持,并且将英特尔的UPI,也就是超级通道互联的通道数量增加到了6个,将CPU之间的通信带宽和吞吐量提升了一倍。除此之外也提升了对硬件安全性、虚拟化还有网络连接等等,这些数据中心常用技术的硬件支持等。值得我们注意的是,这个Cooper Lake 是特别针对4路或者是8路的服务器产品进行打造的第三代至强可扩展处理器。
对于更加常见的单路和双路服务器,英特尔也即将推出代号为Ice Lake 的处理器,它将基于英特尔最新的10纳米工艺进行制造,内核采用了sunny cove 的微架构。
值得注意的是,英特尔的第三代至强可扩展处理器就针对人工智能应用做了特别的架构优化和设计。 一个是进一步的优化了英特尔的深度学习加速技术DL-Boost,首次引入了对BF16指令集的支持;另外一个就是增加了对第二代傲腾持久内存的支持。接下来我们就具体的来看一下,为什么这两点提升对于AI应用来说特别的重要。
首先我们来看一下DL-Boost。从第二代至强开始,英特尔就在CPU 里加入了深度学习加速技术。它的核心就是对AVX-512矢量神经网络指令的硬件支持,从而大幅提升了对AI 推理应用的加速。简单来说,它的本质有两点,一个是低精度的数据表示不会对深度学习的推理结果和精度造成太大的影响,但是会极大的提升硬件的性能和效率;第二个就是可以为某些类型的AI 应用。比如推理应用,专门设计更有效的指令集合硬件来支持这些应用的高效运行。那么在深度神经网络的应用里,使用低精度的数据表示已经是一个研究比较成熟的领域了。相比使用32位浮点数进行运算,我们可以采用更低的数据精度,甚至也可以采用整形数来进行运算。比如对于很多应用来说,特别是涉及我们人类感官的应用。比如看一个图片,或者是听一段声音等等。由于我们人类的感知能力并没有那么精确,所以推理的精确度稍许有那么一些差别,其实并没有太大的关系,但是降低数据精度会对AI芯片的设计和性能带来很多的好处。
比如可以在芯片面积不变的情况下,大幅提升运算单元的数量;或者在性能要求不变的情况下,采取更少的芯片面积,从而降低功耗。 此外,这样也会减少数据传输的数据量,节约了带宽,也提升了吞吐量。那么基于这个理论,就衍生出了很多非常有趣的AI芯片架构设计,比如一些AI的专用芯片都加入了对不同的数据精度的硬件支持。那么对于至强可扩展处理器来说也是如此。比如AVX-512指令集,它就将数据位宽增加到了512位,这样就可以在单位时间里处理更多的数据,这样就可以在CPU上为AI应用提供更好的性能支持。
不仅如此,通过深度学习加速技术,我们还可以将指令进一步的打包。比如用一条指令就能完成之前三条指令才能完成的运算,这样就成倍的提升了系统性能。第二代至强可扩展处理器里首次引入了深度学习加速技术,它主要用来加速推理应用。那么从第三代至强开始,英特尔又在DL-Boost 里加入了对BF16的硬件支持,从而兼顾了推理和训练的加速。那么使用BF16有什么好处呢?和8位整形数相比,BF16的精度更高,而且有的大得多的动态范围。那么和32位浮点数相比呢,BF16虽然精度有所损失,但是损失并不多,动态范围也类似,但是所需的数据位宽则要小很多。可以说BF16这种数据表示可以在精度、面积、性能等衡量标准里取得非常好的折中。这也是为什么要在第三代至强可扩展处理器里支持这种数据表示的主要原因。
和前一代CPU相比,第三代至强可扩展处理器的AI推理性能可以提升高达1.9倍,训练性能也可以提升达1.93倍。业界也有很多公司在使用和部署第三代至强可扩展处理器,以及前面介绍的深度学习加速技术。比如阿里云就利用对BF16的支持,将BERT模型的推理性能提升到原来的1.8倍以上,并且没有准确率的下降。
说完数据的计算,我们接下来再看一下数据的存储。芯片设计的一个大的原则就是存储数据的地方离使用数据的地方越近,那么性能就越高,功耗就越低。那么对于人工智能芯片来说,不管是对于训练还是推理,都需要对大量的数据进行处理。这一方面需要有大容量的存储技术作为支持,另一方面也需要更大的内存带宽以及更快的数据传输速度。总体来说,我们在计算机里常见的存储器类型可以分成这么几个类别。一个是DRAM,也就是我们常说的内存,它的性能最高,数据读写的延时最低,但是容量十分有限,而且价格昂贵。更重要的是一旦断电,DRAM里的数据就会丢失。相比之下像机械硬盘、固态硬盘之类的存储方式
虽然容量够大,价格够便宜,而且具备数据持久性。但是它最大的问题就是访问速度。相比于DRAM来说要慢几个量级,所以很自然的我们就会想能否有另外一个量大实惠的存储方式,既能有大容量、低延时,也能保证数据的持久性,而且价格也可以接受。那么一个可行的方案呢,就是这个英特尔的傲腾Optane持久内存。奥腾持久内存就像是冰箱,它既有大的容量,又能保证数据的持久性,而且也能够提供快速的数据读写性能。傲腾的单条容量最高可以达到512G ,而且和传统的DDR4内存的插槽相兼容。当搭配第三代至强可扩展处理器使用的时候,单路内存的总容量最高可以达到4.5TB,远高于普通的DRAM内存。值得注意的是,傲腾还有多种工作模式。首先就是内存模式。这个时候它就和DRAM没有本质的区别,相当于对系统的内存进行了一个扩展。此外它还有一个叫App direct的模式,可以实现较大内存容量和数据的持久性,这样软件就可以将DRAM和傲腾作为内存的两层来进行访问。硬盘之类的存储设备是按块来读写数据的。而傲腾是可以按字节来进行选址的。这就好比我们去超市买西红柿,可能一次要买很多很多,但是从冰箱里拿的时候可以用多少就拿多少,这样就保证了数据读写的效率和性能。
对数据进行计算和存储的硬件说完了,我们再来看看软件,以及围绕着软硬件而搭建的生态系统。不管是什么芯片,不管是什么应用场景,最终使用它的都是开发者,是人。所以软件和生态也是非常重要的环节。举例来说,英特尔有一个叫做Analytics Zoo 的开源平台,它将大数据分析人工智能应用,包括数据的处理、模型的训练和推理等等这些过程进行了一个整合。它可以把像这个Tensor Flow、 PyTorch或者是Open VINO这些框架,还有开发工具和软件等等集成到一个统一的数据分析流水线里。 用于分布式的训练或者是预测,这样让用户更方便的构建端到端的深度学习应用。这个分析流水线根据之前处理器进行了深度的优化,可以充分的利用前面介绍的那些针对AI应用进行的计算和存储架构的革新,并且可以方便的进行计算集群的部署和扩展。
比如美的就采用了Analytics Zoo来搭建了工业视觉检测的云平台,来加速产品缺陷检测的效率,并且将模型推理的速度提升了16倍。那么作为构建广泛生态系统的一部分,英特尔硬件产品除了有至强可扩展处理器和傲腾持久内存,还有基于x e 架构的数据中心,专用的GPU系列,还有现场可编程芯片FPGA,以及一系列人工智能专用芯片。