成本14,000元,如何自己动手搭建深度学习服务器?

开发 开发工具 深度学习
通过与大家进行交流,阅读了大量博客文章之后,我最终决定开始配置自己的深度学习服务器。当今科技和硬件的发展是如此的迅猛,我担心我曾阅读过的文章很快就会过时,但我希望自己的以下总结能够为大家带来帮助。

在完成 Jeremy Howard 非常出色的深度学习第一部分课程之后,我查看了一下我的亚马逊网络服务(AWS)账单,发现我每个月运行 GPU 都要花费差不多 200 美元。以这样的代价来完成网络课程看起来代价有点大,而且我已开始着手研究一些课程以外的数据集,并迫切地想得出结果。

通过与大家进行交流,阅读了大量博客文章之后,我最终决定开始配置自己的深度学习服务器。当今科技和硬件的发展是如此的迅猛,我担心我曾阅读过的文章很快就会过时,但我希望自己的以下总结能够为大家带来帮助。

配置服务器的 6 大步骤:

1). 选择组件

2.) 组装

3). 安装操作系统

4). 安装驱动程序

5). 安装库

6). 设置远程访问

1. 选择部件

我阅读了大量博客,最终形成了现在应该选择哪种配置的概念。因为硬件更新换代太快,在下个世代到来时到底该买哪些型号的部件,这一问题还是得留给你们研究。但是一般而言,你需要选购以下部件:主板、CPU、内存(随机存取存储器,RAM)、硬盘驱动器(固态硬盘,SSD)、显卡(GPU)、CPU 风扇、电源和机箱。

P.S. 我强烈建议你在购买之前在 pcpartpicker.com 上创建一个清单。这个网站的特色在于它有一个「兼容性检查」的功能,它会告诉你自己选择的部件是否互相兼容。我的列表在这里。

部件清单(原文为美国市场价,机器之心将其替换为 2 月 23 日,京东自营/淘宝价)

  • CPU—英特尔 i7 7700k(Kabylake)4.2GHz 四核 2799 元
  • 内存—海盗船 复仇者 LPX 32GB (2 x 16) DDR4–3200 2499 元
  • 固态硬盘—三星 850 EVO sata3 500G 1299 元
  • GPU—索泰 GeForce GTX 1080 8GB 4999 元
  • 主板—微星 Z270-A PRO ATX LGA1151 1299 元
  • CPU 风扇—酷冷至尊 Hyper 212 EVO 82.9 CFM 128 元
  • 供电电源—EVGA SuperNOVA G2 750W ATX 879 元
  • 机箱—NZXT S340 (White) ATX Mid Tower Case 369 元
  • 总价:14,271 元

我决定从单块显卡开始自己的装机之路,但我选择的微星 (MSI) 主板有多个 PCIe 通道,这意味着如果有需要,我可以在未来添加更多的 GPU。一般而言,我都会选择那些用户评论数最多的硬件,即使这些评论褒贬不一。但评论意味着部件受欢迎的程度,用户数量越大,就越有可能出现用户自行创建的使用指南和建议。这会为你接下来的两个步骤免去了很大的痛苦。

一些实用的文章:

2. 组装

这一部分非常有趣。几乎所有的部件,我都可以在网上找到相关的指导性视频,但是有一些部件我必须要根据相似型号的安装视频才可以。微星主板、酷冷至尊风扇和 NZXT 机箱的指导手册非常不错,但是我还是需要再找一些其他的材料。

[[184056]]

[[184057]]

[[184058]]

