[译]搭建个人深度学习平台:GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDNN 7 + Tensorflow/Mxnet/

本文讲的是[译]搭建个人深度学习平台:GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDNN 7 + Tensorflow/Mxnet/,


我在 TCL 的实习即将结束。在回校参加毕业典礼之前,我决定搭建自己的个人深度学习平台。我想我不能真的依赖于公司或实验室的机器,毕竟那工作站不是我的,而且开发环境可能是一团糟(它已经发生过一次)。有了个人平台,我可以方便地通过 teamViewer 随时登录我的深度学习工作站。我有机会从头开始搭建平台。

在本文中,我将介绍 PC 平台搭建深度学习的整个过程,包括硬件和软件。在此,我分享给大家,希望对具有相同需求的研究人员和工程师有所帮助。由于我使用 GTX 1080、Ubuntu 16.04、CUDA 8.0RC、CuDNN 7 搭建平台,这些都是最新版本。以下是这篇文章的概述:

硬件

  1. 配件选择
  2. 搭建工作站

软件

  1. 操作系统安装
  • 准备可引导安装的 USB 驱动器
  • 安装系统
  1. 深度学习环境安装
  • 远程控制:teamViewer
  • 开发包管理:Anaconda
  • 开发环境:python IDE
  • GPU 优化环境:CUDA 和 CuDNN
  • 深度学习框架:Tensorflow & Mxnet & Caffe & Darknet
  1. 开箱即用的深度学习环境:Docker
  • 安装 Docker
  • 安装 NVIDIA-Docker
  • 下载深度学习 Docker 镜像
  • 主机和容器之间共享数据
  • 了解简单的 Docker 命令

硬件:

配件选择

我推荐使用 PcPartPicker 来挑选配件。它可以帮助你以最低价购买到配件,并为你检查所选配件的兼容性。他们还上线了一个 youtube 频道,在这个频道里他们提供了用于展示构建过程的视频。

在我的搭建案例中,我使用他们的搭建文章作为参考,并创建了一个搭建清单,可以在 这里找到。以下是我搭建工作站使用的配件。 

由于我们正在进行深度学习研究,一个好的 GPU 是非常有必要的。因此,我选择了新近发布的 GTX 1080。它虽然很难买到,但如果你注意到 newegg (新蛋网,美国新蛋网是电子数码产品销售网站) 上的捆绑销售,一些人已经囤到货并组合 [GPU + 主板] 或 [GPU + 电源] 进行捆绑销售。你懂得,这就是市场。购买捆绑产品会比买一个价格高的要好。不管怎样,一个好的 GPU 将加快训练或者后期调参过程。以下是一些 GTX 1080 同其他品牌 GPU 的优势,在性能,价格和耗电量(节约日常用电量和用于购买合适 PC 电源的开支)。

注意:相比于 12GB 内存的 TITAN X,GTX 1080 仅有 8GB,你可能手头宽裕或更慷慨,因此会选择使用堆叠式 GPU。然后记得选择一个带有更多 PCI 的主板。

配件组装

平台搭建从配件组装开始,我参考了 这段视频(youtube 网站,需要翻墙) 教程。虽然各个部分略有不同,但搭建过程非常相似。我没有一点组装经验,但是有了这个教程,我就能在 3 小时内完成组装。(你可能花费更少的时间,但你知道,我非常谨慎) 

软件:

操作系统安装

通常采用 Ubuntu 进行深度学习研究。但是有时你需要使用另一操作系统协同工作。例如,如果你使用 GTX 1080,同时又是一位 VR 开发者,你可能需要使用 Win10 进行基于 Unity 或其他框架的 VR 开发。以下我将介绍 Win10 和 Ubuntu 的安装。如果你仅对 Ubuntu 的安装感兴趣,你可以跳过 windows 安装。

准备可引导安装的 USB 驱动器

使用 USB 盘安装操作系统非常方便,因为我们少不了它。由于 USB 盘将被格式化,所以您不希望在移动硬盘上发生这种情况。或者如果你有可写的 DVD,你可以用它们来安装操作系统,并保存它们以备将来使用,如果你能在那时再找到它们的话。

