电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>单片机>最基本的深度学习系统的硬件指南

最基本的深度学习系统的硬件指南

2017-09-22 | rar | 1.10 MB | 次下载 | 1积分

资料介绍

  

  由于深度学习的计算相当密集,所以有人觉得“必须要购买一个多核快速CPU”, 也有人认为“购买快速CPU可能是种浪费”。

  那么,这两种观点哪个是对的? 其实,在建立深度学习系统时,最糟糕的事情之一就是把钱浪费在不必要的硬件上。 本文将告诉你如何用最省钱的方式,来搭建一个高性能深度学习系统。

  当初,在我研究并行深度学习过程中,我构建了一个GPU集群 ,所以我需要仔细选择硬件。 尽管经过了反复的研究和推理,但当我挑选硬件时,我仍然会犯许多错误,并且当应用于实践中时,那些错误就展现出来了。 所以,在这里,我想分享一下我所学到的知识,希望你不会像我一样再陷入同样的陷阱。

  ▍GPU

  本文假设您将使用GPU进行深度学习。 如果您正在建立或升级您的系统,那么忽视GPU是不明智的。 GPU才是深度学习应用的核心,它能大大提升处理速度,所以绝对不能忽略。

  我在之前的文章中详细介绍了GPU的选择,并且GPU的选择可能是您的深度学习系统中最关键的选择。

  一般来说,如果您的资金预算有限,我推荐您购买GTX 680,或者GTX Titan X(如果你很有钱,可用它做卷积)或GTX 980(它性价比很高,但若做大型卷积神经网络就有些局限性了),它们在eBay上就能买得到。

  另外,低成本高性价比的内存我推荐GTX Titan。 之前我支持过GTX 580,但是由于新更新的cuDNN库显着提升了卷积速度,故而所有不支持cuDNN的GPU都已经过时了,其中 GTX 580就是这样一款GPU。 如果您不使用卷积神经网络,GTX 580仍然是一个很好的选择。

  

  你能识别上面哪个硬件会导致糟糕的表现? 是这些GPU的其中一个? 还是CPU?

  ▍CPU 要选择CPU,我们首先要了解CPU及它与深度学习的关系。 CPU对深度学习有什么作用? 当您在GPU上运行深度网络时,CPU几乎没有计算, 但是CPU仍然可以处理以下事情:

  在代码中写入和读取变量

  执行诸如函数调用的指令

  在GPU上启动函数调用

  创建小批量数据

  启动到GPU的数据传输

  所需CPU的数量

  当我用三个不同的库训练深度神经网络时,我总是看到一个CPU线程是100%(有时另一个线程会在0到100%之间波动)。 而且这一切立即告诉你,大多数深入学习的库,以及实际上大多数的软件应用程序,一般仅使用一个线程。

  这意味着多核CPU相当无用。 如果您运行多个GPU,并使用MPI之类的并行化框架,那么您将一次运行多个程序,同时,也需要多个线程。

  每个GPU应该是一个线程,但每个GPU运行两个线程将会为大多数深入学习库带来更好的性能;这些库在单核上运行,但是有时会异步调用函数,就使用了第二个CPU线程。

  请记住,许多CPU可以在每个内核上运行多个线程(这对于Intel 的CPU尤为如此),因此通常每个GPU对应一个CPU核就足够了。

  CPU和PCI-Express

  这是一个陷阱! 一些新的Haswell CPU不支持那些旧CPU所支持的全部40个PCIe通道。如果要使用多个GPU构建系统,请避免使用这些CPU。 另外,如果您有一个带有3.0的主板,则还要确保您的处理器支持PCIe 3.0。

  CPU缓存大小

  正如我们将在后面看到的那样,CPU高速缓存大小在“CPU-GPU-管线”方面是相当无关紧要的,但是我还是要做一个简短的分析,以便我们确保沿着这条计算机管道能考虑到每一个可能出现的瓶颈,进而我们可以全面了解整体流程。

  通常人们购买CPU时会忽略缓存,但通常它是整体性能问题中非常重要的一部分。 CPU缓存的片上容量非常小,且位置非常靠近CPU,可用于高速计算和操作。 CPU通常具有缓存的分级,从小型高速缓存(L1,L2)到低速大型缓存(L3,L4)。

  作为程序员,您可以将其视为哈希表,其中每个数据都是键值对(key-value-pair),您可以在特定键上进行快速查找:如果找到该键,则可以对高速缓存中的值执行快速读写操作; 如果没有找到(这被称为缓存未命中),则CPU将需要等待RAM赶上,然后从那里读取该值(这是非常缓慢的过程)。 重复的缓存未命中会导致性能显着降低。 高效的CPU高速缓存方案和架构,通常对CPU的性能至关重要。

  CPU如何确定其缓存方案,是一个非常复杂的主题,但通常可以假定重复使用的变量、指令和RAM地址将保留在缓存中,而其他不太频繁出现的则不会。

  在深度学习中,相同的内存范围会重复被小批量读取,直到送到GPU,并且该内存范围会被新数据覆盖。但是如果内存数据可以存储在缓存中,则取决于小批量大小。

  对于128位的小批量大小,我们对应于MNIST和CIFAR分别有0.4MB和1.5 MB,这适合大多数CPU缓存;对于ImageNet,我们每个小批量有超过85 MB的数据( ),即使是最大的缓存(L3缓存不超过几MB),也算是很大的了。

  由于数据集通常太大而无法适应缓存,所以新的数据需要从RAM中每个读取一小部分新的,并且需要能够以任何方式持续访问RAM。

  RAM内存地址保留在缓存中(CPU可以在缓存中执行快速查找,并指向RAM中数据的确切位置),但是这仅限于整个数据集都存储于RAM时才会如此,否则内存地址将改变,并且缓存也不会加速(稍后你会看到的,使用固定内存时则不会出现这种情况,但这并不重要)。

  深度学习代码的其他部分(如变量和函数调用),将从缓存中受益,但这些代码通常数量较少,可轻松适应几乎任何CPU的小型快速L1缓存。

  从这个推理结果可以看出,CPU缓存大小不应该很重要。下一节进一步分析的结果,也与此结论相一致。

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1TC358743XBG评估板参考手册
  2. 1.36 MB  |  330次下载  |  免费
  3. 2开关电源基础知识
  4. 5.73 MB  |  6次下载  |  免费
  5. 3100W短波放大电路图
  6. 0.05 MB  |  4次下载  |  3 积分
  7. 4嵌入式linux-聊天程序设计
  8. 0.60 MB  |  3次下载  |  免费
  9. 5基于FPGA的光纤通信系统的设计与实现
  10. 0.61 MB  |  2次下载  |  免费
  11. 651单片机窗帘控制器仿真程序
  12. 1.93 MB  |  2次下载  |  免费
  13. 751单片机大棚环境控制器仿真程序
  14. 1.10 MB  |  2次下载  |  免费
  15. 8基于51单片机的RGB调色灯程序仿真
  16. 0.86 MB  |  2次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33564次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6653次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537796次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191185次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费