经验总结

  • 买一把好用的螺丝刀——我的螺丝刀非常的差劲,所以很快就让我停滞不前了。买一个杆长一点的螺丝刀,这样你就可以够得到很紧的地方,也是为自己省力。
  • 不要吝惜自己的力量——免责声明:要是把什么东西弄坏了,不要怪我。但是至少在两种情况下(CPU 和内存),我因为在安装部件时候用劲太小浪费了好多时间。我担心太过用力,所以如果部件不能够轻松放进去,我就放弃了。至于内存,我几乎在亚马逊上购买了一整套新的芯片。这些情况下,解决的办法就是用力压。
  • 理解你的 BIOS——BIOS 是一个预先安装在主板上的软件,是你的机器启动时加载的第一个软件。它基本上是你配置硬件和安装操作系统的一个控制面板。学会如何在 BIOS 上找到「引导盘」(U 盘或是包含操作系统的固态硬盘),怎样选择使用哪一张显卡都是非常重要的。遗憾的是微星的用户手册在这些问题上表达得不甚清楚,但是这个视频(https://www.youtube.com/watch?v=C6mQqlmL5Sc)会让你更好地进行理解。
  • 你的显示器没有坏——弄清怎样让显示屏在我的新机器上工作花了我不少时间。我之前曾听说在你第一次启动的时候,你需要将你的 HDMI 线插到主板的某个位置,因为一开始显卡驱动还没有安装。我照做了,但是当我最后启动的时候,显示器上什么都没有。接着我尝试把线插到显卡上,也没有用。最后我尝试将显卡拔出来,把线连上主板并重新启动。终于能看到东西了!这意味着,微星的主板如果不能在 PCIe 通道找到其他的外置显卡,就会默认使用核显。因为在我第一次启动的时候,就安装了显卡,主板就选择使用我的的新新卡。显示器上看不到任何东西是因为我没有安装英伟达的驱动。

最后,大功告成了!

3. 安装操作系统

在显示器可以工作之后,你会看到一个这样的界面。这就是你的 BIOS(注:不同品牌的主板,BIOS 界面略有不同)。我需要更改两处配置,以保证所有的东西都能正常运行:更改启动优先级,替换默认的显卡。

在 MSI 主板上预置的 BIOS

我计划主要将我的机器用于编程和机器学习,所以我决定要安装 Ubuntu 操作系统。我还希望能够通过我的 Mac 对它进行远程操作,所以我可能不需要 Windows,但是你可以安装双系统。

制作安装 Ubuntu 的 U 盘

我依照针对 Mac 的说明(https://www.ubuntu.com/download/desktop/create-a-usb-stick-on-macos),下载了一个叫做 UNetBootin (https://unetbootin.github.io/) 的客户端,它可以为你把所有的事情都处理好。

启动 UBUNTU

若是一切正常,我应该能够插入我的 U 盘,重启,回答问题,安装一个完全可运行版本的 Ubuntu,准备好进行下一步。但是,我得到的确实这样的错误信息。

 

我按了好几次退出键,之后按了删除键,之后 F1、 F10、 F12、 #%^ 、 $\&]&&&#^,但都没有用。

问题在于微星主板已经选择了默认的「启动优先级」。再次进入 BIOS(在开机之后立刻按 F11),我看到 BIOS 的配置是首先启动硬件驱动(三星固态硬盘),这里面是空的,但是也可能会有一大堆选项。解决办法就是把 USB 选项拉到优先级列表的顶部,然后重启。最后,我看到了这十分友好的 Ubuntu 安装屏幕!

在安装了 Ubuntu 并且重启之后,我很失望地发现我卡在了 Ubuntu 的加载屏幕上,它就停在了那里,最终超时。这又是怎么了呢?!

原来问题在于微星主板内置的显卡(我的 GTX 1080 还在我的咖啡桌上)。它与 Ubuntu 的图形用户界面(GUI)不兼容!这真是经典的鸡和蛋的问题。没有 Ubuntu,我不能下载使用显卡所需的驱动,但是没有显卡,我不能安装 Ubuntu!进入 GRUB

(https://help.ubuntu.com/community/Grub2)。

Ubuntu 启动菜单。你可以在开机后按压左 Shift 键进入这一菜单。

最后,我找到了两篇非常好的文章(http://askubuntu.com/questions/162075/my-computer-boots-to-a-black-screen-what-options-do-i-have-to-fix-ithttp://askubuntu.com/questions/716957/what-do-the-nomodeset-quiet-and-splash-kernel-parameters-mean)帮我解决了这个问题。解决办法就是在启动命令中添加一个 *nomodeset*参数。这帮我安装了一个普通版本的 Ubuntu GUI,得以让我继续进行。

4. 安装驱动程序

英伟达的驱动是出了名地难运行,这一个也不例外。在其他用户的引导下,我去英伟达的网站下载了 GeForce 驱动程序,接着利用 Ubuntu GUI 对它进行安装。这个错误给我带来了很大的痛苦。

  • 无法检测到可兼容的英伟达显卡

这又是一个鸡和蛋的问题。我没有再重新接上 GTX 1080 是因为没有驱动程序它无法工作。如果我重新接上,MSI 主板就会开始再次使用它,我就又回到了我开始的地方。解决办法是重新进入 BIOS,改变显卡优先级。我更新了设置,将优先级赋予给内置显卡,而不是选择新的显卡。这样我又可以重新接入 GTX 1080,并正常进入 Ubuntu。

  • 你好像在运行 X 服务器

我通过使用这里的说明 (http://askubuntu.com/questions/149206/how-to-install-nvidia-run) 解决了这个问题,但是在最初,我都无法通过第一步:「点击 CTRL+ALT+F1,使用你的凭据登录。」我这样做了之后,屏幕又变成了空白,和显示器的连接就断开了。解决方法是启动 Ubuntu,进入文本模式,完成命令行的步骤。

更好的办法

最终让我感到欣慰的是所有的东西(驱动程序、CUDA、深度学习库等)都可以运行了。但是没过多久,因为一些配置文件我又把事情搞得一团糟。

在 Ask Ubuntu 网站上浏览了几个小时之后,我注意到英伟达驱动程序上预先安装了新的 CUDA 8.0 工具箱,让你可以同时安装 CUDA 和驱动程序。

我清除了现有的英伟达库,运行了下面的代码,然后一切都便正常运行了。你可以在这里 (http://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#ubuntu-x86_64) 看到完整的说明。

  1. wget 
  2. http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.44-1_amd64.deb 
  3. sudo dpkg -i cuda-repo-ubuntu1604_8.0.44-1_amd64.deb 
  4. sudo apt-get update 
  5. sudo apt-get install cuda 

然后将下面的代码添加多你的~/.bash_文件中:

  1. export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}} 
  2. export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 
  3. export LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LIBRARY_PATH:+:${LIBRARY_PATH}} 

5. 安装深度学习库

有很多的好文章都对必要的深度学习库和如何安装进行了描述。关键点在于你不能够盲目地跟随这些说明,尤其是关于如何安装的部分。因为这些说明经常更新,你可以在这些库的网站上找到更好的示例。下面是我安装的一些工具:

  • CUDA—利用 GPU 的并行计算平台
  • cuDNN—加速深度学习的英伟达库
  • Anaconda—Python 数据科学 (numpy, scikit, jupyter..)
  • OpenBLAS—快速的线性代数方法
  • Tensorflow—谷歌的机器学习框架
  • Theano—深度学习框架
  • Keras—另一种框架,可以简化 Tensorflow 或 Theano 的工作

在这之后,我进行了一些测验以保证一切正常运行,并开始运行 Jupyter 笔记本。

6. 设置远程访问

再是一个可选步骤。但是如果你希望通过笔记本电脑远程操作,下面是一些方法。

Teamviewer 是一款屏幕分享软件。如果你安装了这一软件,并在两个机器上运行,你便可以通过你的笔记本电脑控制 Ubuntu 主机,反之亦可。这让工作变得更加方便,但是在进行屏幕分享时做所有的事情都会有一点延迟且不灵活。

SSH 和端口转发

我想要远程通过 SSH 访问我的新机器,并且和它进行互动,就好像它是我在笔记本上多了个 Tab 键一样。为了做到这一点,我在 Ubuntu 上安装了 OpenSSH。

  1. sudo apt-get install openssh-server 
  2. sudo service ssh status 

之后,我将 Comcast 路由器配置到将外部通信量直接转发到我的主机。我根据 Comcast 的说明,出乎意料的是这居然管用!我通过在 www.canyouseeme.org 查看端口 22,确认了这一点。部分过程可能需要你的公共 IP 地址,你可以通过运行下面的代码找到:

  1. dig +short myip.opendns.com @resolver1.opendns.com 

远程笔记本

另外一个很酷的技巧就是,如果你喜欢 Jupyter,你可以在你的深度学习主机上运行你的笔记本,但是在你笔记本电脑上进行浏览和编辑。这里有关于这一技巧的一些教程 (http://www.justinkiggins.com/blog/zero-configuration-remote-jupyter-server/),所以我在下面只列出了命令:

  1. $laptop: ssh -l bfortuner@DEEPLEARNINGIP 
  2. $server: jupyter notebook --no-browser --port=8888 
  3. $laptop: ssh -NL 8888:localhost:8888 bfortuner@DEEPLEARNINGIP 

现在你就可以在笔记本电脑的浏览器上访问 http://localhost:8888,开始编辑你在深度学习机器上的笔记本。

【本文是51CTO专栏机构机器之心的原创文章,微信公众号“机器之心( id: almosthuman2014)”】

 

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2018-01-12 15:59:36

2017-10-31 10:11:04

深度学习服务器DeepLearnin

2020-08-23 10:45:05

深度学习人工智能技术

2010-05-24 09:59:54

SVN服务器搭建

2009-02-16 15:50:57

服务器 降低成本

2009-02-20 12:09:10

数据备份数据安全NAS

2016-09-23 20:04:26

2024-03-08 12:45:00

C#Web服务器

2020-05-20 13:53:41

HTTP环境安装

2016-08-22 20:37:10

PythonWeb服务器

2010-05-25 09:32:04

搭建SVN服务器

2016-08-10 16:28:00

WebURLHTTP

2016-10-11 12:45:50

PythonWeb服务器

2021-02-05 05:29:51

服务器GitGogs

2023-09-18 15:12:47

服务卡片ArkTS

2018-04-23 12:28:24

无服务器云成本云计算

2021-01-07 17:24:13

戴尔

2017-03-15 17:13:59

2011-07-11 09:39:22

虚拟服务器虚拟化

2017-03-15 14:49:18

点赞
收藏

51CTO技术栈公众号