由于在官方网站上已经很好的说明了,你可以访问 Windows 10 页面 学习如何制作 USB 驱动。对于 Ubuntu,你可以同样下载 ISO 并构建 USB 安装媒体或者刻录到 DVD 上。如果你正在使用 Ubuntu 系统,参考 Ubuntu 官方网站的 教程。 如果你在使用 Windows,参考 本教程

系统安装

强烈建议安装 Windows 为主系统的双系统。我将会跳过 Win10 的安装,因为详细的安装指南可以从 Windows 10 主页 找到。需要注意的一点是,你需要使用激活码。如果在你的笔记本电脑上安装了 Windows 7 或 我 Windows 10,你可以在你的笔记本电脑底部找到激活码的标签。

安装 Ubuntu16.04 时遇到点小麻烦,这有些出乎意料。这主要是因为一开始我就没有安装 GTX 1080 驱动。我将把这些分享给大家,以防你遇到同样的问题。

安装 Ubuntu:

首先,插入用于安装系统的引导 USB。在我的 LG 显示屏上并没有出现任何东西,除了显示频率太高。但是显示屏是正常的,因为在另一台笔记本上测试过了。我试着将 PC 连接到 电视上,可以在电视上正常显示,但仅有桌面没有工具面板。我发现这是 NVIDIA 驱动的问题。因此我打开 BIOS,并设置集成显卡作为默认显卡并重启。记得要把 HDMI 从 GTX1080 端口上的接口切换到主板上。现在这个显示器工作得很好。我按照提示指南成功地安装了 Ubuntu。 

为了使用 GTX1080,请访问 本页面 获取 基于 Ubuntu 的 NVIDIA 显卡驱动。安装好驱动后,确保 GTX1080 在主板上。 现在屏幕上显示 “You appear to be running an X server..”。 我参考了 本链接 来解决这个问题并安装驱动。我在这里引用下:

  • 确保登出系统。
  • 同时按住 CTRL+ALT+F1 并用你的授权进行登录。
  • 通过运行 sudo service lightdm stop 或 sudo stop lightdm 杀死当前的 X 服务会话。
  • 通过运行 sudo init 3 进入到第三等级 并安装 *.run 文件。
  • 当安装结束,你需要重启系统。如果没有重启,运行 sudo service lightdm start 或 sudo start lightdm 重新启动 X 服务。

驱动器安装完后,我们需要重启并在 BIOS 中 将 GTX1080 设置为默认。此时,我们已经准备好了。

我遇到的其他一些小问题,以备将来使用:

  • 问题: 当我重启时,我不能找到选项来选择 windows。
  • 解决方案: 在 ubuntu 下,sudo gedit /boot/grub/grub.cfg, 增加如下行:
menuentry ‘Windows 10′{
    set root=’hd0,msdos1′
    chainloader +1
}
  • 问题: Ubuntu 不支持 百思买经常出售的这款 Belkin N300 无线适配器,
  • 解决方案: 参考 本链接 的指南, 问题将会被解决。
  • 问题: 安装好 teamViewer 后,提示 “dependencies not met”
  • 解决方案: 参考 本链接

深度学习环境

远程控制软件安装 (TeamViewer):

dpkg -i teamviewer_11.0.xxxxx_i386.deb

包管理工具安装 (Anaconda):

Anaconda 是一个易于安装的免费包管理、环境管理和 Python 分发工具包。其中收集了多达 720 个 开源包并提供免费的支持社区。它可以创建虚拟环境,这些虚拟环境并不会相互影响。当同时使用不同的深度学习框架,这非常有用,尽管它们配置不同。使用它来安装包页非常方便。极易安装,参考这里

使用虚拟环境的一些命令:

  • source activate virtualenv
  • source deactivate

开发环境安装 (Python IDE):

Spyder vs Pycharm?

Spyder:

  • 优点:类 matlab,易于查看中间结果。

Pycharm:

  • 优点:模块化编码、更完整的 web 开发框架和跨平台的 IDE。

