自己动手打造深度学习服务器-阿里云开发者社区

开发者社区> 【方向】> 正文

自己动手打造深度学习服务器

简介: 本文介绍如何自己构建深度学习服务器
+关注继续查看

注意:本文主要关注服务器设置和与多个用户同时工作,部件组装和软件安装过程是Slav Ivanov关于创建自己的DL Box的文章的简化版本。

我刚刚开始阅读fast.ai课程的第1部分“编码器的实用深度学习,我想构建自己的服务器,通过使用AWS p2实例和存储对模型进行升级。意识到我将使用更大的数据集并且不想因为缺乏足够的处理能力以致等待数小时来训练我的模型,构建自己的DL平台是一个好的选择,因为从长远来看它将节省我大量的时间和金钱,也给了我很好的把服务器放在一起的经验。

构建

创建部件清单

在将任何部件列表放在一起之前,你需要确定你真正想要从你的机器中得到什么。对我来说,我想要的是:

  • 比亚马逊p2实例更强大
  • 可以添加额外的GPURAM,存储和自定义液体冷却的空间
  • 多年来不会过时的硬件
  • 将成本降低到3000美元的预算

我使用pcpartpicker.com来指出所有内容,因为它比较容易比较其他部分和组织所有内容,以及它们非常好的部件兼容性检查器(稍后将详细介绍)。我将详细介绍为什么我选择每个部件以及它如何与整个系统一起工作。作为参考,可以在此处找到我的服务器构建的链接。

GPU: GTX 1080 Ti Hybrid

当你使用显卡训练模型时,这是构建中最重要的部分,因此GPU越强大,你处理大量数据集的速度就越快。更高的GPU内存等同于更高的处理能力(例如,更快的训练,更大的批量大小等......)。我为我的服务器选了两张这样的卡,因为我的预算有足够的空间,它让我可以在其中一张卡上训练我的模型,并让另一个用户在第二张卡上训练他们的模型。你可以缩小你购买的GPU的类型,以适应你的预算(1070、1060等),同时防止其他部件遇到瓶颈。Hybrid 1080 GPU也很不错,因为除了大多数gpu所具有的普通风扇冷却系统之外,它们还预装了aio水冷系统。1080 Ti在满载时发热,因此在训练模型时,必须保持高质量的冷却以延长卡的使用寿命并保持其性能。关于选择图形卡的更多信息,这篇文章真的帮助我真正理解了在深度学习环境中工作时应该做哪些选择。

CPU: AMD Threadripper 1900x

当你使用显卡来训练神经网络时,你的CPU仍然很重要,因为它被用于诸如数据准备之类的操作,所以这些高核心计数将有助于加速进程。我使用了Treadripper,因为它是市场上非常新的CPU,有很高的核数(TR2的32核!),它们的价格远低于英特尔的同类产品。1900x是第一个获得TR的最低层,只有8个内核,不过我对这台服务器的整体目标是保持它的可升级性。

需要注意的一点是,当你选择CPU时,请确保你的显卡有8或16个pcie槽可用,因为这是显卡在负载下表现最好的时候,否则你的系统可能会遇到瓶颈。在高端cpu上,如果服务器上有4张显卡,那么几乎可以保证有足够的pcie槽。

主板: MSI X399 SLI Plus

选择这块主板,因为它是一个完整的ATX板,有4个gpu的空间,以及最大128GB的RAM。如前所述,此服务器的主要目标之一是使其保持高度可升级性。

内存: 32GB Corsair Vengeance LPX DDR4 (2 x 16GB)

内存越多,处理大型数据集就越容易。我计划升级的下一件事是再增加2根16GB的RAM,这就是为什么我没有得到四通道ram (4x8gb的RAM),尽管这会使我的性能提高一些。

存储:256GB三星SSD和2TB硬盘

我把Ubuntu,我所有的库,以及我在SSD上使用的当前数据,以及我储存在2TB机械硬盘上的所有其他数据。

冷却器:Corsair H100i v2液体冷却器

Threadrippers没有库存冷却器(而且如果您有30美元的备用费,您应该经常升级到至少一个便宜的售后冷却器),所以我希望使用可靠的、全天候使用的、廉价的、易于维护的工具。这种一体式冷却器非常容易安装,而且非常可靠(几十万个机组中可能有一到两个发生泄漏冷却液的情况),而且非常安静。

电源:EVGA SuperNOVA 1000w 80+金牌认证

一定要用比你技术所需的更多的功率。PCPartpicker的wattage计算器很好,它能让你大概知道你要拉多少(在我的例子里是824w),尽管它经常是不准确的,因为它的数量是不同的,所以最好确保你的电脑不会打开。“黄金认证”仅仅是指PSU的效率(多少能量作为热量浪费)。

箱子:Corsair 760T全塔

选择这个箱子是因为它里面有多少空间以及它的价格。虽然这并不能让你的模型训练得更快,但清晰的侧板和红色的led确实能让你看起来更酷。

