当前位置:首页 > 技术分享 > 正文

使用AMD CPU,打造自己的深度学习服务器

选自GitHub,作者:WaydeGilliam,机器之心编译。注:本文旨在讨论服务器设置及多用户协作,部件组装和软件安装过程是SlavIvanov关于创建自己的DLBox的文章()的简化版本。我刚开始学习课程的第一部分——「PracticalDeepLearningforCoders」,我想搭建自...

选自GitHub,作者:WaydeGilliam,机器之心编译。注:本文旨在讨论服务器设置及多用户协作,部件组装和软件安装过程是SlavIvanov关于创建自己的DLBox的文章()的简化版本。我刚开......

选自GitHub,作者:WaydeGilliam,机器之心编译。

注:本文旨在讨论服务器设置及多用户协作,部件组装和软件安装过程是SlavIvanov关于创建自己的DLBox的文章()的简化版本。

我刚开始学习课程的第一部分——「PracticalDeepLearningforCoders」,我想搭建自己的服务器来训练模型,作为使用AWSp2和存储的升级。我将会使用更大的数据集,并且我不希望在训练模型时因为缺乏足够的处理能力而等待数小时,因此构建自己的DLrig服务器对我来说是一个不错的选择,而且从长远来看,它将为我节省大量的时间和金钱,而且可以积累组装服务器的良好经验。

组装

列出部件清单

在准备部件之前,你要弄清楚自己到底想从机器中得到什么。个人而言,我想获得以下改进:

比Amazonp2更加强大

容纳额外GPU、RAM、存储及定制液体冷却的空间

可以用很久的硬件

预算控制在3000美元左右

我用()来细化各个部件,因为它可以将对比和组装其它部件变得非常简单,而且还具备很不错的部件兼容性检查器。我将详细解释选择每个部件的原因以及它们如何与整个系统协同工作。以下是我的服务器链接地址:。

GPU:GTX1080TiHybrid

因为你要使用显卡来训练模型,所以这是组装过程中最重要的一部分,因此,GPU越强大,你处理大型数据集的速度就越快。GPU内存越大,处理能力也就越强(如:训练速度更快,批尺寸更大……)。我为自己的服务器选了两块这种显卡,因为我在预算里为它们预留了空间,这样我就能用其中一块显卡训练模型,让另一个用户在第二块卡上训练其模型。你可以根据自己的预算缩减GPU内存(1070、1060等),防止与其它部件争抢预算。Hybrid1080GPU也不错,因为除了大多数GPU具有的正常风扇冷却之外,它还预装了aio水冷系统。1080Ti在满负载运行时会过热,因此,在训练模型时,良好的冷却系统对于延长显卡寿命并保持其性能至关重要。关于显卡选择的更多细节,请参见,该文帮助我真正了解了如何选择适合深度学习环境的显卡。

CPU:AMDThreadripper1900x

虽然你用显卡训练神经网络,但CPU依然很重要,因为你要用它来进行数据准备等操作,因此那些多核CPU将有助于加快速度。我用的是「线程撕裂者」Treadripper,因为这是市面上非常新的一款多核CPU(ThreadRipper2代有32个内核!),而且比因特尔价格低得多。1900x是去年发布的基础版TR,它只有8个内核,不过我对这台服务器的整体目标是保持它的可升级性。

需要注意的一点是,在选择CPU时,要确保有8或16个pcie插槽供显卡使用,这样才能保证它们在低负载下发挥最好的性能,否则就有堵塞系统的风险。在高端CPU上,如果你的服务器中有4个显卡,那么你就有足够的pcie插槽。

主板:MSIX399SLIPlus

选择这块主板是因为它是一块完整的ATX板,可容纳4个GPU,RAM最多可达128GB。正如我前面所说,这个服务器的主要目标之一是保持它可升级。

内存:32GBCorsairVengeanceLPXDDR4(2x16GB)

内存越大,处理大型数据集就越容易。我的下一个升级计划是再添加两个16GBRAM内存条,这也是我没有安装四通道内存(4个8GB内存条)的原因,尽管它会提高我的服务器的性能。

存储:256GBSamsungSSD2TBHDD

我把Ubuntu、我的所有库、我在SSD上正在使用的数据集以及手里的其它所有数据都存在2TB的机械硬盘上。

冷却器:CorsairH100iv2液体冷却器

「线程撕裂者」没有备用冷却器(如果你有30美元的余款,至少应该买一个便宜的二手冷却器),所以我想要一个可以全天候使用的、便宜又容易维护的冷却器。这款集各种优点于一身的冷却器非常容易安装,而且非常可靠(在数十万台机组中,可能只有一两台发生冷却液泄漏)、安静。

电源:EVGASuperNOVA1000w80+GoldCertified

最好有一个功率超过技术要求的PSU。PCPartpicker的功率计算器能够大致算出你需要多大的功率(我的服务器是824w),然而它经常在数量上出错,因此最好进行安全操作,以防你的计算机无法打开。「GoldCertified」只是指PSU的效率(浪费了多少功率作为热量)。

机箱:Corsair760TFullTower

我选择这个机箱是因为它的价格和内部空间大小。虽然它并不能提高你的模型训练速度,但是透明的侧面板和红色的LED确实让你看起来更酷。

这幅图里的东西花掉了我一年的积蓄和毕业的钱

把部件整合到一起

第一步:组装CPU

第二步:组装电源设备

电源的安装顺序并没有对错之分,但我喜欢先把PSU放进盒子里,因为有些情况下你需要把PSU卡进一个插槽里,这样做你才能「穿过主板」。

第三步:组装其它部件

这是至关重要的一步,一旦主板安装好,那其他部分的安装会变得很容易。我将按照如下顺序进行安装:

安装RAM。这很简单,只需把内存条向正确的方向移动,并把插槽正确地按进主板即可(请参阅安装手册,因为插槽要根据你拥有的内存条个数决定)。

安装CPU冷却器。唯一的小麻烦是为了与TR兼容,我必须更换安装支架,这需要很大的力气。安装散热器需要8个螺栓,我已安装完毕。

安装显卡。只需要把显卡安装到主板的特定卡槽中即可(像内存条一样,参照你的手册,看哪些插槽可以把显卡放入),再把散热器固定在你的机箱上。要确保你的散热器在GPU上方。在上图中我犯了个小错误,所以不得不把它重新挂在机箱的前板上。

安装存储器。为了获得更好的散热效果我卸掉了一块驱动板,所以我把SSD和HDD放在右下角的单驱动器槽里。

第四步:安装成功?

现在可以打开你的设备了。开始因为我设备的电源键上正负线接反了,所以我的设备并没有成功打开,但后来还是出现了预期的白光和红光。如果一切顺利,你可以看到你的电脑屏幕被点亮,然后主板开始搜索引导设备。

设置服务器

安装操作系统

下一步是安装操作系统。我使用的是Linux,因为大多数DL框架都是针对该系统设计的。使用的台式机是,用USB就可安装全部的东西。有很多像UNetbootin或Rufus(仅用于Windows)的免费工具,可以先下载到U盘中备用。这是一个介绍在Mac上创建可启动USB的完整过程的教程(),如果你用Windows,可以打开此链接:。

设置SSH

第一步:端口映射

你需要对所有的路由器进行类似处理,如果是apple的路由器可以遵循这个指南:,操作如下:1.为你的服务器设置一个静态IP,防止它在每次关闭时更改。2.用AppleAirportUtility登录你的路由器。3.为服务器映射端口,完成这一步需要找到服务器的MAC地址,如何在Ubuntu找到地址可以查看此链接:。()

第二步:创建一个动态IP地址

我之前为服务器创建过动态IP地址,可以允许我在终端远程连接它。你可以通过该网站()验证它的有效性。

键入一个如下所示的命令连接到我的服务器:

ssh[my_username]@[my_ip]-L8888:[dl-rig_static_ip]:8889

我的服务器在端口8888上运行,jupyternotebooks运行在8889上(-L选项将指定的本机端口重新定向到不同的主机和端口)。这样我们就可以在本地运行我们的设备,与服务器同时测试,以便训练。如果不想这样,在-L之前把所有东西输入进去即可。在下一节我会解释如何更改运行jupyternotebooks的端口。

安装深度学习/机器学习库

现在需要安装所有的与深度学习/机器学习相关的库。我会将安装脚本进行分节,这样你就容易理解这些内容。该脚本是基于JeremyHoward』s编写的(),这里边很多东西不仅仅是因为它们是实用性工具,更是因为这也是我们要在Fastai中使用的。

首先,我们需要保证系统是最新的,并且安装了所有我们需要的基础工具包:

sudoapt-getupdate

sudoapt-get--assume-yesupgrade

sudoapt-get--assume-yesinstalltmuxbuild-essentialgccg++makebinutilsunzip

sudoapt-get--assume-yesinstallsoftware-properties-common

sudoapt-get--assume-yesinstallgit

下一步是下载和安装所有CUDAGPU的驱动包:

mkdir~/downloadscd~/downloads

wget

sudodpkg-icuda-repo-ubuntu1604_9.0.176-1_

sudoapt-keyadv--fetch-keys

sudoapt-getupdate

sudoapt-get-yinstallcuda

sudoapt-get--assume-yesupgrade

sudoapt-get--assume-yesautoremove

现在我们开始验证是否正确安装了CUDA:

sudomodprobenvidia

nvcc--version

nvidia-smi

现在开始,我们将CUDA(NvidiaDeepLearningapi)添加到路径变量:

cat~/.bashrc'EOF'

exportPATH=/usr/local//bin${PATH:+:${PATH}}

exportLD_LIBRARY_PATH=/usr/local//lib64\

${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

EOF

source~/.bashrc

下一步是安装CuDNN库(创建神经网络所需):

wget

sudocpcuda/include/*.*/usr/local/cuda/include/

sudocpcuda/lib64/*.*/usr/local/cuda/lib64/

现在我们为当前用户安装Anaconda:

wget""

bash"_64.sh"-b

cd~

echo"exportPATH=\"$HOME/anaconda3/bin:\$PATH\""~/.bashrc

exportPATH="$HOME/anaconda3/bin:$PATH"

condainstall-ybcolz

condaupgrade-y--all

下一步,安装Tensorflow和Keras:

pipinstall--ignore-installed--upgrade

pipinstallkeras

mkdir~/.keras

echo'{

"image_dim_ordering":"tf",

"epsilon":1e-07,

"floatx":"float32",

"back":"tensorflow"

}'~/.keras/

接下来,我们将为Fastai安装Python依赖项:

mkdir-p~/development/_training/ml

cd~/development/_training/ml

gitclone

cdfastai

condaenvupdate

以下几节将介绍如何配置jupyternotebook:

usewithyourjupyternotebook.

jupass=`python-c";print(passwd())"`

jupass=sha1:85ff16c0f1a9:c296112bf7b82121f5ec73ef4c1b9305b9e538af

configurenotebook

echo"=u'/home/{user}/'"$HOME/.jupyter/jupyter_notebook_

echo"=u'/home/{user}/'"$HOME/.jupyter/jupyter_notebook_

echo"=u'"$jupass"'"$HOME/.jupyter/jupyter_notebook_

echo"='*'"$HOME/.jupyter/jupyter_notebook_

echo"_browser=False"$HOME/.jupyter/jupyter_notebook_

要更改默认端口以在(端口8888)上运行Jupyternotebook,请取消注释,并输入所需端口。这样就可以在服务器和本地同时运行你的笔记本,也可以在你使用笔记本时让多个用户使用他们自己的笔记本。

runasafirstcommandinallpanes

-cd~/development/_training/ml/fastai

-sourceactivatefastai

panes:

-shell_command:

-clear

-shell_command:

-clear

-jupyternotebook

-shell_command:

-

Tmuxp-config

因为我们不再需要这些,所以可以删除安装文件:

cd~/downloads

rm-rfcuda-repo-ubuntu1604_9.0.176-1__64.sh

cd~

就是这样。在我写这篇文章的时候,服务器一直在全天候运行,无问题、无噪声、非常轻松地通过了训练。

最新文章