在我的个人哲学中,我认为它们只是工具。当使用时每个工具就会派上用场。我将使用 IDE 来构建主项目。例如,使用 pycharm 构建框架。然后,我仅用 vim 修改代码。这并不是说 VIM 有多么的强大和花哨。之后,我将使用 Vim 修改代码。而是因为它是我想真正掌握的文本编辑器。对于文本编辑器,我们不需要掌握两个。在特殊情况下,我们需要频繁地检查IO、目录等,我们可能希望使用 spyder。

安装:

  1. spyder:
  • 你不需要安装 spyder,因为 Anaconda 中已经自带了 spyder
  1. Pycharm
  • 从 官方网站 下载。只需解压。
  • 设置 Pycharm 的 项目解释器为 Anaconda,并进行包管理。关注 这里
  1. vim
  • sudo apt-get install vim
  • 我使用的配置:Github
  1. Git
  • sudo apt install git
  • git config –global user.name “Guanghan Ning”
  • git config –global user.email “guanghan.ning@gmail.com”
  • git config –global core.editor vim
  • git config –list

GPU 优化计算环境安装 (CUDA 和 CuDNN)

CUDA

安装 CUDA 8.0 RC: 选择 7.5 以上版本的 8.0 版本有两个原因:
  • 相比于 CUDA 7.5,CUDA 8.0 将会提高 GTX1080 (Pascal) 的性能。
  • ubuntu 16.04 似乎不支持 CUDA 7.5,因为你在官网上找不到它。因此 CUDA 8.0 是唯一的选择。
CUDA 入门指南
CUDA 安装指南
  1. sudo sh cuda_8.0.27_linux.run
  2. 按照命令提示
  3. 作为 CUDA 环境一部分,你需要在你主目录的 ~/.bashrc 文件中添加以下内容。
  • export CUDA_HOME=/usr/local/cuda-8.0
  • export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
  • PATH=${CUDA_HOME}/bin:${PATH}
  • export PATH
  1. 验证是否安装 CUDA(记住需要重启 terminal):
  • nvcc –version

CuDNN(CUDA 深度学习库)

安装 CuDNN
  • 版本:CuDNN v5.0 for CUDA 8.0RC
用户指南
安装指南
  1. 方式一:(环境变量中添加 CuDNN 路径)
  • Extract folder “cuda”
  • cd
  • export LD_LIBRARY_PATH=pwd:$LD_LIBRARY_PATH
  1. 方式二: (将 CuDNN 的文件 拷贝到 CUDA 文件夹下。如果 CUDA 运行正常,它会通过相对路径自动找到 CUDNN)
  • tar xvzf cudnn-8.0.tgz
  • cd cudnn
  • sudo cp include/cudnn.h /usr/local/cuda/include
  • sudo cp lib64/libcudnn* /usr/local/cuda/lib64
  • sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

安装深度学习框架:

Tensorflow / keras

首先安装 tensorflow
  1. 使用 Anaconda 安装
  • conda create -n tensorflow python=3.5
  1. 在环境中使用 Pip 安装 Tensorflow (目前不支持 cuda 8.0。当 CUDA 8.0 的二进制文件发布后我将会进行更新)
  • source activate tensorflow
  • sudo apt install python3-pip
  • export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp35-cp35m-linux_x86_64.whl
  • pip3 install –upgrade $TF_BINARY_URL
  1. 直接使用源码安装 Tensorflow
  • install bazel: install jdk 8, uninstall jdk 9.
  • sudo apt-get install python-numpy swig python-dev
  • ./configure
  • build with bazel: bazel build -c opt –config=cuda //tensorflow/cc:tutorials_example_trainer, bazel-bin/tensorflow/cc/tutorials_example_trainer –use_gpu.
安装 keras
  1. 下载: github.com/fchollet/ke…
  2. 定位到 Keras 目录中并运行安装命令:
  • sudo python setup.py install
  1. 改变默认后端 从 theano 到 tensorflow
使用 conda 在虚拟环境间进行切换
  1. source activate tensorflow
  2. source deactivate

