环境搭建 | 深度学习爱好者如何配置带GPU电脑环境
作者 | 沈浩
最近开始学习深度学习(Deep Learning)技术,特别是google的Tensorflow深度学习包开源后,深度学习已经成为大数据领域的重大计算革命,配合Teras顶层框架,使得Deep learning的学习成本降低。
目前Deep learning技术应用越来越广,一切数据都是图,CNN卷积神经网络技术充满了神奇的计算魅力。DL技术广泛应用于:图像处理、人脸识别、自动驾驶、聊天机器人、AI人工智能、机器语言翻译、图片推荐系统、声音处理、音乐作曲、机器写作等领域。
俺当时为了可能的深度学习,看很多文章都提及GPU(图形处理器)是实现DL的基本要素。因为不懂太多硬件需求,就买了新出的苹果电脑,带有两块GPU图形卡,结果悲剧了,目前的DL并不支持。
没办法,先用CPU作为处理器玩玩Teras的tensorflow吧。在处理3100张电影海报图片过程中,大概需要30分钟的建模训练时间;在另一个处理11000多张烟盒图片的VGG16建模训练大概需要2个小时,能忍受但自然需要考虑建模效率和时间问题了。
接下来开始寻找解决路径,首先想到的是采用云计算,目前Google Cloud和AWS都提供带有GPU的实例,这是一种比较理想的学习方式和工程层面的可扩展模式。
理由:
有一些深度学习课程本身就在AWS云中部署和提供教学案例及代码。
可扩展应用架构,比如linux的Ubuntu操作系统,已经安装或自动更新很多支撑包,大部分DL包也已经安装就绪,将来根据需要扩展GPU个数或存储空间等。
最低端的配置大概在1美金/每小时,看别人经验大致一个月需要5000人民币。
关键是google要翻墙,AWS服务区域也不是很明确是否适合大陆地区。
下面是google的GCE instance
自然就需要考虑是否可以自己配置带GPU的电脑来玩Deep learning。开始寻找这方面的信息了,其实过去自己组装过电脑,从使用Apple电脑后已经不熟悉组装电脑了,市场行情如何,大致多少钱,如何配置GPU和软件,价值如何?
恰好找到一篇国外文章,比较详细叙述了配置选型和安装过程,我把文章整理一些留个备份也供大家参考!
这是文章提到的电脑配置:
我没有查国内报价,大致体量可以换算一下。这台大致在14000人民币。最贵的就是GPU了,5000人民币左右。
电脑组件:
GPU ——Nvidia GTX 1080 Ti
GPU的重要性在于:
DL中的大多数计算是矩阵运算,如矩阵乘法。如果在CPU上完成,它们可能很慢。
由于我们在一个典型的神经网络中进行了数千次这样的操作,因此慢速度真的加起来就更慢了。
GPU相当方便地能够并行运行所有这些操作。它们有大量的内核,可以运行更多的线程。
GPU还具有更高的内存带宽,使其能够一次对一堆数据执行这些并行操作。
作者可选择的是Nvidia的几张牌:GTX 1070($ 360),GTX 1080($ 500),GTX 1080 Ti(700美元),最后是Titan X(1320美元)。
在性能方面:GTX 1080 Ti和Titan X类似,大致来说,GTX 1080比GTX 1070快25%,而GTX 1080 Ti比GTX 1080快约30%。
以下是作者提到采购GPU时要考虑的事项:
制造商:好像目前没得选,只能是Nvidia英伟达出品。英伟达多年来一直专注于机器学习,支撑GPU运算的CUDA工具包根深蒂固,它是DL从业者的唯一选择。
预算:泰坦X在这方面的表现非常糟糕,因为它提供与1080 Ti相同的表现约500美元。
一个或多个:我考虑挑选一些1070s而不是1080或1080 Ti。这样可以让我在两张卡上训练一个模型,或者一次训练两个模型。目前在多卡上训练一个模型有点麻烦,尽管随着PyTorch和Caffe 2的改变,GPU的数量几乎是线性缩放。另一个选择 - 同时训练两个模型似乎有更多的价值,但我决定现在获得一个更强大的卡,并在之后增加一个。
GPU内存:更多内存更好。有更多的内存,我们可以部署更大的模型,并在训练期间使用足够大的批量(这有助于梯度流)。
内存带宽:这使得GPU能够在大量内存上运行。这是GPU的最重要的特征。
考虑到这一切,作者选择了GTX 1080 Ti,主要是为了提高训练速度。今后再添加第二个1080 Ti。
中央处理器——i7最好
即使GPU是深入学习的MVP,CPU仍然重要。例如,数据准备通常在CPU上完成。如果我们要并行化所有这些数据准备,每个核心的内核和线程数量很重要。
为了保持预算,我选择了中档CPU,Intel i5 7500约为190美元。它比较便宜,但不够好,不能减慢事情。
编辑:考虑CPU,“大概是唯一的DL /多GPU最大的小问题,就是要关注的CPU /主板支持PCIe通道”。我们希望每个GPU都有16个PCIe通道,以便尽可能快地获取数据(PCIe 3.0为16 GB / s)。这意味着对于两张GPU卡,我们需要32个PCIe通道。如果选择的CPU只有16个车道。那么2个GPU将以2x8模式运行(而不是2x16)。这可能是一个瓶颈,导致图形卡的使用效果不理想。因此建议使用40线的CPU。
一个很好的解决方案将是像E5-1620 v4($ 300)这样的英特尔至强处理器。或者如果您想要像桌面i7-6850K($ 590)一样使用更高端的处理器。
内存(RAM)——32GB
如果我们要使用相当大的数据集,那么有很多内存是很好的。我有2支16 GB,总共32 GB的RAM为$ 230,并计划再购买另外32 GB。
磁盘——固态硬盘
需要一块快速的SSD磁盘,以保持操作系统和当前的数据运算存储,深度学习需要巨大数据集(如ImageNet-预先训练好的),如果慢转速硬盘不太好。
SSD:我记得当我第一个Macbook Air几年前,我以SSD的速度感到震惊。令我高兴的是,名为NVMe的新一代SSD已经开始上市。一个480 GB的MyDigitalSSD NVMe驱动器,230美元是很大的。这个宝贝以每秒千兆字节的速度复制文件。
硬盘——2 TB
虽然SSD已经变得越来越快,但硬盘已经变得越来越便宜。可以用来存储或备份大规模数据集。
母板
在选择主板时,能够支持两个GTX 1080 Ti,包括PCI Express通道数(最小为2x8)和2个卡的物理尺寸。此外,请确保它与所选的CPU兼容。一个华硕TUF Z270为$ 130是选择。如果您拥有Intel Xeon CPU,MSI - X99A SLI PLUS应该会很好。
电源——750W
经验法则:它应该为CPU和GPU提供足够的电力,加上额外的100瓦特。
英特尔i5 7500处理器使用65W,GPU(1080 Ti)需要250W,75美元的价格获得了一个Deepcool 750W Gold PSU。这里的“Gold”是指功率效率,即消耗的功率是多少作为热量浪费。
软件设置
硬件到位后需要安装支撑深度学习的软件了。具体细节keras文档有描述。
安装Ubuntu
大多数DL框架被设计为首先在Linux上工作,也支持其他操作系统。在Ubuntu安装期间,默认选项一般都能正常工作,尽量先默认安装选项。选择了以前的版本(16.04)。
接下来安装:
支持GPU运算的深度学习驱动程序和深度学习软件包、
GPU driver — 操作系统支持GPU的驱动程序
CUDA — 支持GPU运行通用代码的驱动程序.
CuDNN —支持运行深度神经网络的算法程序
安装Python3.6 通过Anacoda4.2的安装方式推荐
安装Jupyter Notebook
安装numpy,scikit-learn,scikit-image,pandas,matplotlib等(一般都安装好了)
安装HDF5
安装Tensorflow
安装PyTorch
安装Theano(可选,按吧有些案例是用的)
安装Keras
其他包,随用随按吧
Keras文档关于计算机的硬件配置说明 - https://keras-cn.readthedocs.io/en/latest/for_beginners/keras_linux/
推荐配置
如果您是高校学生或者高级研究人员,并且实验室或者个人资金充沛,建议您采用如下配置:
主板:X99型号或Z170型号
CPU: i7-5830K或i7-6700K 及其以上高级型号
内存:品牌内存,总容量32G以上,根据主板组成4通道或8通道
SSD: 品牌固态硬盘,容量256G以上
显卡:NVIDIA GTX 1080ti、NVIDIA GTX TITAN、NVIDIA GTX 1080、NVIDIA GTX 1070、NVIDIA GTX 1060 (顺序为优先建议,并且建议同一显卡,可以根据主板插槽数量购买多块,例如X99型号主板最多可以采用×4的显卡)
电源:由主机机容量的确定,一般有显卡总容量后再加200W即可
最低配置
如果您是仅仅用于自学或代码调试,亦或是条件所限仅采用自己现有的设备进行开发,那么您的电脑至少满足以下几点:
CPU:Intel第三代i5和i7以上系列产品或同性能AMD公司产品
内存:总容量4G以上
先可以玩玩Keras文档说明中的几个案例,都有详细的代码和说明。
一般我们也可以将这台配置的GPU电脑作为服务器,通过设置SSH Key和SSH tunnel用平时的苹果电脑远程访问进行深度学习算法建模,通过模型训练后将模型save后,在不带GPU的电脑调用load模型或weights模型,进行预测和分类。
这篇文章是看国外写的内容,我摘录了些内容,没有实际落实,现在还是CPU状态。
热文推荐
程序员想搞机器学习?看看Nodejs之父这一年摸爬滚打的心路历程
课程结合实例介绍使用TensorFlow开发机器学习应用的详细方法和步骤,着重讲解了用于图像识别的卷积神经网络和用于自然语言处理的循环神经网络的理论知识及其TensorFlow实现方法,并结合实际场景和例子描述了深度学习技术的应用范围与效果。 所有案例均来自讲师团队工作中的亲身实践,所选案例均是深度学习的经典应用,非常具有代表性。