AI将成为芯片技术的主要驱动力
人工智能,特别是深度学习,这几年爆发性的发展,很大程度上得益于芯片技术多年的积累。如果不是芯片技术已经发展到了一定的高度,能够给大规模的机器学习提供足够的处理能力,我们肯定看不到战胜人类顶尖棋手的AlphaGo。可以说,过去十几年驱动芯片技术发展的主要是通信,多媒体和智能手机这些应用。不夸张的说,是苹果在赶着芯片产业往前跑。而随着这些应用增长放缓,相信未来赶着我们向前跑的主要会是各种AI的需求。当然,即使没有AI,芯片技术也会发展。这里我想和大家分享几个例子,个人感觉AI的驱动效应在这些技术上会有更明显的体现。 异构计算(Heterogeneous Computing)
按照Wikipedia的定义“Heterogeneous computing refers to systems that use more than one kind of processor or cores. These systems gain performance or energy efficiency not just by adding the same type of processors, but by adding dissimilar coprocessors, usually incorporating specialized processing capabilities to handle particular tasks”。首先,异构计算中使用多种类型的处理器是为了能够更好的提升整个并行处理系统的效率。比如下图就是高通的Snapdragon 820芯片的框图,可以看出它包括了各种类型的处理器和硬件加速器。这还没包括软件栈的复杂度。
同时,异构计算又面临更多的挑战“The presence of multiple processing elements raises all of the issues involved with homogeneous parallel processing systems, while the level of heterogeneity in the system can introduce non-uniformity in system development, programming practices, and overall system capability.” 简单来说也就是不一致性带来诸多问题。对于异构计算,Nvidia和AMD最早提出了一些标准的方法,主要面向在CPU+GPU的系统,比如CUDA和OpenCL。
目前来看,神经网络的Training使用CPU+GPU的硬件平台比较理想。而对于这类系统,Nvidia的CUDA已经做的很不错了。但对于一个Inference硬件平台来说,异构计算要复杂的多,除了CPU,GPU,系统里很可能还会有DSP,ASP(Application Specific Processor),硬件加速器和FPGA这些硬件模块,以及相应的固件和软件。在这种环境下,如何有效的发挥各类硬件的效率,提供统一易用的编程模型和软件接口,就是个很大的问题。之前的很多尝试,比如OpenCL,HSA(Heterogeneous System Architecture) Foundation,都没能真正解决这个问题。而这个问题能不能解决,既是技术挑战,也有利益上的角力。Intel,Nvidia,AMD,Qualcomm,ARM都有自己的算盘,都想推自己的标准。不管怎样,在AI应用的驱动下,硬件平台的多样性和效率要求的挑战会越来越明显。整个产业对AI的热情能不能推动这个问题的解决,很值得关注。
AI将成为芯片技术的主要驱动力
人工智能,特别是深度学习,这几年爆发性的发展,很大程度上得益于芯片技术多年的积累。如果不是芯片技术已经发展到了一定的高度,能够给大规模的机器学习提供足够的处理能力,我们肯定看不到战胜人类顶尖棋手的AlphaGo。可以说,过去十几年驱动芯片技术发展的主要是通信,多媒体和智能手机这些应用。不夸张的说,是苹果在赶着芯片产业往前跑。而随着这些应用增长放缓,相信未来赶着我们向前跑的主要会是各种AI的需求。当然,即使没有AI,芯片技术也会发展。这里我想和大家分享几个例子,个人感觉AI的驱动效应在这些技术上会有更明显的体现。 异构计算(Heterogeneous Computing)
按照Wikipedia的定义“Heterogeneous computing refers to systems that use more than one kind of processor or cores. These systems gain performance or energy efficiency not just by adding the same type of processors, but by adding dissimilar coprocessors, usually incorporating specialized processing capabilities to handle particular tasks”。首先,异构计算中使用多种类型的处理器是为了能够更好的提升整个并行处理系统的效率。比如下图就是高通的Snapdragon 820芯片的框图,可以看出它包括了各种类型的处理器和硬件加速器。这还没包括软件栈的复杂度。
同时,异构计算又面临更多的挑战“The presence of multiple processing elements raises all of the issues involved with homogeneous parallel processing systems, while the level of heterogeneity in the system can introduce non-uniformity in system development, programming practices, and overall system capability.” 简单来说也就是不一致性带来诸多问题。对于异构计算,Nvidia和AMD最早提出了一些标准的方法,主要面向在CPU+GPU的系统,比如CUDA和OpenCL。
目前来看,神经网络的Training使用CPU+GPU的硬件平台比较理想。而对于这类系统,Nvidia的CUDA已经做的很不错了。但对于一个Inference硬件平台来说,异构计算要复杂的多,除了CPU,GPU,系统里很可能还会有DSP,ASP(Application Specific Processor),硬件加速器和FPGA这些硬件模块,以及相应的固件和软件。在这种环境下,如何有效的发挥各类硬件的效率,提供统一易用的编程模型和软件接口,就是个很大的问题。之前的很多尝试,比如OpenCL,HSA(Heterogeneous System Architecture) Foundation,都没能真正解决这个问题。而这个问题能不能解决,既是技术挑战,也有利益上的角力。Intel,Nvidia,AMD,Qualcomm,ARM都有自己的算盘,都想推自己的标准。不管怎样,在AI应用的驱动下,硬件平台的多样性和效率要求的挑战会越来越明显。整个产业对AI的热情能不能推动这个问题的解决,很值得关注。
Dataflow VS Controlflow
严格的说,Dataflow架构本来是计算机体系结构中实现并行计算的一种软硬件架构。有自己一套完整的方法学。下图摘自Shaaban教授的课程[2], 就是dataflow architecture的一个概述。
但是,如果我们看这种架构的主要特征:1. 没有PC(Program Counter),也就是说没有复杂的程序流控制;2. 节点的处理由操作数(availability of operands)激活。简单来说这种架构是数据驱动的。这一点和深度神经网络Inference的需求是非常一致的,因为神经网络是分层顺序处理的,有大量的数据处理,但不需要复杂的控制流程。这也是为什么我们现在看到的很多神经网络加速器的主要工作都放在了数据流的优化上。[1]中就指出“For spatial architectures used in accelerators, we will discuss how dataflows can increase data reuse from low cost memories in the memory hierarchy to reduce energy consumption.” GoogleTPU的脉动阵列架构,虽然并不是个严格意义上的Dataflow Machine,但它也可是认为dataflow驱动的设计。
同时,Dataflow programming也是一种重要的编程模型。用Wikipedia的说法,就是“dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture. ”。而我们知道,Google的TensorFlow深度学习框架就是一个“open source software library for numerical computation using data flow graphs”.
另外一个例子是做深度神经网络加速的Startup公司,Wave Computing(同时指出cloud的training和inference)[2],把他们的架构称作“A Coarse Grain Reconfigurable Array (CGRA) for Statically Scheduled Data Flow Computing” 。具体来讲,“Wave uses a data flow computing on a hybrid coarse grain/fine grain reconfigurable array (CGRA) of processors in a Wave dataflow processing unit (DPU). In this model, data flows between software kernels, which are called data flow agents. Each agent is compiled and statically scheduled across a reconfigurable array of data flow processing elements. The entire data flow computation is managed autonomously by the agents without the need for the control or memory of a host CPU. ”
总的来说,dataflow驱动是深度神经网络的一大特点。因此在设计神经网络处理器的时候,其硬件架构和编程模型采用这些比较特殊的dataflow架构也是自然的选择。而目前很多神经网络硬件加速器的设计,也都借鉴了脉动阵列,CGRA(Coarse-Grain Reconfigurable Architecure)这些“古老”的技术。实际上,我们现在需要解决的问题(比如卷积运算的加速),并不是一个全新的问题,前人已经有了很完整的研究。虽然AI是个全新的应用,但它却给了很多老的架构和技术新的机会。这也是一个很有意思的现象。 Clockless设计
在Wave Computing的设计中还有一个很有意思的地方,就是采用了Clockless CGRA Synchronization,从而实现了“In the large-scale CGRA, data flows between clusters of PEs at a nominal frequency of 6.7 GHz without the need for FIFOs used in other Globally Asynchronous Locally Synchronous(GALS) schemes”。
Clockless(或者叫asynchronous circuit, or self-timed circuit)设计采用握手信号(handshaking)而不是clock信号来实现模块间的同步,从而摆脱传统IC设计中Clock tree的束缚,实现更低的功耗或者更快的处理。2006年的时候,当时的飞利浦电子孵化的一个startup(Handshake Solutions NV)实现了一个clockless的ARM9处理器。下图摘自[4],对比了clocked和clockless威廉希尔官方网站
。
但是,由于这种方法的特殊性,在缺乏EDA工具支持的情况下很难在大规模的芯片设计中实现,所以一直也没有很多应用。不知道在未来的专用神经网络处理器中,特别是在要求极低功耗的可穿戴应用中是不是又会看到它的身影。 Near-Data Processing和先进存储器
把深度神经网络的Inference放到离数据源更近的地方,可以降低整个系统的复杂度,减少不必要的数据搬移,从而优化功耗和成本。其中PIM(Processing in Memory)主要是把处理直接放在存储单元的位置,这需要在威廉希尔官方网站
(模拟信号)的层面重新设计存储器。而把处理放在sensor当中也是一大趋势,这里既可以是直接在sensor中用模拟或者混合信号威廉希尔官方网站
做一些处理,也可以是在传统的ISP中增加智能处理的功能。下图就是直接在memory cell做乘法和乘加的方法。[1]
Dataflow VS Controlflow
严格的说,Dataflow架构本来是计算机体系结构中实现并行计算的一种软硬件架构。有自己一套完整的方法学。下图摘自Shaaban教授的课程[2], 就是dataflow architecture的一个概述。
但是,如果我们看这种架构的主要特征:1. 没有PC(Program Counter),也就是说没有复杂的程序流控制;2. 节点的处理由操作数(availability of operands)激活。简单来说这种架构是数据驱动的。这一点和深度神经网络Inference的需求是非常一致的,因为神经网络是分层顺序处理的,有大量的数据处理,但不需要复杂的控制流程。这也是为什么我们现在看到的很多神经网络加速器的主要工作都放在了数据流的优化上。[1]中就指出“For spatial architectures used in accelerators, we will discuss how dataflows can increase data reuse from low cost memories in the memory hierarchy to reduce energy consumption.” GoogleTPU的脉动阵列架构,虽然并不是个严格意义上的Dataflow Machine,但它也可是认为dataflow驱动的设计。
同时,Dataflow programming也是一种重要的编程模型。用Wikipedia的说法,就是“dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture. ”。而我们知道,Google的TensorFlow深度学习框架就是一个“open source software library for numerical computation using data flow graphs”.
另外一个例子是做深度神经网络加速的Startup公司,Wave Computing(同时指出cloud的training和inference)[2],把他们的架构称作“A Coarse Grain Reconfigurable Array (CGRA) for Statically Scheduled Data Flow Computing” 。具体来讲,“Wave uses a data flow computing on a hybrid coarse grain/fine grain reconfigurable array (CGRA) of processors in a Wave dataflow processing unit (DPU). In this model, data flows between software kernels, which are called data flow agents. Each agent is compiled and statically scheduled across a reconfigurable array of data flow processing elements. The entire data flow computation is managed autonomously by the agents without the need for the control or memory of a host CPU. ”
总的来说,dataflow驱动是深度神经网络的一大特点。因此在设计神经网络处理器的时候,其硬件架构和编程模型采用这些比较特殊的dataflow架构也是自然的选择。而目前很多神经网络硬件加速器的设计,也都借鉴了脉动阵列,CGRA(Coarse-Grain Reconfigurable Architecure)这些“古老”的技术。实际上,我们现在需要解决的问题(比如卷积运算的加速),并不是一个全新的问题,前人已经有了很完整的研究。虽然AI是个全新的应用,但它却给了很多老的架构和技术新的机会。这也是一个很有意思的现象。 Clockless设计
在Wave Computing的设计中还有一个很有意思的地方,就是采用了Clockless CGRA Synchronization,从而实现了“In the large-scale CGRA, data flows between clusters of PEs at a nominal frequency of 6.7 GHz without the need for FIFOs used in other Globally Asynchronous Locally Synchronous(GALS) schemes”。
Clockless(或者叫asynchronous circuit, or self-timed circuit)设计采用握手信号(handshaking)而不是clock信号来实现模块间的同步,从而摆脱传统IC设计中Clock tree的束缚,实现更低的功耗或者更快的处理。2006年的时候,当时的飞利浦电子孵化的一个startup(Handshake Solutions NV)实现了一个clockless的ARM9处理器。下图摘自[4],对比了clocked和clockless威廉希尔官方网站
。
但是,由于这种方法的特殊性,在缺乏EDA工具支持的情况下很难在大规模的芯片设计中实现,所以一直也没有很多应用。不知道在未来的专用神经网络处理器中,特别是在要求极低功耗的可穿戴应用中是不是又会看到它的身影。 Near-Data Processing和先进存储器
把深度神经网络的Inference放到离数据源更近的地方,可以降低整个系统的复杂度,减少不必要的数据搬移,从而优化功耗和成本。其中PIM(Processing in Memory)主要是把处理直接放在存储单元的位置,这需要在威廉希尔官方网站
(模拟信号)的层面重新设计存储器。而把处理放在sensor当中也是一大趋势,这里既可以是直接在sensor中用模拟或者混合信号威廉希尔官方网站
做一些处理,也可以是在传统的ISP中增加智能处理的功能。下图就是直接在memory cell做乘法和乘加的方法。[1]
参考: 1. Vivienne Sze, Yu-Hsin Chen, Tien-Ju Yang, Joel Emer, "Efficient Processing of Deep Neural Networks: A Tutorial and Survey",arxiv.org/pdf/1703.09039.pdf 2. Dr. Chris Nicol, Chief Technology Officer, Wave Computing,"A Coarse Grain Reconfigurable Array (CGRA) for Statically Scheduled Data Flow Computing" 3. Muhammad E. Shaaban,"cmpe655-spring2017, Multiple Processor Systems" 4. Jens Sparsø,Technical University of Denmark,"Asynchronous circuit design A Tutorial" 5. Alex Graves1, et al., "Hybrid computing using a neural network with dynamic external memory" 关于Synopsys
Synopsys(Synopsys, Inc.,纳斯达克股票市场代码: SNPS)致力于创新改变世界,在芯片(Silicon)到软件(Software)的众多领域,Synopsys始终引领和参与全球各个科技公司的紧密合作,共同开发人们所依赖的电子产品和软件应用。Synopsys 是全球排名第一的电子设计自动化(EDA)供应商和全球排名第一的半导体接口IP供应商,同时也是软件质量和安全解决方案的全球领导者, 位列世界第15大软件公司,并荣选美国标准普尔500指数成分股龙头企业。Synopsys总部位于美国硅谷,成立于1986年,目前拥有11400多名员工,分布在全球100多个分支机构。2017年财年营业额预计26亿美元,拥有2600多项已批准专利。作为半导体、人工智能、汽车电子及软件安全等产业的核心技术提供商与驱动者,Synopsys的技术一直深刻影响着当前全球五大新兴科技创新应用:智能汽车、物联网、人工智能、云计算和信息安全。
自1995年进入中国市场以来,Synopsys已在北京、上海、深圳、西安、武汉、南京、厦门、香港、澳门九大城市设立机构,员工人数已达1098人,建立了完善的技术研发和支持服务体系,秉持“加速创新、推动产业、成就客户”的方针,与产业及合作伙伴携手共进、共同发展,成为中国半导体产业快速发展的优秀伙伴和坚实支撑。
参考: 1. Vivienne Sze, Yu-Hsin Chen, Tien-Ju Yang, Joel Emer, "Efficient Processing of Deep Neural Networks: A Tutorial and Survey",arxiv.org/pdf/1703.09039.pdf 2. Dr. Chris Nicol, Chief Technology Officer, Wave Computing,"A Coarse Grain Reconfigurable Array (CGRA) for Statically Scheduled Data Flow Computing" 3. Muhammad E. Shaaban,"cmpe655-spring2017, Multiple Processor Systems" 4. Jens Sparsø,Technical University of Denmark,"Asynchronous circuit design A Tutorial" 5. Alex Graves1, et al., "Hybrid computing using a neural network with dynamic external memory" 关于Synopsys
Synopsys(Synopsys, Inc.,纳斯达克股票市场代码: SNPS)致力于创新改变世界,在芯片(Silicon)到软件(Software)的众多领域,Synopsys始终引领和参与全球各个科技公司的紧密合作,共同开发人们所依赖的电子产品和软件应用。Synopsys 是全球排名第一的电子设计自动化(EDA)供应商和全球排名第一的半导体接口IP供应商,同时也是软件质量和安全解决方案的全球领导者, 位列世界第15大软件公司,并荣选美国标准普尔500指数成分股龙头企业。Synopsys总部位于美国硅谷,成立于1986年,目前拥有11400多名员工,分布在全球100多个分支机构。2017年财年营业额预计26亿美元,拥有2600多项已批准专利。作为半导体、人工智能、汽车电子及软件安全等产业的核心技术提供商与驱动者,Synopsys的技术一直深刻影响着当前全球五大新兴科技创新应用:智能汽车、物联网、人工智能、云计算和信息安全。
自1995年进入中国市场以来,Synopsys已在北京、上海、深圳、西安、武汉、南京、厦门、香港、澳门九大城市设立机构,员工人数已达1098人,建立了完善的技术研发和支持服务体系,秉持“加速创新、推动产业、成就客户”的方针,与产业及合作伙伴携手共进、共同发展,成为中国半导体产业快速发展的优秀伙伴和坚实支撑。