Mxnet

为 Mxnet 创建一个虚拟环境
  1. conda create -n mxnet python=2.7
  2. source activate mxnet
参考 官方网站 安装 mxnet
  1. sudo apt-get update
  2. sudo apt-get install -y build-essential git libatlas-base-dev libopencv-dev
  3. git clone –recursive https://github.com/dmlc/mxnet
  4. edit make/config.mk
  5. set cuda= 1, set cudnn= 1, add cuda path
  6. cd mxnet
  7. make clean_all
  8. make -j4
  • 我遇到的一个问题是,“高于 5.3 版本的 gcc 是不支持的!”, 而我的 gcc 为 5.4,因此我不得不删除它。
  • apt-get remove gcc g++
  • conda install -c anaconda gcc=4.8.5
  • gcc –version
用于 mxnet 的Python 包安装
  1. conda install -c anaconda numpy=1.11.1
  2. 方法 1:
  • cd python; sudo python setup.py install
  • sudo apt-get install python-setuptools
  1. 方法 2:
  • cd mxnet
  • cp -r ../mxnet/python/mxnet .
  • cp ../mxnet/lib/libmxnet.so mxnet/
  1. 快速测试:
  • python example/image-classification/train_mnist.py
  1. GPU 测试:
  • python example/image-classification/train_mnist.py –network lenet –gpus 0

Caffe

  1. 参考详细指南:Caffe Ubuntu 16.04 或 15.10 安装指南
  2. 需要安装 OpenCV。Opencv 3.1 的安装,参考以下链接:Ubuntu 16.04 或 15.10 OpenCV 3.1 安装指南

Darknet

  • 这是所有需要安装工具中最易安装的。仅需运行 “make” 命令,就是这么简单。

开箱即用的深度学习环境:Docker

我已经在 Ubuntu 14.04 和 TITAN-X (cuda7.5) 上正确的安装过 caffe、darknet、mxnet 和 tensorflow 等。我已经完成了这些框架的项目,一切都很顺利。因此,如果你想专注于深度学习的研究,而不是被你可能遇到的外围问题所困扰,那么使用这些预先构建的环境比使用最新版本更安全。然后,您应该考虑使用 docker 将每个框架与它自己的环境隔离开来。这些 docker 镜像可以在 DockerHub 中找到。

安装 Docker

与虚拟器不同,docker 镜像由层构建。同一个组件可以在不同的镜像间共享。当我们下载一个新镜像,已经存在的组件是不需要重新下载的。相比于完全替换虚拟机镜像,这是非常高效和方便的。docker 容器是 docker 镜像的运行时。这些镜像可以被提交和更新,就如同 Git.

要在 Ubuntu 16.04 上安装 docker,我们可以参考 官方网站 的指南。

安装 NVIDIA-Docker

docker 容器是硬件和平台无关的,但是 docker 并没有通过容器来支持 NVIDIA GPU。(硬件是专门的,需要驱动程序。)为了解决这个问题,在特定的机器上启动容器的时候,我们需要 nvidia-docker 挂载到设备和驱动文件上。在这种情况下,镜像对于 Nvidia 驱动是不可知的。

NVIDIA-Docker 的安装从 这里 可以找到。

下载深度学习 Docker 镜像

我从 docker Hub 收集了一些预购建镜像。这些镜像列表如下:

  • cuda-caffe
  • cuda-mxnet
  • cuda-keras-tensorflow-jupyter

可以在 docker hub 上找到更多镜像。

在主机和容器间共享数据 对于计算机视觉研究人员来说,没有看到结果会很尴尬。例如,给一个图像添加毕加索风格,我们希望从不同的 epoch 输出结果。参考 本页面 快速在主机和容器间共享数据。在一个共享目录中,我们可以创建项目。在主机上,我们可以使用文本编辑器或者我们喜欢的 IDE 来编写代码。接着,我们可以在容器中运行程序。共享容器中的数据可以在基于 Ubuntu 机器的主机上通过 GUI 看到并处理。

了解简单的 命令

