问耕 编译整理

量子位 出品 | "大众年夜众号 QbitAI

Macbook这种轻薄的条记本,是搞不了深度学习的。
亚马逊P2云做事,会给堆积越来越多的账单,换个便宜的做事,演习韶光又太长……

没办法,已经十多年没用过台式机的我,只能重新动手DIY装机,搭建一套自己的深度学习系统。
以下是我的系统搭建和测试过程。

一万元搭建深度进修系统硬件软件安装教程以及机能测试

硬件清单

之前,我在AWS亚马逊云做事上的花费是每月70美元(约480元公民币)。
按照利用两年打算,我给这套系统的总预算是1700美元(约11650元)。

GPU

肯定得买Nvidia,没有其他选择。
买两块还是一块?我想了想,还是先买一个性能更好的,往后有钱了再增加。
综合显存、带宽等成分,我终极选了GTX 1080 Ti,跟Titan X比较,性能差不了多少,但价格便宜不少。

CPU

虽然比不上GPU,但CPU也很主要。
从预算出发,我选了一颗中端产品英特尔i5 7500。
相对便宜,但不会拖慢全体系统。

内存

两条16GB容量的内存,统共是32GB。

硬盘

两块。

一块SSD硬盘运行操作系统和当前数据,我选的是MyDigitalSSD NVMe 480GB。
一块速率较慢的2TB容量HDD硬盘存储大的数据集(例如ImageNet)。

主板

为了往后的拓展,我得选能支持两块GTX 1080 Ti的主板。
末了的选择是:华硕TUF Z270。

电源

得为GPU何GPU们供应足够的电力供应。
英特尔i5 7500功耗是65W,一块1080Ti须要250W(往后还想加一块),以是末了选择了Deepcool 750W Gold PSU。

机箱

我屈服朋友的建议,选了Thermaltake N23机箱。
只是没有LED灯,伤心。

组装

组装过程按下不表,装机也是个手艺,末了效果如下图所示。

安装软件

提示:如果你想装Windows系统,最好先安装Windows,再装Linux。
要不然Windows会搅散启动分区。

安装Ubuntu

大部分深度学习框架都事情在Linux环境中,以是我选择安装Ubuntu。
一个2GB容量的U盘就能搞定安装,如何制作?

OSX用户参考这里:

https://www.ubuntu.com/download/desktop/create-a-usb-stick-on-macos

Windows用户参考这里:

https://rufus.akeo.ie/

我写这个教程的时候,Ubuntu 17.04版本刚刚发布,但是我选择了之前的16.04版本,由于老版本的干系文档可能更全一点。
其余,我选择的是Ubuntu桌面版本,不过关闭了图形界面X,电脑启动会进入终端模式。

如果须要图形界面,只须要输入:startx

及时更新

更新可以利用下面这个命令

深度学习堆栈

为了展开深度学习,我们须要如下软件来利用GPU:

GPU驱动:让操作系统和显卡可以对话

CUDA:能让GPU运行通用目的代码

CuDNN:CUDA之上的神经网络加速库

深度学习框架:TensorFlow等

安装GPU驱动

最新的驱动,可以参考官网

http://nvidia.com/Download/index.aspx

或者直策应用如下代码安装:

安装CUDA

可以从Nvidia下载CUDA,地址如下:

https://developer.nvidia.com/cuda-downloads

或者直接运行如下的代码:

安装好CUDA之后,下面的代码能把CUDA添加到PATH变量:

现在可以考验一下CUDA装好没有,运行如下代码即可:

删除CUDA或GPU驱动,可以参考如下代码:

安装CuDNN

我用的是CuDNN 5.1,由于最新的TensorFlow不支持CuDNN 6。
下载CuDNN,你须要创建一个免费的开拓者账号。
下载之后,用如下命令安装。

Anaconda

Anaconda是一个很棒的Python软件包管理器,我现在利用了Python 3.6版本,以是对应的利用Anaconda 3版本,安装如下:

TensorFlow

最盛行的深度学习框架,安装:

为了检讨一下TensorFlow安装好没有,可以运行MNIST看看:

该当能在演习过程中,看到loss的逐渐减少:

Keras

一个高等神经网络框架,安装非常大略:

PyTorch

深度学习框架届的新兵,但也值得推举,安装命令:

Jupyter notebook

Jupyter是一个交互式的条记本,随着Anaconda安装,我们要配置和测试一下:

现在打开 http://localhost:8888 ,该当就能看到Jupyter的界面。

我们可以把Jupyter设置成自动启动,利用crontab来设置。
运行crontab -e,然后把如下代码添加在末了。

测试

现在基本上准备妥当了,是时候测试一下了。
参加这次比拟的几个选手是:

AWS P2实例GPU(K80)

AWS P2虚拟CPU

英伟达GTX 1080 Ti

英特尔i5 7500

MNIST多层感知器

MNIST数据集由70000手写数字组成。
我们在这个数据集上运行了一个利用多层感知器(MLP)的Keras案例,代码地址:

https://github.com/fchollet/keras/blob/master/examples/mnist_mlp.py

MLP的意思是只利用全连接的层,而不用卷积。
这个模型在这个数据集上进行了20次演习,实现了超过98%的准确率。

可以看到在演习这个模型时,GTX 1080 Ti比AWS P2 K80快2.4倍,这有点惊人,由于两个显卡的性能该当差不多,我以为可能是AWS上有降频或者受到虚拟化的影响。

CPU的表现比GPU慢9倍。
有趣的是,i5 7500比亚马逊的虚拟CPU快2.3倍。

VGG微调

为Kaggle猫狗识别竞赛而微调一个VGG网络。
利用相同的batch在CPU上运行这个模型不可行,以是我们在GPU上微调了390个batch,在CPU上是10个batch。
代码如下:

https://github.com/slavivanov/cats_dogs_kaggle

这次1080 Ti比AWS P2 K80快5.5倍。
CPU在这个环节的表现,最多慢了200倍。

Wasserstein GAN

天生对抗网络(GAN)用来演习模型产生图像。
Wasserstein GAN是原始GAN的一个改进版。
我这里用了一个PyTorch实现,代码地址:

https://github.com/martinarjovsky/WassersteinGAN

这个模型须要50步演习,CPU在这个演习中不予考虑。

GTX 1080 Ti比AWS P2 K80快5.5倍。

风格迁移

末了一个测试是在TensorFlow上的风格迁移实现,代码地址:

https://github.com/slavivanov/Style-Tranfer

GTX 1080 Ti比AWS P2 K80快4.3倍。
CPU比GPU慢30-50倍。

好啦,关于万元打造一个深度学习系统的分享,就先到这里。

各位端午节快乐。

【完】

招聘

我们正在招募编辑、运营等岗位,事情地点在北京中关村落,期待你的到来,一起体验人工智能的风起云涌。

干系细节,请在公众号对话界面,回答:“招聘”两个字。

One More Thing…

本日AI界还有哪些事值得关注?在量子位(QbitAI)公众年夜众号会话界面回答“本日”,看我们全网包罗的AI行业和研究动态。
笔芯~