今天我们来聊一聊华为的昇腾AI处理器。首先我们来简单说一下为什么需要人工智能芯片。那么对于近年来人工智能技术的突破性发展,业界普遍认为有三个主要的推动力量,一个是海量数据的产生和累积;一个是理论算法的创新;还有一个就是计算技术的变革。那么数据、算力和算法这三点是相互结合,缺一不可的。如果我们把人工智能技术的发展比作是一个正在起飞的火箭,那么大数据就是它的燃料,算法和理论就是用来控制它的飞行轨迹和姿态,计算技术则是它持续爆发的引擎。那么为了让这个火箭飞得更高,飞得更远,我们就需要不断的获取更多的数据,并且不断的创造和改进我们的算法模型和理论。来对这些数据进行更有效的处理、分析和利用。此外,我们还要不断的升级计算的能力,从而在更短的时间内处理更多的数据。那么承载这一切发展最重要的基础就是芯片,特别是人工智能芯片。
接下来,我们重点看一下人工智能专用芯片,特别是华为的昇腾AI处理器的相关技术内容。聊一聊昇腾系列处理器的一些技术特点,包括硬件架构、软件架构,以及围绕这个昇腾处理器构建的生态系统的一些内容。
首先,我们来看一下昇腾AI芯片的硬件架构。这里说的昇腾AI 处理器其实有两个,一个是2018年发布的昇腾310,它主要针对的是推理应用;另一个是2019年发布的针对训练应用的昇腾910。值得注意的是,作为人工智能专用芯片,它们都是为了特定的领域进行设计和深度优化的。这也是像昇腾这样的专用芯片,区别于CPU、GPU这些通用芯片的最主要的方面。那么在AI系统中,又继续分成训练和推断这两个过程。
比如昇腾910主要针对的就是在云端的AI训练应用,所以芯片的性能,也就是算力的大小,就是它优化的重点。因此它使用7纳米工艺进行制造。FP16算力可以达到256TFLOPS, INT8算力高达512 TOPS,同时支持128通道的全高清视频解码。这些性能呢其实都超过了同时期的GPU,比如英伟达的V100。那么为了实现这么高的算力,它最高的功耗是310瓦和GPU基本处于一个量级。相比之下昇腾310针对的是推理场景,主要是应用在移动端。
所以这就需要对性能和功耗进行一定的平衡。因为我们基本不可能在部署智能摄像头,无人驾驶车辆,或者是我们的手机或者手表里, 放一个有几百瓦功耗的AI芯片,同时对于一些边缘计算的场景,对芯片使用成本的限制,以及芯片本身的实时性、安全性等等也都是重要的考虑因素。所以结合这些需求呢,昇腾310采用的是12纳米工艺进行制造,最大的功耗仅为8瓦。那么在性能方面,它的FP16算力达到了8TFLOPS,INT8算力可以达到16 TOPS,同时也集成了16通道的全高清视频****。那么这些在边缘计算领域其实已经是很高的算力了。
现在很多芯片的结构其实都是以片上系统的形式进行设计和开发的。我们拿蛋糕举个例子。也就是在一个盒子里装了很多不同的小蛋糕,而不是直接做一个特别大的蛋糕。比如每个小蛋糕都可以分别做,还可以做不同的口味、大小,最后呢整合在一起就行了,这样既节省了制作的时间,也降低了制作的风险和成本。那么同样的华为昇腾AI芯片,它的本质也是一个片上系统。在芯片上有很多不同的模块,也就是前面说的这些小蛋糕组成的。他们有的负责数据存储,有的负责接口和通信,有的负责任务的调度和控制。当然还有最重要的就是负责AI运算的这些计算核心。
那么从硬件结构来看昇腾AI芯片,最主要的特点就是它的AI核心采用了华为自研的达芬奇架构。包括昇腾910和昇腾310。其实都是使用了基于达芬奇架构的AI核心。总体来说,达芬奇架构可以分为三个主要的组成部分,分别对应数据的计算、存储和控制。那么拿这个计算单元来说,它可以执行标量、向量和张量三种基础的运算。比如张量运算就是专门用来加速AI应用中的矩阵运算。它也就叫做所谓的3D Cube 单元,它可以用一条指令完成两个16乘16的矩阵的相乘运算。
那么除了芯片的硬件结构之外,同样非常重要的就是芯片编程的方法和软件架构的设计和实现。英伟达GPU之所以在人工智能领域大放异彩,并且得到非常广泛的应用,GPU芯片的性能提升固然重要。但是更重要的是,它推出了成熟且易用的编程框架CUDA。相比之下FPGA的编程难度极大,这也在很大程度上限制了FPGA的广泛使用。那么对于这种AI专用芯片,昇腾AI处理器也提供了一个多层的软件栈和开发工具链,来帮助开发者更好的使用昇腾。通过软件的多样性,也能在很大程度上弥补专用芯片灵活性不足的劣势。
这个软件栈可以分为4层,最底下的是处理器的计算资源。比如前面提到的AI核心、CPU,还有负责数字视觉的计算模块等等;再往上是一些标准的加速库,负责给硬件输出算子层面的任务,此外还有任务调度器和一些预处理的模块;然后再往上就是框架层,顾名思义它就是用来调度和管理深度学习框架,并且生成离线模型用的。值得注意的是昇腾AI处理器不仅支持主流的深度学习框架,还支持华为自研的名叫MindSpore的深度学习框架。那么通过MindSpore的深度学习框架产生的神经网络模型,可以直接运行在昇腾AI芯片上,而无需进行硬件的适配和转换,这就极大的提升了开发效率。这个软件栈的最后一层就是应用层,它的抽象程度最高,封装集成了很多专用领域的计算引擎,比如针对计算机视觉,还有针对语言文字处理的算法封装等等。用户也可以直接拿过来进行调用。那么除了这几个大的逻辑层次之外呢,昇腾的软件栈还提供了一个完整的开发工具链MindStudio ,包括编译、调试、性能分析、模型转换等等。
介绍了硬件架构和软件栈,我们还需要最后一个大的环节来完成整个生态的闭环,那就是提供结合软硬件的系统级解决方案。这个其实是一个目前芯片界的发展趋势。那么不管你是CPU、GPU、FPGA,还是像这样的AI专用芯片,其实都是在遵循这个规律进行发展。简单来说呢,就是芯片公司不仅要提供牛逼的芯片,除此之外他们还需要提供好用的软件和开发工具。 就像前面介绍的软件栈,再然后呢,你最好还要提供完整的参考设计以及软硬件系统,让大家拿过来就能用。同样的昇腾也提供了一系列的硬件产品。从最小的加速模块到推理或者是训练用的加速卡,再到专用的服务器,甚至是由多个服务器阵列组成的计算集群,这样也构建了一个涵盖终端边缘以及云计算产品的产品组合,使得用户可以根据自身的实际需要选择合适的硬件产品。这个也就是华为所说的全场景覆盖。
最后来总结一下今天的主要内容。我们从硬件、软件和生态三个角度介绍了华为的昇腾AI芯片。我们还深入的探讨了华为自研的达芬奇架构以及MindSpore 深度学习框架的一些技术特点。同时我们也看了一些业界的发展趋势,也就是以硬件为基础,通过软件扩展灵活性和易用性。然后围绕软硬件去打造系统级的解决方案,并且由此构建一个完整的生态系统。
原文链接:http://www.eepw.com.cn/zhuanlan/273666.html