如果你是一个 docker 新手,不要不知所措。如果你将来不需要用到它的话,你是不需要系统的学习这方面的知识的。以下是一些在 docker 上 使用的简单命令。如果你认为 docker 是一个工具,这些命令足够了,并且仅仅是为了深度学习而使用它。

如何检查 docker 镜像?
  • docker images: 查询所有安装的 docker 镜像。
如何检查 docker 容器?
  • docker ps -a:查询所有安装的容器。
  • docker ps: 查询当前运行的容器
如何退出 docker 容器?
  1. (方法 1) 在对应于当前容器的终端输入:
  • exit
  1. (方法 2) 使用 [Ctrl + Alt + T] 打开一个新终端,或者使用 [Ctrl + Shift + T] 打开一个新终端:
  • docker ps -a:查询安装的镜像。
  • docker ps: 查询运行的容器。
  • docker stop [container’s ID]: 停止退出容器。
  1. 如何删除一个 docker 镜像?
  • docker rmi [docker_image_name]
  1. 如何删除一个 docker 容器?
  • docker rm [docker_container_name]
  1. 基于已经存在的镜像如何制作我们自己的 docker 镜像?(从一个已经创建的镜像更新容器并且将结果提交到镜像。)
  • 加载镜像,打开一个容器
  • 在容器中做一些修改 -提交镜像:docker commit -m “Message: Added changes” -a “Author: Guanghan” 0b2616b0e5a8 ning/cuda-mxnet
  1. 在主机和 docker 容器之间拷贝数据:
  • docker cp foo.txt mycontainer:/foo.txt
  • docker cp mycontainer:/foo.txt foo.txt
  1. 从 docker 镜像中打开一个容器:
  • 是否需要保存这个容器,因为它是可以被提交的:docker run -it [image_name]
  • 如果容器只是暂时使用:docker run –rm -it [image_name]

欢迎发表评论





原文发布时间为:2017年9月17日


本文来自合作伙伴掘金,了解相关信息可以关注掘金网站。

时间: 2025-01-17 20:26:54

[译]搭建个人深度学习平台:GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDNN 7 + Tensorflow/Mxnet/的相关文章

数人云联合清华OCP实验室共建深度学习平台

<企业网D1Net>11月14日(北京)近日,数人云与清华大学交叉信息研究院开放计算项目实验室(OCP实验室)合作共建深度学习平台,该平台通过数人云操作系统实现GPU资源共享,利用Docker技术交付深度学习的运行环境,让深度学习项目组师生可以更加灵活地使用GPU资源,并解决深度学习环境部署繁琐的问题. 深度学习算法的计算性能依赖强大的GPU计算能力,为了尽可能提高GPU资源利用率,数人云利用Mesos将GPU资源汇聚成资源池实现资源共享,并借用Docker交付深度学习的运行环境. 深度学习平

继谷歌、FB后 百度开放深度学习平台PaddlePaddle

9月26日消息,百度近日宣布其全新的深度学习开源平台PaddlePaddle在开源社区Github及百度大脑平台开放,供广大开发者下载使用. 继Google.Facebook后百度开放深度学习平台PaddlePaddle 什么是PaddlePaddle? Google于去年11月发布并开源了新的机器学习平台TensorFlow,供相关技术人员进行语音识别或照片识别等多项机器深度学习领域的研究:IBM几乎同步采取了行动,于去年11月底宣布通过Apache软件基金会免费为外部程序员提供System

华米CEO黄汪谈2017的人工智能战略:发力于深度学习平台与深度学习芯片

近日雷锋网(公众号:雷锋网)了解到,华米科技 CEO 黄汪在 2017 新年内部信中写到,华米成立人工智能实验室,并将发力深度学习平台的搭建和基于 DL 的可穿戴芯片的研发. 黄汪提到,人工智能是一种能力,华米经过今年一整年的准备,在近期宣布成立华米人工智能实验室,并声称在 2 年内成为业内顶尖的 AI 团队.据悉,华米人工智能实验室不仅负责搭建华米手表在云端运动及健康大数据的深度学习平台,还将与第三方合作,主导研发自有的第一颗基于深度学习的可穿戴芯片. 黄汪曾提到:我一直认为华米是一家人体数据

