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

简介: 本文介绍如何自己构建深度学习服务器

注意:本文主要关注服务器设置和与多个用户同时工作,部件组装和软件安装过程是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

译者:董昭男,审校:。

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

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
9月前
|
机器学习/深度学习 并行计算 TensorFlow
anaconda迁移深度学习虚拟环境 and 在云服务器上配置(下)
anaconda迁移深度学习虚拟环境 and 在云服务器上配置
175 0
|
4月前
|
机器学习/深度学习 Shell 数据安全/隐私保护
深度学习-虚拟机当服务器的安装环境
深度学习-虚拟机当服务器的安装环境
|
9月前
|
机器学习/深度学习 弹性计算
阿里云最新产品手册——云基础产品与基础设施——计算——云服务器ECS——应用场景——深度学习
阿里云最新产品手册——云基础产品与基础设施——计算——云服务器ECS——应用场景——深度学习自制脑图
278 1
|
9月前
|
机器学习/深度学习 并行计算 PyTorch
anaconda迁移深度学习虚拟环境 and 在云服务器上配置(上)
anaconda迁移深度学习虚拟环境 and 在云服务器上配置
447 0
|
机器学习/深度学习 弹性计算 安全
ECS实现远程深度学习
ECS配合Frp连接内网的深度学习服务器
206 0
|
机器学习/深度学习 弹性计算 人工智能
性能最高提升50%,ECS倚天实例深度学习推理性能实测
本次实测涵盖图像分类识别、图像目标检测、自然语言处理以及搜索推荐等四种常见的深度学习推理场景
性能最高提升50%,ECS倚天实例深度学习推理性能实测
|
机器学习/深度学习 弹性计算 并行计算
在ECS上部署深度学习环境
非科班小白,初次上手心得,才疏学浅,如有错误,虚心求指正
在ECS上部署深度学习环境
|
机器学习/深度学习 人工智能 小程序
阿里云服务器部署flask+Pytorch深度学习模型+nginx
本课程设计是开发一款具备AI能力的微信小程序,为了能让真机测试通过并成功上线,需要把flask+Pytorch深度学习模型部署到阿里云服务器,实现前后端的交互。对于服务器部署我们使用nginx进行ssl证书部署,修改nginx.conf文件,安装gunicorn库通过命令gunicorn -w 2 -b 127.0.0.1:5000 -demo:app命令来运行项目,使前后端能够交互,实现小程序的核心功能。
|
1天前
|
机器学习/深度学习 安全 量子技术
深度学习在图像识别中的应用与挑战
【5月更文挑战第10天】 随着人工智能技术的飞速发展,深度学习已成为推动计算机视觉领域进步的核心力量。本文聚焦于深度学习在图像识别任务中的应用,并探讨了当前面临的主要挑战。我们将回顾深度学习模型的发展历程,特别是卷积神经网络(CNN)在处理图像数据方面的革命性贡献,并分析诸如数据偏差、模型泛化能力、计算资源需求等关键问题。此外,文中还将展望深度学习技术未来的发展方向及其在图像识别领域的应用前景。
|
1天前
|
机器学习/深度学习 传感器 自动驾驶
探索基于深度学习的图像识别技术在自动驾驶领域的应用
【5月更文挑战第10天】 随着人工智能技术的飞速发展,特别是深度学习在图像处理和识别方面的突破性进展,自动驾驶汽车逐渐成为现实。本文将深入探讨深度学习技术在图像识别领域的应用,以及如何通过这些技术提高自动驾驶系统的性能和安全性。我们将分析卷积神经网络(CNN)在车辆检测、行人识别和交通标志识别中的作用,并讨论数据增强、迁移学习和对抗网络等策略如何帮助提升模型的泛化能力和鲁棒性。此外,文中还将涉及深度学习模型在实时处理和嵌入式系统部署时面临的挑战及其解决方案。

热门文章

最新文章