我喜欢深度学习……深度学习最近的成功是铺天盖地的:从图像分类和语音识别到图像标注、理解视觉场景、视频概览、语言翻译、绘图,甚至生成图像、语音、声音和音乐!...我希望它运行得快!结果令人震惊,需求也在增长。假设你是Google/Facebook/Twitter的工作人员:在你想办法“读懂”一张图片或视频的内容后,建立一个更贴近用户特征的模型(他们喜欢、聊谁、推荐什么),分享什么),你会做什么?你可能想做更多!也许您会使用某些版本的ResNet/Xception/denseNet将用户图像分类为数千个类别。如果你是互联网巨头的一部分,你有很多服务器和服务器场,所以理想情况下你想在这个现有的基础设施上运行深度学习算法。这曾经很好用......直到你意识到你用来分析文本语法结构的服务器现在必须执行比你过去运行单个图像分类时多一百万倍的操作。用户生成的数据流动得越来越快:现实生活中每分钟有300小时的视频!服务器场消耗大量电力,如果我们需要使用大量的基础设施来处理图像和视频,那么我们就需要建造大量的发电设备,或者使用更高效的方式对这些设备进行深度学习计算云。能源消耗问题很难解决,所以我们总是走提高效率的路线。然而,数据中心只是深度学习解决方案需要更多硬件和优化芯片的领域的一个方面。一个1,000瓦的计算系统对于自动驾驶汽车来说可能是可行的,但在许多其他应用中,功率是一个很大的限制。如无人机、机器人、手机、平板电脑等移动设备。它们都需要几瓦甚至不到1瓦的功率预算。还有很多消费类电子产品,如智能相机、增强现实眼镜等,对功耗的要求较低,用户可能出于隐私考虑不愿采用云计算解决方案。随着我们的家庭变得越来越智能,您会发现许多设备不断使用深度学习应用程序、收集和处理数据。所以...您需要新硬件,对吗?所以我们需要新的硬件,一种比英特尔至强驱动的服务器更高效的硬件。英特尔服务器CPU的功耗为100-150瓦,需要一个带冷却功能的超大型系统来支持其性能。还有哪些其他选择?图形处理器、GPUField-programmablelogicdevice、FPGA(Field-ProgrammableGateArray)定制芯片、专用集成电路、ASIC、芯片系统或SoC数字信号处理器、DSPFuturistic、AlienInvented、TechnologyDevelopedbyNewPhysicalLawsGPUGPU最初设计用于生成基于多边形网络的计算机图形。近年来,由于最近的计算机游戏和图形引擎领域的需求和复杂性,GPU积累了强大的处理性能。Nvidia是GPU领域的领导者,生产具有数千个内核的处理器,旨在以100%的效率工作。事实上,这些处理器也非常适合在神经网络和矩阵乘法中运行计算。请注意,矩阵向量乘法被认为是“令人尴尬的并行”,因为它可以通过简单的算法扩展来并行化(它们缺少分支以避免缓存信息丢失)。TitanX是训练深度学习模型最强大的助手之一。它拥有超过3,500个内核,每秒能够执行超过11万亿次浮点运算。英特尔的CPU和Nvidia的GPU之间的竞争推动了后者的增长,因为GPU的超多内核(~3500vs.IntelXeon的16个/XeonPhi的32个),使其GPU时钟比CPU快2~3倍。GPU核心是更复杂(分支预测和流)CPU核心的简化版本,但其中许多支持更高级别的并行性,因此性能更好。此类GPU擅长训练深度学习系统——卷积神经网络或递归神经网络。他们可以在几毫秒内批量运行128或256张图像。但它们的功耗也约为250瓦,需要一台完整的计算机才能运行,这会额外消耗150瓦。一个高性能GPU系统需要消耗至少400瓦的功率。这不适用于增强现实眼镜、无人机、手机、移动设备和小型机器人。对于未来的消费级自动驾驶汽车来说,这甚至是不可接受的。Nvidia正在开发更高效的设备,如TegraTX1、TX2(深度神经网络需要12瓦和约100Gflops性能,TX2需要更多)和更强大的DrivePX(250瓦,与TitanX大致相同)。这里还要注意,在自动驾驶汽车和智能相机中,实时视频是必需的,图像批处理是不可能的,因为视频需要实时处理以便及时响应。GPU的一般水平大约是每W5G-flops/s。如果我们想在移动系统中部署深度学习解决方案,我们需要一个更好的方法!来自FPGAXilinx等公司的现代FPGA设备是电子产品的乐高积木。我们可以使用它的电路作为构建块来构建整个定制微处理器和复杂的异构系统。近年来,FPGA开始制作越来越多的乘累加计算模块。顾名思义,这些DSP模块能够进行乘法运算,并且可以排列在一起以实现一定程度的并行性。我们将FPGA应用于神经网络已有10年的历史。我们的工作始于纽约大学YannLeCun的开创性工作,尤其是ClementFarabet。我们的协作努力产生了NeuFlow,这是一种用于运行神经网络的复杂数据流处理器。从2011年到2015年初,我们完善了一个全新的设计——nn-X。这项工作由BerinMartini和VinayakGokhale(来自我们办公室)领导。该系统可以在4瓦的功率预算下实现200G-ops/s,或50G-ops/s/W,这几乎是GPU性能的10倍。但是nn-X有两个大问题:不使用固定卷积引擎时利用率低内存带宽高第一个问题是因为nn-X使用固定的10x10卷积引擎,并且在执行3x3卷积时,只有9%的DSP单元得到有效利用。后来通过将12x12网格划分为4x4单元格的3x3卷积来解决这个问题。不幸的是,该系统还需要高内存带宽,因为它不使用数据缓存,需要从内存中读取输入并将结果直接存储在内存中。像这样的nn-X无法扩展,它的DPS单位永远不会超过75-80%的利用率。在设计上具有类似约束的系统也会在性能上受到约束。我们需要的是一个具有数据缓存的系统,可以使用任何一组DPS单元来高效(接近100%)利用资源。此类系统包括MicrosoftCatapult和我们的SnowFlake加速器,它们可以实现几乎100%的利用率(稍后会详细介绍)。Microsoft使用Altera器件实现创纪录的深度神经网络处理性能。不幸的是,它不是商业系统,而是微软数据中心的财产,所以它还没有对公众开放。中国科技巨头百度也加入了这一行列。定制SoC高通、AMD、ARM、英特尔和Nvidia都致力于将定制芯片集成到他们现有的解决方案中。Nervana和Movidius(现在均归英特尔所有)已经或正在开发聚合解决方案。在相同的技术节点上,SoC的性能大约是FPGA系统的10倍,在某些架构中甚至更高。随着SoC和处理器需要越来越少的功率,差异将来自新的集成内存系统和对外部内存带宽的有效利用。在这个领域,集成为系统级封装(SOP)的3D内存可以节省至少10倍的功率。DSPDSP已经存在很长时间了,它最初是为执行矩阵算法而设计的。但到目前为止,DSP还没有真正能够提供任何有用的性能或可以与GPU相媲美的设备。为什么是这样?主要原因是核心数量。DSP主要用于电信系统,不需要超过16或32个内核。它的工作量不需要那么多。相反,GPU负载在最近10~15年一直在增加,因此需要更多的核心。最终,从2006年左右开始,NvidiaGPU在性能上超越了DSP。德州仪器(TexasInstruments)仍在开发DSP,但我们还没有看到任何具有竞争力的性能。而且很多DSP已经被FPGA取代了。高通在其SoC中使用DSP,性能会有所提升,但没有足够的信息将其与其他解决方案进行比较。原文:https://medium.com/towards-data-science/hardware-for-deep-learning-8d9b03df41a【本文为专栏机器心原创翻译,微信公众号》机器心(id:almosthuman2014)》】点此阅读该作者更多好文