小米深度学习平台架构与实现

内容来源:2016年12月16日,小米云平台深度学习研发工程师陈迪豪在"GIAC 全球互联网架构大会"进行<支撑百度搜索引擎99.995%可靠名字服务架构设计>演讲分享.IT大咖说作为独家视频合作方,经主办方和讲者审阅授权发布.阅读字数:2783 | 4分钟阅读 嘉宾演讲视频和PPT地址 http://t.cn/R9ONt8f 机器学习与深度学习应用 机器学习是通过机器进行自主学习数据而非以编码的方式:深度学习是机器学习的一个分支,主要包括四种最基本的网络结构. CNN是卷

将旗下的深度学习平台免费开放,美团云到底是怎么考虑的?

随着人工智能和大数据的火热,与二者紧密相连的云服务也成为一片热土:除了从一开始就扎根于云服务行业的垂直厂商,更有不少具有一定体量的互联网公司跨界而入,BAT 如此,网易如此,京东亦如此. 实际上,连起家于团购和外卖行业的美团也已经趁势入局. 左手 Intel,右手 NVIDIA 10 月 31 日,美团点评旗下的云服务美团云,以"赋能 AI 共生共赢"为主题,在北京举行了 2017 年美团云人工智能峰会,这也是美团云首次举办面向行业的此类峰会. 在此次峰会上,美团云总经理李爽率先展示了

云计算深度学习平台架构与实践的必经之路

定义云深度学习平台什么是云深度学习?随着机器学习的发展,单机运行的机器学习任务存在缺少资源隔离.无法动态伸缩等问题,因此要用到基于云计算的基础架构服务.云机器学习平台并不是一个全新的概念,Google.微软.亚马逊等都有相应的服务,这里列举几个比较典型的例子. 定义云深度学习平台什么是云深度学习?随着机器学习的发展,单机运行的机器学习任务存在缺少资源隔离.无法动态伸缩等问题,因此要用到基于云计算的基础架构服务.云机器学习平台并不是一个全新的概念,Google.微软.亚马逊等都有相应的服务,这里列

【BDTC先睹为快】邹永强:腾讯Mariana深度学习平台实战细节大曝光

2014年12月12-14日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中科院计算所与CSDN共同协办的  2014中国大数据技术大会(Big Data Technology Conference 2014,BDTC 2014) 将在北京新云南皇冠假日酒店拉开帷幕.大会为期三天,以推进行业应用中的大数据技术发展为主旨,拟设立"大数据基础设施"."大数据生态系统"."大数据技术"."大数据应用"."大

老师木讲架构:深度学习平台技术演进

2017年12月22日,袁进辉(老师木)代表OneFlow团队在全球互联网架构大会上海站做了<深度学习平台技术演进>的报告,小编对报告内容作简要梳理注解,以飨读者. 此次报告的主要观点为:(1)计算力是神经网络/深度学习复兴的最大推动力之一:(2)面对深度学习的计算力挑战,软件至少和硬件一样地关键,单靠硬件无法提供易用性和扩展性:(3)鉴于深度学习上层业务和底层硬件的独特性,传统大数据平台里的某些技术未必再对深度学习平台适用:(4)深度学习软件平台技术在快速演进中,一部分早期被采用的技术正在被

Ubuntu 16.04 64位中搭建Node.js开发环境教程_node.js

前言 首先说下本文的系统环境是:Ubuntu 16.04 64位,本文内容亲测可用, 大家可以请放心借鉴参考,下面来一起看看详细的步骤. 使用淘宝镜像 淘宝镜像官网是https://npm.taobao.org/ 使用淘宝镜像前请自行安装好 npm 和 node node 和 npm 的安装 node可以在这里下载 本文使用的是官方推荐v4.4.4长期支持版 下载并解压 node-v4.4.4-Linux-x64.tar.xz tar -xJf node-v4.4.4-linux-x64.tar