职场小钢炮 职场小钢炮男主角

本文经授权转载自微信公众号:一盘散沙的工作间

职场小钢炮 职场小钢炮男主角

文章插图
已经2017年了,从90年代初的品牌机流行,90年代末的组装机流行,2000-2010桌面级逐渐被移动PC/Mac取代,一直到现在移动终端大行其道,攒机似乎已经走过一个完整的生命周期 。而因为2008年老黄开始攒GPGPU的大招,一直到2014年开始深度学习的逐渐兴起,台式家用机开始扮演起另外的角色:家用作坊小钢炮 。
一直在掉坑的我在此拿出一些心得,与大家分享 。
显卡篇
首先要说明一点,在家搞深度学习不是在云端部署用于深度学习的卡那样,所以NVidia的Tesla系列主打单精度的计算显卡、Quadro系列双精度计算卡固然好,但是性价比实际不堪一击,参数具体可以参考wikipedia的介绍,这种东西实际上很多没有必要去官网找的原因是,官网更像一个货柜摆放复杂的大卖场,诱导你多停留一段时间 。
图:最新一代可以用于计算的桌面级游戏显卡
展开全文
图:最新3代可以用于计算的服务器级计算显卡
深度学习是一种概率推断工具,这几年大量应用于人工智能应用(图像、视频、语音的识别与合成、自然语言处理、标注、标签、翻译、对话等),这跟发射火箭需要的高精度计算以及数据纠错(ECC)不一样,一个深度神经网络对单个参数精度的依赖其实很低,不仅不需要双精度计算能力,还经常出现一些参数量子化、网络压缩等小技巧,因此能看到Tesla系列的显卡和此处的10x0系列游戏卡一样,都是设计成为极高的单精度计算能力和极低的双精度计算能力的 。所以在生产设计之初这些卡就注定是为了深度学习而生的 。
实际上,如果你主要跑的是LSTM这种结构的应用(比如文本、语音、OCR),参数比较少的时候,1060的6GB显存已经足够,当然它的算力有些乏善可陈了(3.8T/睿频4.4T) 。但如果你只跑计算机视觉的训练,如大规模残差网络(在单机跑一个152层的ResNet单卡吃7G显存,可以8卡并行),如果你的公司不提供算力,你也不喜欢直接在云平台上花钱训练的化,那么可能一个大显存的Titan X Pascal (12GB)更适合你 。1080、1070性能就比较中庸,价格适中(3000-5000价位) 。这个根据个人的兴趣和钱包综合选择即可 。
有人想要问了,我有钱,还是想买个人用的M系列(M40,M60)、P系列(P100)等显卡,而且想多卡并行,该怎么办?这个已经脱离个人家用作坊的定义了,价格从几十万到一百万不等,建议还是直接找NVidia原厂、华硕等能提供质保的大厂提供销售服务 。这些定制的服务器往往一块主板能插多块显卡,去年推出的DGX-1采用了更好的显存技术(HBM2)和更好的数据传输总线方案(NVLink),这让存取显存以及显存-内存互拷效率更高,显卡在保持性能的同时还可以保证采用被动散热方案(不采用带显卡风扇的设计,节省空间)
还有人问,我没有那么有钱,但还是想买双卡GPU做训练,这个问题已经牵涉到主板的选择,我们放到后面再讨论,但可以先说结论:强行上双卡,会极大的拉低整机性价比,而且最终训练效果的提升未必如你想象的那么好 。如果你还要说『我不听我不听』,那请看完本篇 。
内存/存储篇
很多人会觉得,存储跟深度学习有个毛关系?我们先来看一下一个优化得不好的深度学习训练任务数据pipeline长什么样子:
准备阶段:
定义Symbol和图结构
定义Symbol和图结构
数据训练阶段:
for i in num_of_epoch:
for k in num_of_batch:
for j in num_of_batch_size: