最近我(作者Wayde Gilliam——译者注)在学习了一些深度学习方面的知识和教程后,决定自己搭一个服务器用来训练机器学习模型,不再用现在所用的AWS p2虚拟机和存储器。我意识到,后面我会用到规模大得多的数据集,不想因为处理能力不足而花上几小时训练我的模型,所以搭建自己的深度学习服务器是个不错的选择,因为从长远来看,能给我省下不少钱和时间,也能让自己有更丰富的搭建服务器的经验。 注意:本文更多的是想关注服务器设置,以及让多个用户同时协同工作,所以软件安装过程写的相对简单一些。想看更详细的版本,可参见原文 列出各部分清单 在将各个部分组装在一起之前,你需要想好自己想要什么样的机器。就我个人而言,想达到如下标准:
我用pcpartpicker.com这个网站将所需的全部明细列出,因为这样能让我很容易的比较各个部件。后面我会详细说说为何我选择每个部件,以及是怎样和系统作为一个整体工作的。作为参考,点击阅读原文查看我的服务器部件明细 GPU:GTX 1080 Ti Hybrid GPU是你搭建深度学习服务器中最重要的部分,因为你是在用你的显卡训练模型,所以你的GPU越强,处理大型数据集的速度就越快。更高的GPU内存等于更高的处理速度(比如更快的训练速度,更大的批次,等等)。我选了两个GPU用于我的服务器,因为对GPU的预算还算充足,而且这样能让我用一个GPU训练模型,同时让其他人可以用另一个训练别的模型。这部分看你自己的需要和预算情况选择合适的GPU就行。 Hybrid 1080 GPU性能不错,因为它除了大部分GPU内置的风扇冷却系统外,还带了水冷系统。 1080 Ti在全负荷情况下运行起来会很热,所以高质量的冷却系统才能保证显卡的使用寿命和训练模型的效果。如果想了解更多关于深度学习环境下的显卡选择知识,可以参考原文链接,对我帮助很大。 CPU: AMD Threadripper 1900x 虽然我们是在用显卡训练神经网络,但是CPU也很重要,因为它用于计算操作,比如数据预处理,因此内核更高的CPU能加快计算速度。我使用的是Treadripper,因为它是市面上非常新的CPU,有数量很多的内核(32核,TR2’!),另外它的价格比英特尔系列的同类产品也稍低一些。 另外提醒一点,在你选择CPU的时候,确保为PCI-E x16或PCI-E x8 显卡插槽,因为在服务器低负荷或你想限制系统时,它们性能良好。如果你的服务器有4个显卡,应该用更高端的CPU,能保证为你提供足够多的PCI-E卡槽。 主板:MSI X399 SLI Plus 选择这款主板,是因为它是完整的ATX主板,能够放置4个GPU,另有最大128G的RAM。因为我前面提过,我的主要目标就是让服务器将来还有升级空间。 内存:32 GB 海盗船复仇者 LPX DDR4 (2 x 16GB) 更多的内存能让我更容易的处理大型数据集。未来我的升级计划是再添加2个16G的内存条,这也是我为何没有选4通道RAM(4 x 8GB)的原因,虽然运行效果会稍微好一点。 存储器:256GB 三星 SSD & 2TB HDD 我将Ubuntu,所有的库还有数据集都放在了SSD存储器上,其余数据则存储在了2TB HDD上。 散热器:海盗船H100i v2水冷散热器 Threadrippers没有常备的散热器,所以我想一种能24/7使用、便宜且易于维护的适用散热器。我选的这款一体化散热器非常容易安装,也很实用,而且无噪声。 电源:EVGA EVGA SuperNOVA 1000w 80+ 金牌 一定要记得始终保证电源功率大于你的技术需要。如果不确定你需要多少功率(我的是824w),可以用PCPartpicker的功率计算器帮你获得一个大致的数字,而且最好把这里弄的保险一点再开机。 机箱:海盗船 760T 全塔式机箱 我选了这款机箱是因为其内部空间充足,价格适中。虽然它没法让你的模型训练更快些,但干净的侧板,红色的LED灯,还是能让你看着酷炫多了! 组装各个部件 如果你没有组装电脑的经验,把这些部件组到一起很像是在玩一套很昂贵的乐高玩具。刚开始都很容易脑子被搞得一团乱。我下面就快速说一下自己的组装过程,不过我高度建议你跟着一个完整的组装视频学习组装过程。 步骤1:安装CPU 这可能是组装电脑中最可怕的部分,因为必须遵循一定的操作步骤,稍有不慎就有可能搞坏一块CPU(幸运的是你可以拥有一颗高逼格的钥匙扣)。 这部分,还是建议到网上搜一个仔细讲解的视频,一步步跟着做。Threadripper的安装过程有点不一样,不是把处理器“加固”在主板上,而是有个类似滑轨的拉伸式装置。 步骤2:安装电源 这部分没有绝对的标准顺序,不过我个人喜欢先把电源放进机箱,因为有些机箱需要你将电源放在卡槽里,这就导致有时候得经过主板,不太妙。 步骤3:把其它部分组装在一起 一旦主板安装好了,其它地方就很容易组装了。我的安装顺序如下:
步骤4:成功了吗? 这个时候就可以开机了。刚开始我这没打开,因为将机箱的电源键的正负极线路搞反了。重新弄了一遍后看到了久违的闪亮的白色、红色光晕。如果你一切顺利,应该在电脑后面也能看到这一幕,然后去找启动设备就好了。 设置服务器 安装操作系统 下一步是安装你的操作系统。我是用的Linux,因为大部分深度学习框架都是面向Linux设计的。我选了Ubuntu Desktop v16.04 LTS,然后用U盘上下载了所有东西。可以下载很多免费的工具,比如UNetbootin或Rufus(只有Windows版本),准备你的拇指驱动器。在Mac上创建一个引导USB的完整过程,可以参考原文教程。 设置SSH 步骤1:端口转发 在所有路由器中的设置过程都是一样的,不过我用的是苹果路由器,所以设置步骤如下: 1.为你的服务器设置一个静态IP,这样每次关闭时就不会改变了。 2.用Apple Airport Utility登入你的路由器。 3.为服务器映射端口。你需要在部分找到你的服务器的MAC地址,在Ubuntu上怎么找可参见“阅读原文”。 步骤2:创建一个动态IP地址 我习惯了我服务器设置一个动态IP地址,从而让我能在终端远程连接服务器。你可以用这个网站检查是否有效。 我输入了以下命令以连接服务器: ssh [my_username]@[my_ip] -L 8888:[dl-rig_static_ip]:8889 我让服务器在端口8888运行,让Jupyter notebook在端口8889运行(-L选项会将你指定的本地端口重新指向不同的端口&主机)。这样我就能在本地机器运行notebook用于测试的同时,还能用服务器运行模型进行训练。不过如果你不想这样,只需在-L部分之前输入所有东西即可。我在下部分会解释怎样修改你运行notebook的端口。 安装深度学习/机器学习库 现在进入到安装机器学习/深度学习所需的库这部分。我写了一段安装脚本,下面会逐步讲解,帮助你理解,全部代码地址在“阅读原文”里。 首先,我们要确保系统是最新的,安装我们所需的全部基本工具:
下一步是下载和安装所有的CUDA GPU 驱动器: mkdir ~/downloadscd ~/downloads 现在我们验证是否正确安装了所有的CUDA部件:
从这里我们会将CUDA添加到我们的PATH变量: cat >> ~/.bashrc <>'EOF'export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 之后,下个步骤就是安装CuDNN库(创建神经网络时需要):
现在我们为当前用户安装Anaconda: wget 'https://repo./archive/Anaconda3-5.0.1-Linux-x86_64.sh'bash 'Anaconda3-5.0.1-Linux-x86_64.sh' -bcd ~echo 'export PATH=\'$HOME/anaconda3/bin:\$PATH\'' >> ~/.bashrcexport PATH='$HOME/anaconda3/bin:$PATH'conda install -y bcolz 接着,我们安装TensorFlow和Keras:
接着,我们安装Fastai所需的Python环境依赖: mkdir -p ~/development/_training/mlcd ~/development/_training/ml 接下来的几个部分是配置Jupyter notebook:
如果想修改运行Jupyter notebook的默认端口(端口8888),取消这一行的注释,进入目标端口。这能让你在服务器和本地同时运行你的notebook,其他人在用他们的notebook时,你也能用你的: #echo 'c.NotebookApp.port = 9999' >> $HOME/.jupyter/jupyter_notebook_config.py 现在,我们配置tmux,这是一款工具能让我们在终端窗口创建很多个窗格(pane),以及在下线后让程序保持运行。可以看看这份文档(),在理解tmux的功能时帮了我很大的忙。它真的很有用,因为你可以在一个窗格上运行你的notebook,在另一个窗格上面监督你的GPU使用状况,在另一个窗格上面打开一个Linux终端:
接着我们创建tmuxp配置文件,它能用一行命令设置我们的开发环境,不必在每次想做些工作时就得配置所有的窗格,启动Jupyter notebook等等。对于我们的fastai环境,我们先用tmuxp加载fastai。我们配置环境: cat > $HOME/.tmuxp/fastai.yml <> 因为我们不再需要他们,所以删掉安装文件:
就这样我们配置了一台深度学习服务器!在我写这篇教程时,我的服务器已经无故障全天候运行了很长一段时间,完全没有噪音,用它做了很多训练模型的工作。 |
|