970ee1fc331d9e1e1e139808d66243a11afef0fb

一年的积蓄和毕业奖金在一张照片上

件组装在一起

如果你是电脑新手,这就像组装一套非常昂贵的乐高玩具。任何人都能做到这一点,尽管它比你想象的更难搞糟。我将很快地介绍如何构建我的组装,尽管我强烈建议在构建自己的时遵循完整构建的视频,比如这个!这些说明适用于几乎所有你正在使用的部件的组合,就像我在上面链接的视频指南一样。

第1步:安装CPU

d62d1a8257a05a4203ad98e81dd72137fdb284ff

这可能是构建计算机最可怕的部分,因为必须遵循特定的步骤顺序并且你可能会意外地立即销毁大约价值430美元的 cpu(就像粉碎单个cpu引脚)这是很容易的事情

2步:安装电源

f0feaf9aa70f901901190577214fea1d44868950

做事没有正确或错误的顺序,但根据我个人的经验,我喜欢将PSU作为我放入箱子的第一部分,因为有些情况要求你将PSU滑入一个使你“通过主板”移动的插槽如果它在那里。

3步:将所有东西放在一起

63debdc0048d6af27f131a631cbeef8685a00398

这是一个很大的步骤,但一旦主板在其他一切都很容易安装。我会按顺序安装:

1.安装的RAM。这很简单,只要把你的内存棒滑动到正确的方向,并在你的主板上插入正确的插槽(请参阅手册,因为有特定的槽使用取决于你有多少棒)。

2.安装CPU冷却器。唯一的小麻烦是我不得不更换安装支架,以便与TR兼容,只是需要很大的力量来改变。安装散热器用了8个螺栓并且我完成了。

3.安装显卡。只需将它们滑入主板上各自的插槽(如内存,请参阅手册中有哪些插槽可插入)并将散热器固定在你的机箱中。确保你的散热器高于你的gpu。 我在上面的图片中犯了这个错误,不得不重新安装在箱子的前面板上。

4.安装存储。我卸下了其中一个驱动器托架以获得更多气流,因此我将SSD和HDD放在右下方的单个驱动器托架中。

4步:成功?

f9f8c220760ac6241cff984aa44c5a5b3fbdda33

是时候开机了。起初我没有,因为我的箱子的电源按钮的正负电缆线颠倒了,但之后我看到了我所希望的明亮的白色和红色。如果一切顺利,你应该看到你的计算机发布,然后搜索一个启动设备。

设置服务器

安装操作系统

下一步是安装您的操作系统。我正在使用Linux,因为这是大多数DL框架的设计目标。我使用Ubuntu Desktop v16.04 LTS并安装了USB驱动器中的所有内容。 有许多免费工具,如UNetbootinRufus(仅限Windows),你可以下载这些工具来准备你的u盘。这里有一个非常有用的教程,介绍如何在Mac电脑上创建一个可引导的USB,如果你使用的是Windows操作系统,那么这里有一个合适的教程。

设置SSH

1步:端口转发

你必须对所有路由器执行类似的过程,但由于我有一个苹果路由器,我按照本指南执行以下操作:1.为你的服务器设置静态IP,以便每次关闭时它都不会更改关闭。2.使用Apple Airport Utility登录路由器3.映射服务器的端口。你需要为此部分找到服务器的MAC地址,因此请参阅本指南,了解如何在Ubuntu上找到它。

第2步:创建动态IP地址

我曾经为服务器创建一个动态IP地址,允许我在终端远程连接它。你可以使用此网站来验证它是否正常工作。

当我想连接到我的服务器时,我输入一个如下所示的命令:

2f82aece0293c5068f846ece8249c303cda0979c

我的服务器在端口8888上运行,我的jupyter notebook在8889上运行(-L选项将指定的本地端口重定向到不同的主机和端口)。 这样我就可以在我的机器上本地运行笔记本,以便与我的服务器同时进行测试以便进行训练。但是,如果你不想这样,你可以在-L部分之前输入所有内容。我将在下一节中解释如何更改运行jupyter笔记本的端口。

安装DL / ML库

现在安装深度学习/机器学习所需的所有库。我将逐节介绍安装脚本,以便你了解可以在此处找到的内容。它主要基于Jeremy Howard的install-gpu.sh脚本,因此这里的很多内容不仅仅是因为它们是有用的工具,而且因为这是我们在Fastai中使用的。

首先,我们将确保我们的系统是最新的,并安装我们需要的所有基本工具:

c6e22b26174c6e094800c48a7c7934b5fa0618bf

下一步是下载并安装所有CUDA GPU驱动程序:

ab1c3c94bed5b6a74d85c871f21dc6cfcf09229e

现在我们将验证我们是否正确安装了所有CUDA内容:

ee939803c75978c0f45cd8c95b5a12ae78ac6b22

