用不到1000美元攒一台深度学习用的超快的电脑:继续深度学习和便宜硬件的探奇!

简介:



是的,你可以在一个39美元的树莓派板子上运行TensorFlow,你也可以在用一个装配了GPU的亚马逊EC2的节点上跑TensorFlow,价格是每小时1美元。是的,这些选择可能比你自己攒一台机器要更现实一点。但是如果你和我是一样的人,你绝对想自己攒一台奇快无比的深度学习的电脑。

好吧,一千块钱对于一个DIY项目来说是太多了。但是一旦你把机器搞定,你就能构建数百个深度学习的应用啦,从拥有增强大脑的机器人到艺术创作(至少这是我为花这些钱找的理由)。最差的理由也是,这个机器至少能轻松打败那个2800美元的Macbook Pro笔记本。除了用电多一点,所有的性能都比Macbook强。另外这台电脑很容易被升级,从而能保证它的性能可以领先笔记本好几年。

从上世纪80年代后我就再没攒过电脑。我也相当担心花好几百块,最终搞一堆我自己装不出来的零件(或是攒出来了,但可能没法正常工作)。不过我要告诉你,攒机是可以的!另外,整个过程也很好玩。最后你能拥有一台通用的电脑,并能做预测,同时比笔记本快20多倍。

下面是购买清单和一些细节建议

主板

主板有不同的尺寸规格。因为我不想用多个GPU,所以最便宜最小的主板标准尺寸是mini-ITX,对这个项目是够用了。我的最低要求是要有一个PCIe插槽给GPU用,有两个DDR4的内存插槽。最后我买的是华硕的 Mini ITX DDR4 LGA 1151 B150I PRO GAMING/WIFI/AURA主板,在亚马逊上卖125美元。还附送了一个WiFi的天线。这对于在地下室里用这个电脑是太方便了。

◇机箱

机箱不太重要,也非常便宜。因为DIY电脑的主要客户都是游戏玩家,所以机箱的形状和颜色也是五花八门。机箱的尺寸应该和主板配套,所以我的机箱需要支持mini-ITX。我买的是Thermaltake Core V1 Mini ITX Cube机箱,在亚马逊上卖50美元。

◇内存

我不敢相信现在内存有多便宜。你需要买和主板配合的DDR4型的内存(几乎网上找到的都是这个类型),大家的价格都差不多。我用129美元买了两条8GB of Corsair Vengeance内存。

这个带LED灯的内存条让我多花了5美元,因为亚马逊的用户评价上说“对于没法在机箱里装足够多LED灯的,这个内存是最佳选择。”如果你如我一样是在地下室里攒机,也不在乎机箱里面的美感,那你肯定会非常难在机箱里找到零件。

◇CPU

我看了一下网上的CPU评测比较,认为比较慢的CPU应该没什么问题,因为我没什么任务是要高速CPU的(除了训练神经网络,而我会用GPU来训练)。但我也受不了一台电脑,里面有一个相对其他部件落后三代的CPU。最后我花了214美元买了Intel I5-6600 CPU。

大部分亚马逊上能找到的CPU都是合适的。我没花额外的20美元去买I5-6600K。与I5-6600型相比,除了能超频,其他功能都一样。但通过系统可靠性来换取10%的速度提升对于我来说是够疯狂的。不过我承认,在我开始想着自己攒机后,我有些后悔了。所以谁知道哪?攒机会改变你的生活样式。可能买一个可超频的CPU会少一些后悔。但另一方面,也许去除掉多余的选择能保护你自己,不会自己作死。

◇硬盘

我也无法相信现在硬盘有多便宜了。用50美元我买了一个1TB SATA硬盘。固态硬盘会更快,但贵很多。而且深度学习的程序一般都不会是高I/O依赖的,因为一般程序都是拉取一批数据进内存,然后算很久。如果你有很多的文件传输任务,或是仅仅是想确保比你朋友的Macbook跑应用快很多,那我会买一个固态硬盘,比如这个三星的850 EVO 250GB 2.5-Inch SATA III Internal SSD,250G的要98美元。

这些硬盘让我意识到,苹果是多么会宰人。为了Macbook Pro有250G的额外硬盘容量,你要花200美元!

◇显卡/GPU

选哪款显卡是最重要也是最难的问题。对于几乎所有的机器学习应用,你都需要一个英伟达的显卡,因为只有英伟达有最重要的CUDA框架和CuDNN库,所有的机器学习框架(包括TensorFlow)都依赖它们。

作为一个非GPU专家,我发现与之相关的名词术语是够让人糊涂的。但下面是非常基本的选购指标。

可能对深度学习最重要的指标就是显卡的显存大小。如果TensorFlow不能把模型和当前批次的训练数据存进GPU的显存,它就会失败并转向使用CPU,从而让GPU变成废物。

另外一个重要的考虑就是显卡的架构。英伟达最新依次推出的架构叫“Kepler”,“Maxwell”和“Pascal”。这些架构的主要区别就是速度。例如根据这个基准评测,Pascal Titan X的速度是Maxwell Titan X的两倍。

