选自medium 机器之心编译 参与:曹瑞、李泽南 在完成 Jeremy Howard 非常出色的深度学习第一部分课程之后,我查看了一下我的亚马逊网络服务(AWS)账单,发现我每个月运行 GPU 都要花费差不多 200 美元。以这样的代价来完成网络课程看起来代价有点大,而且我已开始着手研究一些课程以外的数据集,并迫切地想得出结果。 通过与大家进行交流,阅读了大量博客文章之后,我最终决定开始配置自己的深度学习服务器。当今科技和硬件的发展是如此的迅猛,我担心我曾阅读过的文章很快就会过时,但我希望自己的以下总结能够为大家带来帮助。 配置服务器的 6 大步骤: 1. 选择组件 2. 组装 3. 安装操作系统 4. 安装驱动程序 5. 安装库 6. 设置远程访问 1. 选择部件 我阅读了大量博客,最终形成了现在应该选择哪种配置的概念。因为硬件更新换代太快,在下个世代到来时到底该买哪些型号的部件,这一问题还是得留给你们研究。但是一般而言,你需要选购以下部件:主板、CPU、内存(随机存取存储器,RAM)、硬盘驱动器(固态硬盘,SSD)、显卡(GPU)、CPU 风扇、电源和机箱。 P.S. 我强烈建议你在购买之前在 pcpartpicker.com 上创建一个清单。这个网站的特色在于它有一个「兼容性检查」的功能,它会告诉你自己选择的部件是否互相兼容。我的列表在这里。 部件清单(原文为美国市场价,机器之心将其替换为 2 月 23 日,京东自营/淘宝价)
我决定从单块显卡开始自己的装机之路,但我选择的微星 (MSI) 主板有多个 PCIe 通道,这意味着如果有需要,我可以在未来添加更多的 GPU。一般而言,我都会选择那些用户评论数最多的硬件,即使这些评论褒贬不一。但评论意味着部件受欢迎的程度,用户数量越大,就越有可能出现用户自行创建的使用指南和建议。这会为你接下来的两个步骤免去了很大的痛苦。 一些实用的文章:
2. 组装 这一部分非常有趣。几乎所有的部件,我都可以在网上找到相关的指导性视频,但是有一些部件我必须要根据相似型号的安装视频才可以。微星主板、酷冷至尊风扇和 NZXT 机箱的指导手册非常不错,但是我还是需要再找一些其他的材料。下面是我找到的一些有用的视频: 经验总结
最后,大功告成了! 3. 安装操作系统 在显示器可以工作之后,你会看到一个这样的界面。这就是你的 BIOS(注:不同品牌的主板,BIOS 界面略有不同)。我需要更改两处配置,以保证所有的东西都能正常运行:更改启动优先级,替换默认的显卡。 在 MSI 主板上预置的 BIOS 我计划主要将我的机器用于编程和机器学习,所以我决定要安装 Ubuntu 操作系统。我还希望能够通过我的 Mac 对它进行远程操作,所以我可能不需要 Windows,但是你可以安装双系统。 制作安装 Ubuntu 的 U 盘 我依照针对 Mac 的说明(https://www./download/desktop/create-a-usb-stick-on-macos),下载了一个叫做 UNetBootin (https://unetbootin./) 的客户端,它可以为你把所有的事情都处理好。 启动 UBUNTU 若是一切正常,我应该能够插入我的 U 盘,重启,回答问题,安装一个完全可运行版本的 Ubuntu,准备好进行下一步。但是,我得到的确实这样的错误信息。 我按了好几次退出键,之后按了删除键,之后 F1、 F10、 F12、 #%^ 、 $\&]&&&#^,但都没有用。 问题在于微星主板已经选择了默认的「启动优先级」。再次进入 BIOS(在开机之后立刻按 F11),我看到 BIOS 的配置是首先启动硬件驱动(三星固态硬盘),这里面是空的,但是也可能会有一大堆选项。解决办法就是把 USB 选项拉到优先级列表的顶部,然后重启。最后,我看到了这十分友好的 Ubuntu 安装屏幕! 在安装了 Ubuntu 并且重启之后,我很失望地发现我卡在了 Ubuntu 的加载屏幕上,它就停在了那里,最终超时。这又是怎么了呢?! 原来问题在于微星主板内置的显卡(我的 GTX 1080 还在我的咖啡桌上)。它与 Ubuntu 的图形用户界面(GUI)不兼容!这真是经典的鸡和蛋的问题。没有 Ubuntu,我不能下载使用显卡所需的驱动,但是没有显卡,我不能安装 Ubuntu!进入 GRUB (https://help./community/Grub2)。 Ubuntu 启动菜单。你可以在开机后按压左 Shift 键进入这一菜单。 最后,我找到了两篇非常好的文章(http://ask/questions/162075/my-computer-boots-to-a-black-screen-what-options-do-i-have-to-fix-it,http://ask/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。
我通过使用这里的说明 (http://ask/questions/149206/how-to-install-nvidia-run) 解决了这个问题,但是在最初,我都无法通过第一步:「点击 CTRL+ALT+F1,使用你的凭据登录。」我这样做了之后,屏幕又变成了空白,和显示器的连接就断开了。解决方法是启动 Ubuntu,进入文本模式,完成命令行的步骤。 更好的办法 最终让我感到欣慰的是所有的东西(驱动程序、CUDA、深度学习库等)都可以运行了。但是没过多久,因为一些配置文件我又把事情搞得一团糟。 在 Ask Ubuntu 网站上浏览了几个小时之后,我注意到英伟达驱动程序上预先安装了新的 CUDA 8.0 工具箱,让你可以同时安装 CUDA 和驱动程序。 我清除了现有的英伟达库,运行了下面的代码,然后一切都便正常运行了。你可以在这里 (http://docs./cuda/cuda-quick-start-guide/index.html#ubuntu-x86_64) 看到完整的说明。 wget http://developer.download./compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.44-1_amd64.deb 然后将下面的代码添加多你的~/.bash_文件中: export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LIBRARY_PATH:+:${LIBRARY_PATH}} 5. 安装深度学习库 有很多的好文章都对必要的深度学习库和如何安装进行了描述。关键点在于你不能够盲目地跟随这些说明,尤其是关于如何安装的部分。因为这些说明经常更新,你可以在这些库的网站上找到更好的示例。下面是我安装的一些工具:
在这之后,我进行了一些测验以保证一切正常运行,并开始运行 Jupyter 笔记本。 6. 设置远程访问 再是一个可选步骤。但是如果你希望通过笔记本电脑远程操作,下面是一些方法。 Teamviewer 是一款屏幕分享软件。如果你安装了这一软件,并在两个机器上运行,你便可以通过你的笔记本电脑控制 Ubuntu 主机,反之亦可。这让工作变得更加方便,但是在进行屏幕分享时做所有的事情都会有一点延迟且不灵活。 SSH 和端口转发 我想要远程通过 SSH 访问我的新机器,并且和它进行互动,就好像它是我在笔记本上多了个 Tab 键一样。为了做到这一点,我在 Ubuntu 上安装了 OpenSSH。 sudo apt-get install openssh-server sudo service ssh status 之后,我将 Comcast 路由器配置到将外部通信量直接转发到我的主机。我根据 Comcast 的说明,出乎意料的是这居然管用!我通过在 www.canyouseeme.org 查看端口 22,确认了这一点。部分过程可能需要你的公共 IP 地址,你可以通过运行下面的代码找到: dig +short myip.opendns.com @resolver1.opendns.com 远程笔记本 另外一个很酷的技巧就是,如果你喜欢 Jupyter,你可以在你的深度学习主机上运行你的笔记本,但是在你笔记本电脑上进行浏览和编辑。这里有关于这一技巧的一些教程 (http://www./blog/zero-configuration-remote-jupyter-server/),所以我在下面只列出了命令: $laptop: ssh -l bfortuner@DEEPLEARNINGIP $server: jupyter notebook --no-browser --port=8888 $laptop: ssh -NL 8888:localhost:8888 bfortuner@DEEPLEARNINGIP 现在你就可以在笔记本电脑的浏览器上访问 http://localhost:8888,开始编辑你在深度学习机器上的笔记本。 原文地址:https:///@bfortuner/building-your-own-deep-learning-box-47b918aea1eb#.o5pbw9xao 本文为机器之心编译,转载请联系本公众号获得授权。 ------------------------------------------------ 加入机器之心(全职记者/实习生):hr@jiqizhixin.com 投稿或寻求报道:editor@jiqizhixin.com 广告&商务合作:bd@jiqizhixin.com |
|