从这里我们将把CUDA(Nvidia Deep Learning api)添加到我们的PATH变量中:

8362b55a502487b2a50d24f589260e3d3c5dcaef

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

f9c8a1f303088ba676fc26ff1849d5313e9dc3df

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

f8e77b15f331f64bd9329952ad64987ad1373049

接下来,我们将安装Tensorflow和Keras:

61af542f17379ffabfc5efde58be32f4d2a1a7cc

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

cb16e26ccc0d469bed40661f64c33814dbfd9946

以下几节将配置jupyter notebook:

e62489aadaf4fd3c8a96acfc3b16d8738602e8ba

要更改默认端口以运行Jupyter notebook(端口8888),请取消注释此行并输入所需的端口。这允许你同时在你的服务器和本地运行你的笔记本,同时让多个用户在你使用你的笔记本时使用他们的笔记本:

dc8cf454f4d3435f1cf04c8b639f2a617baa9a9a

现在我们将配置tmux,这个工具可以让我们在终端窗口中创建多个“窗格”,并在断开连接后保持程序运行。查看此文档,因为它帮助我理解了tmux的所有功能。它非常有用,因为你可以在一个窗格中运行笔记本,监视另一个窗口中的gpu使用情况,并在另一个窗格中打开一个linux终端:

3838b99ea7be83bc660a88f2bb396b2d1ef1206e

接下来,我们将创建tmuxp配置文件,该文件将在一个命令中设置我们的开发环境,而无需每次我们想要处理某件事情时配置窗格、启动jupyter notebook等。对于我们的fastai环境,我们将使用tmuxp load fastai启动它。请参见使用tmuxp的链接,这里是bash脚本中的文档以及保存服务器重新启动之间的tmux会话的文档。总之,这里让我们配置我们的环境:

8d8bd4b14b0b72b39d5f19c8c742ed659e1e2c5c

因为我们不再需要它们,让我们删除安装文件:

d0b52564b79fb7a81e96e943d0e40c7d3972ad2d

就是这样!在编写本文时,我的服务器一直全天候运行,完全没有任何问题,完全无声,并且通过训练轻松完成。

我还参考了一些作品:

https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2

https://towardsdatascience.com/building-your-own-deep-learning-box-47b918aea1eb

https://medium.com/impactai/setting-up-a-deep-learning-machine-in-a-lazy-yet-quick-way-be2642318850


数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Making a Deep Learning Server

作者:Wayde Gilliam

译者:董昭男,审校:。

文章为简译,更为详细的内容,请查看原文

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
通过搭建wordpress博客来学习云服务器的详细使用方法
云服务器越来越普及,很多企业及个人都纷纷上云,从传统的虚拟主机或者托管服务器上把网站和应用迁移到腾讯云、阿里云、百度云等这些云服务器上。 云服务器相比传统服务器的优势有很多,比如安全性、性价比、稳定性、可用性、便捷性等等各方面,大家可以百度自己了解,我就不在这里多说了。
1785 0
小白新手怎样通过阿里云服务器优惠活动购买云服务器配置指南及活动攻略
服务商都是非常喜欢新用户的,针对新用户上云,一般云服务商都会推出很多优惠活动,可以说以阿里云为代表云服务商针对新用户在第一次购买阿里云服务器的时候,都是不以盈利为目的的,为的是让广大用户能够以优惠的价格实现上云,感受云资源带来的效率和便利。
222 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 28 章 监控数据库活动
第 28 章 监控数据库活动 目录 28.1. 标准 Unix 工具 28.2. 统计收集器 28.2.1. 统计收集配置 28.2.2. 查看统计信息 28.2.3. 统计函数 28.3. 查看锁 28.4. 进度报告 28.4.1. VACUUM进度报告 28.5. 动态追踪 28.5.1. 动态追踪的编译 28.5.2. 内建探针 28.5.3. 使用探针 28.5.4. 定义新探针 一个数据库管理员常常会疑惑,“系统现在正在做什么?”这一章会讨论如何搞清楚这个问题。
947 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 28 章 监控数据库活动_28.3. 查看锁
28.3. 查看锁 监控数据库活动的另外一个有用的工具是pg_locks系统表。这样就允许数据库管理员查看在锁管理器里面未解决的锁的信息。例如,这个功能可以被用于: 查看当前所有未解决的锁、在一个特定数据库中的关系上所有的锁、在一个特定关系上所有的锁,或者由一个特定PostgreSQL会话持有的所有的锁。
949 0
手动卸载windows服务
转自博客 http://www.cnblogs.com/Sabre/archive/2009/01/19/1378259.html   使用windows命令行工具:sc。
634 0
SUV的配置及使用(搭建SVN服务器端)|学习笔记
快速学习SUV的配置及使用(搭建SVN服务器端)
16 0
+关注
【方向】
欢迎各位对内容方向及质量提需求,我们尽量满足,将国外优质的内容呈现给大家!
696
文章
5
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载