深度学习指南:基于Ubuntu从头开始搭建环境

原文标题:Setting up a Deep Learning Machine from Scratch (Software) 原文链接:https://github.com/saiprashanths/dl-setup 译者:刘翔宇 审校:赵屹华 责编:周建丁(zhoujd@csdn.net)

这是一篇为机器搭建深度学习研究环境的详细指南,包括驱动程序、工具和各种深度学习框架的安装指导。在64位Ubuntu 14.04的机器上使用Nvidia Titan X进行测试。

还有一些有类似目的的指南。一些内容有限,而另外一些则不是最新的。该指南基于(有些部分是复制来的):

目录

  • 基础知识
  • Nvidia驱动
  • CUDA
  • cuDNN
  • Tensorflow
  • OpenBLAS
  • 常用工具
  • Caffe
  • Theano
  • Keras
  • Torch
  • X2Go

基础知识

  • 首先,打开终端,运行以下命令确保你的操作系统是最新的
sudo apt-get update  
sudo apt-get upgrade  
sudo apt-get install build-essential  sudo apt-get autoremove

安装git

sudo apt-get install git

Nvidia驱动

  • 查看显卡型号
lspci | grep -i nvidia
  • 到Nvidia官网查找你显卡对应的最新驱动和系统设置。你可以从此网站上下载并安装驱动,但这样做会升级到更新的驱动,并且卸载的时候会有些麻烦。此外,这么做需要你退出X服务会话,从终端进行安装,这比较麻烦。
  • 我们将使用apt-get来安装驱动。到 “Proprietary GPU Drivers” PPA中查看是否有你最新的驱动。注意,最新的驱动一定是最稳定的。你也可以安装网页上推荐的驱动版本。添加”Proprietary GPU Drivers” PPA 资源库。在写这篇文章的时候,最新版本是361.42,然而推荐版本是352:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-352
  • 重启系统
sudo shutdown -r now
  • 检查以确保安装了正确版本的NVIDIA驱动
cat /proc/driver/nvidia/version

CUDA

  • 从Nvidia上下载CUDA7.5。然后到下载目录下安装CUDA
sudo dpkg -i cuda-repo-ubuntu1404*amd64.deb
sudo apt-get update
sudo apt-get install cuda
  • 添加CUDA到环境变量
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrcecho 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrcsource ~/.bashrc
  • 检查以确保安装了正确版本的CUDA
nvcc -V
  • 重启系统
sudo shutdown -r now

检查CUDA安装(可选)

  • 在CUDA安装目录安装样例。编译它们(需要几分钟):
/usr/local/cuda/bin/cuda-install-samples-7.5.sh ~/cuda-samplescd ~/cuda-samples/NVIDIA*Samples
make -j $(($(nproc) + 1))

注意:(-j $(($(nproc) + 1)))命令使用你机器上的核心数并行执行,所以编译会更快

  • 运行deviceQuery,确保它能检测到显卡并测试通过
bin/x86_64/linux/release/deviceQuery

cuDNN

  • cuDNN是为DNN设计的CPU加速库。它能在多种情况下帮助提升执行速度。为了下载cuDNN库,你需要到Nvidia网站https://developer.nvidia.com/cudnn上进行注册。几小时到几个工作日就能够批准。一旦注册批准,下载Linux版本的cuDNN v4。最新版本是cuDNN v5,但是不是所有的工具都支持。
  • 解压并复制文件
cd ~/Downloads/tar xvf cudnn*.tgz
cd cuda
sudo cp */*.h /usr/local/cuda/include/sudo cp */libcudnn* /usr/local/cuda/lib64/sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

检查

  • 你可以使用nvidia-smi 命令检查目前所有操作都正确。这应该会输出GPU的一些统计数据

Tensorflow

  • 安装v0.8版本与GPU兼容。下面的指令都来自于这里
sudo apt-get install python-pip python-dev sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
  • 运行一个测试程序确保Tensorflow成功安装。当你执行import命令的时候,应该不会有警告/错误。
python>>> import tensorflow as tf>>> exit()

OpenBLAS

  • OpenBLAS是一个线性代数库,比Atlas更快。这一步是可选的,但要注意,下面的一些步骤假定你已经安装了OpenBLAS。你需要安装gfortran来编译它。
mkdir ~/gitcd ~/git
git clone https://github.com/xianyi/OpenBLAS.gitcd OpenBLAS
make FC=gfortran -j $(($(nproc) + 1))sudo make PREFIX=/usr/local install
  • 将路径添加到LD_LIBRARY_PATH 变量中
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc

常用工具

  • 为Scipy安装一些常用工具
sudo apt-get install -y libfreetype6-dev libpng12-devpip install -U matplotlib ipython[all] jupyter pandas scikit-image

Caffe

  • 下面的指令都来自于这里。第一步是安装所必须的文件
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-get install --no-install-recommends libboost-all-devsudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
  • 克隆Caffe资源库
cd ~/git
git clone https://github.com/BVLC/caffe.gitcd caffecp Makefile.config.example Makefile.config
  • 如果你安装了cuDNN,取消Makefile中USE_CUDNN := 1 这一行的注释
