深度学习有哪些硬件框架?

2020-07-06 10:26发布

1条回答
大泽九章
2楼 · 2020-07-15 23:06


深度学习具有极高的计算需求,要对深度学习应用进行开发并商业化,就需要找到合适的硬件配置。目前,在开发用于深度学习应用的高效硬件平台这一领域,竞争十分激烈。这里将介绍具体的硬件要求,并讨论未来对深度学习硬件的展望。


深度学习在这十年,甚至是未来几十年内都有可能是最热门的话题。虽然深度学习已是广为人知了,但它并不仅仅包含数学、建模、学习和优化。算法必须在优化后的硬件上运行,因为学习成千上万的数据可能需要长达几周的时间。因此,深度学习网络亟需更快、更高效的硬件。


众所周知,并非所有进程都能在CPU上高效运行。游戏和视频处理需要专门的硬件——图形处理器(GPU),信号处理则需要像数字信号处理器(DSP)等其它独立的架构。人们一直在设计用于学习(learning)的专用硬件,例如,2016年3月与李世石对阵的AlphaGo计算机使用了由1920个CPU和280个GPU组成的分布式计算模块。而随着英伟达发布新一代的PascalGPU,人们也开始对深度学习的软件和硬件有了同等的关注。接下来,让我们重点来看深度学习的硬件架构。


对深度学习硬件平台的要求


要想明白我们需要怎样的硬件,必须了解深度学习的工作原理。首先在表层上,我们有一个巨大的数据集,并选定了一种深度学习模型。每个模型都有一些内部参数需要调整,以便学习数据。而这种参数调整实际上可以归结为优化问题,在调整这些参数时,就相当于在优化特定的约束条件。




深度学习硬件(图片:英伟达)


百度的硅谷人工智能实验室(SVAIL)已经为深度学习硬件提出了DeepBench基准,这一基准着重衡量的是基本计算的硬件性能,而不是学习模型的表现。这种方法旨在找到使计算变慢或低效的瓶颈。因此,重点在于设计一个对于深层神经网络训练的基本操作执行效果最佳的架构。那么基本操作有哪些呢?现在的深度学习算法主要包括卷积神经网络(CNN)和循环神经网络(RNN)。基于这些算法,DeepBench提出以下四种基本运算:


矩阵相乘(MatrixMultiplication)——几乎所有的深度学习模型都包含这一运算,它的计算十分密集。


卷积(Convolution)——这是另一个常用的运算,占用了模型中大部分的每秒浮点运算(浮点/秒)。


循环层(RecurrentLayers)——模型中的反馈层,并且基本上是前两个运算的组合。


AllReduce——这是一个在优化前对学习到的参数进行传递或解析的运算序列。在跨硬件分布的深度学习网络上执行同步优化时(如AlphaGo的例子),这一操作尤其有效。


除此之外,深度学习的硬件加速器需要具备数据级别和流程化的并行性、多线程和高内存带宽等特性。另外,由于数据的训练时间很长,所以硬件架构必须低功耗。因此,效能功耗比(PerformanceperWatt)是硬件架构的评估标准之一。


当前趋势与未来走向




英伟达的GPU在深度学习硬件市场上一直处于领先地位(图片:英伟达)


英伟达以其大规模的并行GPU和专用GPU编程框架CUDA主导着当前的深度学习市场。但是越来越多的公司开发出了用于深度学习的加速硬件,比如谷歌的张量处理单元(TPU/TensorProcessingUnit)、英特尔的XeonPhiKnight'sLanding,以及高通的神经网络处理器(NNU/NeuralNetworkProcessor)。像Teradeep这样的公司现在开始使用FPGA(现场可编程门阵列),因为它们的能效比GPU的高出10倍。FPGA更灵活、可扩展、并且效能功耗比更高。但是对FPGA编程需要特定的硬件知识,因此近来也有对软件层面的FPGA编程模型的开发。此外,一直以来广为人所接受的理念是,适合所有模型的统一架构是不存在的,因为不同的模型需要不同的硬件处理架构。而研究人员正在努力,希望FPGA的广泛使用能够推翻这一说法。


大多数深度学习软件框架(如TensorFlow、Torch、Theano、CNTK)是开源的,而Facebook最近也开放其BigSur深度学习硬件平台,因此在不久的将来,我们应该会看到更多深度学习的开源硬件架构。


结语


感谢您的观看,如有不足之处,欢迎批评指正。


如果有对大数据感兴趣的小伙伴或者是从事大数据的老司机可以加群:


658558542  (☛点击即可加入群聊)


里面整理了一大份学习资料,全都是些干货,包括大数据技术入门,海量数据高级分析语言,海量数据存储分布式存储,以及海量数据分析分布式计算等部分,送给每一位大数据小伙伴,这里不止是小白聚集地,还有大牛在线解答!欢迎初学和进阶中的小伙伴一起进群学习交流,共同进步!


最后祝福所有遇到瓶颈的大数据程序员们突破自己,祝福大家在往后的工作与面试中一切顺利。

相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问