机器学习的大部分论文都是用的TITAN X显卡。性能不错,不过够贵,都要1000美元以上,哪怕是旧一点的版本。大部分搞机器学习且没多少预算的人都用的英伟达的GTX 900系列(Maxwell)或是GTX 1000系列(Pascal)。

想找出一块显卡的架构,你可以看看英伟达的那个极其让人混淆的命名系统:9XX卡使用的是Maxwell架构,而10XX是用的Pascal架构。但一个有更高的主频和更大的显存980可能还是比一个1060要快。

你可能必须对不同架构的英伟达GPU有所了解。但最重要的是,无论是9XX还是10XX显卡,都会比你的笔记本快一个数量级。不要被这些选项搞晕了,如果你还没有用过GPU,用它会比你现有的系统要快很多。

我买的是GeForce GTX 1060显卡,3GB显存,花了195美元。用它比我的Macbook要快近20倍。但对有些应用,它还是偶尔会出现显存内存不足的情况。所以我也许应该多花60美元来买一个GeForce GTX 1060 6GB显存版。

◇电源

我花了85美元买了一个650W的电源。我的经验是,电器如果电源出了问题是非常头疼也很难修的,所以不值得为此省钱。另一方面,我的系统的峰值负载从来没有超过250瓦。

◇散热器

我还记得我工作的第一家创业公司是把服务器放到壁橱里面的。即使隔着壁橱的门,风扇的噪声还是出奇的大。这样的日子似乎是早已过去了。不过650瓦的电源让你的机器耗能是笔记本的10倍,而能量总是要找到一个出口的地方。可能不是必须的,但是我还是用35美元买了一个超级的散热器——Master Hyper 212 EVO。这让CPU始终运行在低温状态,且系统超级安静。

◇概览

Component Price
Graphics Card $195
Hard Drive $50
CPU $214
Case $50
Power Supply $85
Heat Sink $35
RAM $129
Motherboard $125
Total $883

要最后能用,你还需要有显示器、鼠标和键盘。这些东西一般容易搞到(我的地下室里到处都是)。合计价格是883美元,因此想花1000美元的话,还能再升级一些东西。


装机


所有包裹都到齐后我是相当的兴奋,然后我发现装机是容易,但靠不住。花了我大概一个小时,按照每个部件的说明书就把电脑组装起来了。最后却点不亮。我不得不更换了主板,相当沮丧但还OK。

第二次组装时,我把所有的部件放在一个纸箱子上连接起来,先确定是不是都能正常工作。

基本上,如果你把每个东西都能插入到看起来能恰当地匹配的地方,就应该是OK的。

图1 放在桌子上的半成品电脑,只连接了最少的部件来测试

图2 装上超大散热器后的电脑,看起来很恐怖

图3 从上面看下去,硬盘已经装进去了

启动电脑


安装最新版本的Ubuntu会让你的生活变得容易得多,因为新版本支持几乎所有的深度学习的软件。你可以把一个镜像存到一个USB盘里,然后按照它的简单的一步一步指导来安装。在上世纪90年代,我需要和各种驱动程序去斗争来安装Linux桌面,不过现在的安装过程已经变得超级容易。

新的Ubuntu操作系统也非常的棒。我现在经常使用我自己组装的这台电脑。拥有大内存、相对快速的CPU和轻量级的操作系统,它是我家里最快的计算机。


安装CUDA、OpenCV

和TensorFlow


为了能用你的超酷的深度学习机器,你需要先安装CUDA和CudNN。最新的CUDA版本是8.0,CudNN是5.1。从抽象的角度看,CUDA是一个API和编译器,能让其他的程序为通用应用使用GPU。而CudNN则是一个库,主要设计来让神经网络在GPU上跑的更快。你需要从英伟达的官网NVIDIA website上下载这两个软件。

OpenCV 是一个开源的库,很多应用使用它来做图像处理。现在最新的版本3.1和最新的CUDA版本不兼容。你可以通过设置CUDA_GENERATION标志成Kepler、Maxwell或是Pascal(取决于你买的GPU型号)来让他们兼容。下面是下载OpenCV和安装设置它的命令序列:

git clone https://github.com/opencv/opencv.git \

&& cd opencv \

&& mkdir build \

&& cd build \

&& cmake .. \

&& make -j3 \

&& make install

最后,安装TensorFlow变成了这些天里最简单的工作。只要按照这个网站上的说明操作就行了。

想看看GPU的支持是不是成功,你可以运行这个TensorFlow的测试程序,或是执行下面的命令:

python -m tensorflow.models.image.mnist.convolutional

这应该能开始运行一个模型而没有报错。

有趣的部分来了!

现在你已经花了近1000美元和无数的时间来装机和装软件,是时候回收你的投资啦!GPU让程序运行的非常快,所有你需要一些能利用这个速度的应用。幸运的是有很多有趣的事情可以干。

实时识别附近的物品


装一个便宜的USB摄像头或是带有摄像头的树莓派板子在你家外面。你就能用我在之前的100美元的TensorFlow机器人里所介绍的RPi摄像头模块来很容易地制作一个树莓派派视频流应用。


YOLO