sed -i 's/# USE_CUDNN := 1/USE_CUDNN := 1/' Makefile.config
  • 如果你安装了OpenBLAS,修改BLAS参数值为open
sed -i 's/BLAS := atlas/BLAS := open/' Makefile.config
  • 安装需要的文件,构建Caffe和测试,运行测试确保所有测试都通过。注意,这都需要一段时间。
sudo pip install -r python/requirements.txt
make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest -j $(($(nproc) + 1))
  • 构建PyCaffe,Caffe的Python接口
make pycaffe -j $(($(nproc) + 1))
  • 将Caffe添加到环境变量中
echo 'export CAFFE_ROOT=$(pwd)' >> ~/.bashrcecho 'export PYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH' >> ~/.bashrcsource ~/.bashrc
  • 测试确保Caffe安装成功。当执行import命令的时候应该不会有警告/错误。
ipython>>> import caffe>>> exit()

Theano

  • 安装所必须的文件,然后安装Theano。这些指令来自于这里
sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ python-pygments python-sphinx python-nosesudo pip install Theano
  • 测试Theano安装。当执行import命令的时候应该不会有警告/错误。
python>>> import theano>>> exit()

Keras

  • Keras是围绕Theano和Tensorflow设计的一个有用的封装。默认情况下,它使用Theano作为后端。查看这里的指令以了解如何变更为Tensorflow。
sudo pip install keras

Torch

  • 下面安装Torch的指令来自于这里。安装会花一些时间
git clone https://github.com/torch/distro.git ~/git/torch --recursive
cd torch; bash install-deps;./install.sh

X2Go

  • 如果你的深度学习机器不是主要工作机器,X2Go可以帮助你远程访问。X2Go是一个了不起的远程访问解决方案。你可以使用下面的命令在Ubuntu机器上安装X2Go服务。
sudo apt-get install software-properties-commonsudo add-apt-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goserver x2goserver-xsession
  • X2Go不支持统一桌面环境(Ubuntu的默认环境)。我发现XFCE效果不错。更多支持的环境在这里
sudo apt-get update
sudo apt-get install -y xfce4 xfce4-goodies xubuntu-desktop
  • 使用下面的命令查看机器的IP
hostname -I
  • 你可以使用上面的IP在你主要使用的机器上安装一个客户端来连接到深度学习服务器上。根据你的客户端系统,这里有更多的指令。

原文发布于微信公众号 - 人工智能头条(AI_Thinker)

原文发表时间:2016-06-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

Github|Python开源项目漫游指南(一)

Scikit-learn Scikit-learn是基于Scipy为机器学习建造的的一个Python模块,他的特色就是多样化的分类,回归和聚类的算法包括支持向量...

2297
来自专栏Python小屋

Python使用OpenCV+pillow提取AVI视频中关键帧图像

问题描述:使用OpenCV把AVI视频切分成静态图像,提取视频中的关键帧,保存为0.jpg、1.jpg、2.jpg.......

5835
来自专栏李蔚蓬的专栏

关于TensorFlow的安装和心得

随后在cmd处通过import tensorflow,查看本机的CUDA以及cuDNN的适机版本:

2613
来自专栏Albert陈凯

使用storm trident消费kafka消息

storm通过保证数据至少被处理一次来保证数据的完整性,由于元祖可以重发,对于一些需要数据精确的场景,可以考虑用storm trident实现。 传统的事物型...

3149
来自专栏章鱼的慢慢技术路

用ARM实现音乐电子相册

2602
来自专栏极客慕白的成长之路

Kraken.io – 最好用的在线图片压缩工具

Kraken.io 是一个在线图片优化和压缩服务,在保持图像原始质量的同时尽可能的缩减图像大小,支持 JPEG、PNG、GIF 动画和 SVG 格式。

661
来自专栏人工智能LeadAI

配置深度学习主机与环境(TensorFlow+1080Ti) | 第四章 基于Anaconda的TensorFlow安装

配置深度学习主机与环境(TensorFlow+1080Ti): 01 概念介绍 Anaconda Anaconda(https://www.continuu...

4175
来自专栏IT技术精选文摘

LVS集群的负载调度

1. 前言 本文将主要讲述在负载调度器上的负载调度策略和算法,如何将请求流调度到各台服务器,使得各台服务器尽可能地保持负载均衡。文章主要由两个部分组 成。第...

2379
来自专栏有趣的django

Django REST framework+Vue 打造生鲜超市(五) 六、商品类别数据展示

六、商品类别数据展示 6.1. 商品类别数据接口 (1)商品分类有两个接口: 一种是全部分类:一级二级三级 ?   一种是某一类的分类以及商品详细信息: ?  ...

9628
来自专栏维C果糖

GitHub 主页介绍及修改个人信息

接着「敲开 GitHub 的大门 - 注册账号」一文的内容,我们继续往下介绍: ? 标注 1:View profile and more,更多选项视图; 标注 ...

2207

扫码关注云+社区

领取腾讯云代金券