经 OReillyData@Lukas Biewald 许可转载
编者注:有关此主题的更多内容,请查看即将于 2017 年 3 月 13 日至 16 日在圣何塞举行的 Strata+Hadoop 世界大会上的深度学习主题安排。
是的华硕显卡超频软件教程,您可以在 39 美元的 Raspberry Pi 板上运行 TensorFlow,也可以在配备 GPU 的 Amazon EC2 节点上运行 TensorFlow华硕显卡超频软件教程,每小时 1 美元。 是的,这些选择可能比自己建造机器更现实。 但如果你和我是同一个人,你肯定想构建一台速度极快的深度学习计算机。
好吧,对于 DIY 项目来说,一千美元太多了。 但是一旦你把机器放下来,你就可以构建数百个深度学习应用程序,从具有增强大脑的机器人到艺术创作(至少这是我花钱的理由)。 最糟糕的原因是,这款机器至少可以轻松击败 2800 美元的 Macbook Pro 笔记本。 除了耗电多一点之外,所有性能都比Macbook好。 此外,这款电脑可以轻松升级,确保其性能领先笔记本数年。
自 20 世纪 80 年代以来,我就没有拥有过电脑。 我也很担心花费数百美元并最终得到一堆我无法自己组装的零件(或者我会保存它们,但它们可能无法正常工作)。 但我想告诉你,拯救机器是可以的! 另外,整个过程很有趣。 最后,您可以拥有一台可以进行预测并且速度比笔记本电脑快 20 倍以上的通用计算机。
以下是购买清单和一些详细建议:
◇主板
主板有不同的尺寸。 由于我不想使用多个 GPU,因此最便宜且最小的标准主板尺寸是 mini-ITX,这对于这个项目来说已经足够了。 我的最低要求是拥有一个用于 GPU 的 PCIe 插槽和两个 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 的 Corsair Vengeance 内存条。
这个带 LED 灯的内存模块花了我额外的 5 美元,因为亚马逊用户评论说“对于那些无法在机箱中安装足够 LED 灯的人来说,这个内存模块是最佳选择。” 如果你像我一样。 如果你在地下室组装一台电脑,并且不关心机箱内部的美观,那么你在机箱内找到零件肯定会非常困难。
◇中央处理器
我看了网上的CPU评估比较,认为慢一点的CPU应该没问题,因为我没有任何需要高速CPU的任务(除了训练神经网络,我会使用GPU来训练)。 但我也无法忍受一台 CPU 落后其他部件三代的计算机。 最后我花了214美元买了一个Intel I5-6600CPU。
您可以在 Amazon 上找到的大多数 CPU 都适用。 我没有花额外的 20 美元购买 I5-6600K。 与I5-6600型号相比,除了超频外,其他功能相同。 但用系统可靠性来换取 10% 的速度提升对我来说已经够疯狂的了。 但我承认,当我开始考虑建造自己的机器后,我有点后悔了。 那么谁知道呢? 抓住机会改变你的生活方式。 也许买一个可以超频的CPU会让你少一些后悔。 但另一方面,也许消除多余的选择可以保护自己免于自杀。
◇硬盘
我也不敢相信现在的硬盘有多便宜。 我花了 50 美元买了一个 1TB SATA 硬盘。 SSD 速度更快,但价格也更高。 而且,深度学习程序一般不依赖高I/O,因为大多数程序会将一批数据拉入内存,然后进行长时间的计算。 如果您有很多文件传输任务,或者只是想确保您可以比您朋友的 Macbook 更快地运行应用程序,那么我会购买固态硬盘,例如这款三星 850 EVO 250GB 2.5 英寸 SATA III 内部 SSD ,250G售价98美元。
这些驱动器让我意识到苹果在欺骗人们方面是多么擅长。 对于配备 250GB 额外硬盘容量的 Macbook Pro,您只需支付 200 美元!
◇显卡/GPU
选择哪种显卡是最重要也是最困难的问题。 对于几乎所有机器学习应用程序,都需要 NVIDIA 显卡,因为只有 NVIDIA 拥有最重要的 CUDA 框架和 CuDNN 库,所有机器学习框架(包括 TensorFlow)都依赖它们。
作为一名非 GPU 专家,我发现与之相关的术语令人困惑。 但以下是非常基本的采购指标。
也许深度学习最重要的指标是显卡的内存大小。 如果 TensorFlow 无法将模型和当前批次的训练数据存储到 GPU 内存中,它将失败并切换到使用 CPU,从而使 GPU 失效。
另一个重要的考虑因素是显卡的架构。 Nvidia推出的最新架构被称为“Kepler”、“Maxwell”和“Pascal”。 这些架构之间的主要区别在于速度。 例如,根据该基准测试,Pascal Titan X 的速度是 Maxwell Titan X 的两倍。
大多数机器学习论文都使用 TITAN X 显卡。 性能不错,但价格昂贵,即使是旧版本也要1000美元以上。 大多数从事机器学习又没有太多预算的人使用NVIDIA的GTX 900系列(Maxwell)或GTX 1000系列(Pascal)。
要了解显卡的架构,你可以看看Nvidia极其混乱的命名系统:9XX卡使用Maxwell架构,而10XX卡使用Pascal架构。 但具有更高时钟速度和更多内存的 980 可能仍然比 1060 更快。
您可能需要了解 NVIDIA GPU 的不同架构。 但最重要的是,无论是9XX还是10XX显卡,都会比你的笔记本电脑快一个数量级。 不要被这些选项淹没,如果您还没有使用 GPU,它会比您现有的系统快得多。
我花了 195 美元购买了一块具有 3GB 显存的 GeForce GTX 1060 显卡。 它比我的 Macbook 快了近 20 倍。 但对于某些应用程序,它仍然偶尔会耗尽视频内存。 所以我应该多花 60 美元购买 GeForce GTX 1060 6GB VRAM 版本。
◇电源
我花了 85 美元买了一个 650W 电源。 我的经验是,如果一个电器的电源出现问题,维修起来非常麻烦,也很难,所以在上面省钱是不值得的。 另一方面,我的系统的峰值负载从未超过 250 瓦。
◇散热器
我记得我工作的第一家初创公司将他们的服务器放在壁橱里。 即使隔着衣柜门,风扇的噪音也出奇的大。 这样的日子似乎已经一去不复返了。 然而,650瓦的电源让你的机器消耗的能量是笔记本的10倍,而能量总要找到出口。 可能没有必要,但我花了 35 美元买了一个超级冷却器 - Master Hyper 212 EVO。 这可以使 CPU 保持凉爽运行并且系统超级安静。
◇概述
成分
价格
显卡
195 美元
硬盘
50 美元
中央处理器
214 美元
案件
50 美元
电源
85 美元
散热器
35 美元
内存
129 美元
母板
125 美元
全部的
$883
为了最终使用它,您还需要显示器、鼠标和键盘。 这些通常很容易获得(我的地下室里到处都是)。 总价为 883 美元,所以如果你想花 1,000 美元,你仍然可以升级一些东西。
安装
所有的包都到了之后我很兴奋,然后我发现安装很简单,但是不可靠。 我花了大约一个小时按照每个组件的说明组装计算机。 最终还是没有亮起来。 我不得不更换主板,这非常令人沮丧,但还好。
在第二次组装过程中,我将所有零件放在纸板箱上并将它们连接起来,以确保它们都能正常工作。
基本上,如果您将所有东西都插入看起来合适的位置,那就应该没问题。
图 1 放置在桌子上的半成品计算机,仅连接了最少的组件以进行测试
图2 带有超大散热器的计算机看起来很糟糕。
图3 从上往下看,硬盘已经安装完毕。
启动电脑
安装最新版本的 Ubuntu 将使您的生活变得更加轻松,因为新版本支持几乎所有深度学习软件。 您可以将映像保存到 USB 驱动器,然后按照简单的分步说明进行安装。 在 20 世纪 90 年代,我必须与各种驱动程序斗争才能安装 Linux 桌面,但现在安装过程变得超级简单。
新的Ubuntu操作系统也很棒。 我现在经常使用这台我自己组装的计算机。 它具有大内存、相对较快的 CPU 和轻量级操作系统,是我家里最快的计算机。
安装CUDA、OpenCV
和 TensorFlow
为了使用你很酷的深度学习机器,你需要先安装 CUDA 和 CudNN。 最新的CUDA版本是8.0,CudNN是5.1。 从抽象的角度来看,CUDA是一个API和编译器,使其他程序能够将GPU用于通用应用程序。 CudNN 是一个主要旨在使神经网络在 GPU 上运行得更快的库。 需要从NVIDIA官网NVIDIA网站下载这两个软件。
OpenCV 是许多图像处理应用程序使用的开源库。 现在最新的3.1版本与最新的CUDA版本不兼容。 您可以通过将 CUDA_GENERATION 标志设置为 Kepler、Maxwell 或 Pascal(取决于您购买的 GPU 型号)来使它们兼容。 以下是下载 OpenCV 并安装和设置它的命令序列:
git 克隆 \
&& cd opencv \
&& mkdir 构建 \
&& cd 构建 \
&& cmake .. \
&& 使-j3 \
&& 进行安装
最后,安装 TensorFlow 成为当今最简单的工作。 只需按照本网站上的说明进行操作即可。
要查看GPU支持是否成功,可以运行这个TensorFlow测试程序,或者执行以下命令:
python -m tensorflow.models.image.mnist.卷积
这应该开始运行模型而不会出现错误。
有趣的来了!
现在您已经花费了近 1,000 美元和无数的时间来设置计算机和安装软件,是时候收回您的投资了! GPU 使程序运行速度非常快,因此您需要能够利用这种速度的应用程序。 幸运的是,有很多有趣的事情可以做。
实时识别附近的物品
在您家外面安装一个便宜的 USB 摄像头或带摄像头的 Raspberry Pi 板。 您可以使用我在之前的 100 美元 TensorFlow 机器人中介绍的 RPi 相机模块轻松制作 Raspberry Pi 视频流应用程序。
优洛
YOLO包可以在拍摄的同时完成实时物体识别。 使用 Macbook,我发现物体识别需要 3 到 4 秒。 但是使用GPU,我可以得到实时结果,而且精度非常高。
根据这个YOLO_tensorflow项目的介绍,您可以轻松使用YOLO模块在TensorFlow上运行。 还可以安装“Darknet”,这是一个不同的深度学习框架。 YOLO 最初就是为了它而设计的。
克隆
CD暗网
制作
Darknet安装完成后,可以使用以下命令让它处理图像:
./darknet 检测 cfg/yolo.cfg yolo.weights 数据/dog.jpg
由于 Raspberry Pi 摄像头只是将文件放在 Web 服务器上,因此您可以直接要求 Darknet 连接到该文件以进行实时流中的对象识别。 下面的视频是我在外面交通拥堵的车库中进行物体识别的视频:
适用于您的 Raspberry Pi 机器人
增强的大脑
在我之前的文章《TensorFlow Robot for only $100》中,我发现深度学习可以在仅价值 30 美元的硬件上运行和应用。 不幸的是,最令我失望的是机器人需要几秒钟才能完成物体识别,因此让机器人做出实时决策是不可能的。 现在,如果机器人使用这种新的GPU机器,它不仅可以进行实时物体识别,还可以每秒处理大约12-20帧。
如果您按照 GitHub 上的说明进行操作,您可以构建一个机器人,从摄像机获取易于处理的视频流。
我的朋友 Shawn Lewis 教了我本文所需的大部分技能,因此我将两个 Raspberry Pi 机器人带到了他的办公室。 他和许多其他机器人专家都梦想拥有能够为他们取啤酒的机器人。 下面是这些机器人在地上争夺啤酒的视频。
如果你仔细观察视频开头的电脑显示器屏幕,你会发现肖恩的电脑实际上正在使用其GeForce 980显卡对两个机器人拍摄的视频进行实时物体识别。 他声称他的显卡可以同时处理四个视频输入,而不会耗尽内存。
做一些艺术
使用神经网络可以做的有趣的事情之一就是复制 Google 的 Deep Dream 所做的事情。 虽然没有 GPU 也可以做到,但这需要很长时间。 本质上,这个东西就是对输入图像进行修改,找到得到神经元反馈最大的图像,所以这个任务的计算量非常大。 完成修改的方法有很多种,而且结果通常很奇怪而且很酷。
一个很好的可以直接使用的教程是Google公开的Deep Dream代码。
您需要安装 Jupyter 笔记本服务器(您总是需要它!)和 Caffe。
然后按照 Google 的教程插入你朋友的脸。 有了这台新机器,新图像只需几分钟而不是几小时即可生成。 修改后的图片非常有趣。
图 4:我的邻居 Chris Van Dyke 和 Shruti Gandhi 站在我的车库里,这张照片是用我的 Deep Dream 程序绘制的
图5 我的朋友巴尼·佩尔和他的国际象棋生日蛋糕
图 6 这是我运行 Deep Dream 程序的机器本身的图片。 看起来屏幕上全是狗(可能是因为用于训练这个模型的 ImageNet 数据充满了狗的图片。ImageNet 数据集包括超过 120 种不同种类的狗)
如果你想做一些更疯狂的事情,这里有 TensorFlow 基于 Deep Dream 实现的 Neural Style。 结果更加神奇,您可以在这篇富有想象力的博客文章中看到一些结果。
总结
您不需要花费数千美元购买比笔记本电脑更快的深度学习机器。 构建一台计算机并让它正常工作是一种有趣的体验,而且计算机是可以升级的。 现在我已经把显卡换成了同样架构的Titan X,这样所有的程序就不需要重新编译了。
总体来说,是盈利的。 这台机器的运行速度与亚马逊 1 美元/小时的 P2 实例一样快。 P2实例使用K80显卡,更大的显存只是老架构。 我主要用这个机器来进行模型训练,这也是做这个的主要目的。 好吧,这可能是下一篇博客文章的标题。
关于作者
卢卡斯·比瓦尔德
CrowdFlower 创始人兼首席执行官。 CrowdFlower始于2009年,是一个数据增强平台,可以帮助企业获得按需人力来收集和生成训练数据,并参与人机学习周期。 在获得斯坦福大学数学学士学位和计算机科学硕士学位后,卢卡斯领导了雅虎日本的搜索相关团队。 随后他前往 Powerset 担任高级数据科学家。 Powerset 于 2008 年被 Microsoft 收购。Lukas 还入选 Inc. 杂志的 30 Under 30 榜单。 卢卡斯也是一位围棋专家。