现在说AI是未来人类技术进步的一大方向,相信大家都不会反对。而AI和芯片技术的关系主要体现在两大方面:第一,AI的发展要求芯片技术不断进步;第二,AI能直接促进于芯片技术的进步。
未来的AI硬件平台,一定是一个异构系统。Training应用一般是CPU+GPU,这方面Nvidia的CUDA已经比较好的解决了异构计算的问题。但对于一个Inference硬件平台来说,异构的环境要复杂的多。在一个支持Inference的平台中,除了CPU,GPU,很可能还会有DSP,ASP,硬件加速器和FPGA。
这种环境如何有效的发挥各种硬件的效率,提供统一易用的软件接口,就是个很大的问题。之前的很多尝试,比如OpenCL,HSA都没能真正解决这个问题。而这个问题能不能解决,既是技术问题,也有利益上的角力。不管怎样,在AI应用的驱动下,这个问题会越来越凸显。AI的火热能不能推动这个问题的解决,很值得关注。
GoogleTPU的推出,让我们重新认识了脉动阵列(脉动阵列 - 因Google TPU获得新生)。而目前很多神经网络硬件加速器的设计,也都借鉴了脉动阵列,CGRA(Coarse-Grain Reconfigurable Architecure)这些“古老”的技术。实际上,我们现在需要解决的问题(比如卷积运算的加速),并不是一个全新的问题,前人已经有了很完整的研究。虽然AI是个全新的应用,但它却给了很多老的架构和技术新的机会。这也是一个很有意思的现象。
我从2000年开始用FPGA,一直把FPGA作为芯片验证的手段,而非直接的产品。但随着深度神经网络需求的爆发,FPGA作为inference的平台表现出很好的特性(灵活性和效率的平衡),在很多场景可以直接为应用服务。因此,可以预见,我们可以在FPGA领域看到快速的发展。首先,FPGA器件(Xilinx和Intel/Altera是主要供应商)本身的功能会越来越强大。Xilinx最新的高端FPGA已经是一个非常复杂的SOC平台了,除了传统的FPGA电路,还集成了多核CPU,硬件的视频编解码功能,DDR接口,PCIe接口等等,很适合做大规模的inference应用。另一方面,不管是Xilinx还是Intel,都在改进FPGA的软件开发环境,试图对深度学习提供更好的支持。
深度神经网络最强大的地方在于,通过对大量数据进行学习,可以自己对问题进行建模并提取feature或者作出判断。从某种程度上说,它已经强大到我们无法理解的程度了(或者说和我们人类获取知识的方式并不相同)。
而芯片设计和制造,都是在和大量数据以及复杂的模型打交道,利用神经网络的优势是自然而然的思路。另一方面,芯片设计和制造又是高度依赖自动化设计工具的领域,这些EDA工具中很多环节的算法也都有可能通过结合AI来获得更好的效果,或者提高生产效率。