YOLO包能完成拍摄同时的实时物体识别。用Macbook的话,我发现物体识别需要3到4秒。但用GPU的话,我能得到一个实时的结果,而且准确率是非常高。

按这个YOLO_tensorflow 项目的介绍,可以很容易地使用YOLO模块运行在TensorFlow上。也可以安装“Darknet”,这是一个不同的深度学习框架。YOLO最初就是设计来用于它的。

git clone https://github.com/pjreddie/darknet

cd darknet

make

Darknet安装完后,你可以用下面的命令来让它处理图像:

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

因为树莓派摄像头仅仅只是把文件放到一个Web服务器上,你可以直接让Darknet去连接那个文件来做实时流里的物体识别。下面的视频是我在车库里对外面发生的堵车进行的物体识别:



给你的树莓派机器人

一个增强的大脑


我之前写的这个《只要100美元的TensorFlow机器人》里,我发现可以在只值30美元的硬件上运行和应用深度学习。不幸的是,最让我失望的事情是机器人要花好几秒才能完成物体识别,因此让机器人做实时的决策就不行了。现在如果机器人用这个新的GPU机器,就不仅仅能做实时物体识别,还能每秒处理大概12-20帧的图像。

如果你依据我在GitHub上的这个说明,你就能攒一个机器人出来,让它从摄像头里获取容易处理的视频流。

我的朋友Shawn Lewis教会了我这篇文章里所需的大部分技能,所以我把我的两个树莓派机器人拿到了他的办公室。他和其他很多机器人专家有一个梦想,就是让机器人能给他们拿啤酒。下面是这些机器人为地上的啤酒战斗的视频。

如果你仔细看视频开始部分里的电脑显示器画面,就会发现Shawn的这个电脑实际上是用它的GeForce 980显卡在为两个机器人拍摄的视频做实时的物体识别。他宣称他的这块显卡可以同时处理四路视频输入而不会内存溢出。

搞点艺术创作


你可以用神经网络干的好玩的事情之一就是复制谷歌的Deep Dream干的事情。尽管你可以不用GPU也能完成,但会花很长的时间。本质上讲,这个事就是修改输入的图片来找到神经元里得到最大反馈的图片,因此这个任务有非常大的计算量。有很多种方式来完成修改,结果一般都非常的诡异和酷。

一个直接能用的很好的教程就是谷歌公开的这个Deep Dream 代码。

你需要安装Jupyter notebook服务器(你总是需要的!)和Caffe。

接着按照谷歌的教程把你的朋友的脸插进去。使用这个新的机器,新的图片只用几分钟就出来了,而不是好几小时。修改出来的图片是很好玩的。

图4 我的邻居Chris Van Dyke和Shruti Gandhi站在我的车库里,照片被我的Deep Dream程序给涂鸦了一把

图5 我朋友Barney Pell和他的国际象棋生日蛋糕

图6 这是我运行Deep Dream程序的机器自己的图片。看起来像是满屏都是狗(可能是因为训练这个模型的ImageNet数据里面都是狗的图片。ImageNet数据集里面包括了120多种不同的狗)

如果你想搞更疯狂的事,这里是基于Deep Dream由TensorFlow实现的Neural Style。出来的效果更神奇,你可以在这个脑洞大开的博文里看到部分的成果。

原文发布时间为:2017-02-15

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
4月前
|
机器学习/深度学习 人工智能 前端开发
BladeDISC 深度学习编译器问题之BladeDISC在新硬件支持方面如何解决
BladeDISC 深度学习编译器问题之BladeDISC在新硬件支持方面如何解决
|
4月前
|
机器学习/深度学习 人工智能 前端开发
BladeDISC 深度学习编译器问题之实现硬件适配如何解决
BladeDISC 深度学习编译器问题之实现硬件适配如何解决
|
4月前
|
机器学习/深度学习 存储 并行计算
深度学习之适应硬件的神经网络
深度学习的适应硬件的神经网络设计旨在最大限度地利用特定硬件平台的计算和存储能力,提高模型的执行效率和性能。这些硬件包括图形处理单元(GPU)、张量处理单元(TPU)、现场可编程门阵列(FPGA)和专用集成电路(ASIC)。
60 0
|
机器学习/深度学习 人工智能 算法
具有生物启发训练方法的物理深度学习:物理硬件的无梯度方法
具有生物启发训练方法的物理深度学习:物理硬件的无梯度方法
484 0
|
机器学习/深度学习
深度学习:不到25行代码实现口罩识别(电脑端可直接运行)
深度学习:不到25行代码实现口罩识别(电脑端可直接运行)
109 0
深度学习:不到25行代码实现口罩识别(电脑端可直接运行)
|
机器学习/深度学习 算法框架/工具 异构计算
【教程】如何利用深度学习硬件的“闲置时间”来挖矿
最近比特币价格一路飙升,您可以利用深度学习硬件的“闲散时间”来挖矿从而获取利润。本文作者自己写了一个GPU监视器gpu_mon,定期检查追踪GPU。如果GPU处于闲置状态,gpu_mon将运行您在config文件中指定的程序。
5095 0
下一篇
无影云桌面