资讯专栏INFORMATION COLUMN

从硬件配置到软件安装,一台深度学习机器的配备指南

joywek / 3430人阅读

摘要:很明显这台机器受到了英伟达的部分启发至少机箱是这样,但价格差不多只有的一半。这篇个文章将帮助你安装英伟达驱动,以及我青睐的一些深度学习工具与库。

本文作者 Roelof Pieters 是瑞典皇家理工学院 Institute of Technology & Consultant for Graph-Technologies 研究深度学习的一位在读博士,他同时也运营着自己的面向客户的深度学习产品。对于写作这个系列文章的动机,他写道:「我已经习惯了在云上工作,并且还将继续在云上开发面向产品的系统/算法。但是在更面向研究的任务上,基于云的系统还存在一些缺陷,因为在研究时你要做的基本上就是尝试各种各样的算法和架构,并且需要快速改进和迭代。为了做到这一点,我决定自己使用 GPU 设计和打造自己的量身定制的深度学习系统。在这一些方面这比我想象的简单,但另一些方面却更困难。在接下来的文章中,我会和你分享我的『冒险之旅』,不关你是深度学习实践的新手还是老手,希望这都对你有用。」目前该系列文章已经更新了两篇,机器之心将其统一编译到了这篇文章中。

第一部分:硬件平台搭建

如果你像我一样,每天(和每夜)都在和实际的机器学习应用打交道,你就知道在完成一项任务时如果没有合适的硬件会有多么痛苦。不管你是业界人士还是在学术界工作,为了一项实验或计算的结果等待不必要长的时间总是会让人感到烦恼。对于用于生产的研究和开发,高速硬件是必需的,而 GPU 通常是我们所面临的主要瓶颈,尤其对于深度神经网络(DNN)更是如此。是的,确实是这样:亚马逊这样的云提供商以低于每小时 1 美元的价格出售可以执行 GPU 计算的实例和可以导出、共享和重复使用的可以直接进行生产的虚拟机。如果你常常从头开始安装库,你可能知道软件和硬件库都可以使用定期更新的安装脚本或 dockerized 容器轻松地完成安装。这些都还不错。但是如果一个应用的需求超过了亚马逊所能提供的 4GB GPU 呢(即使他们的 g2.8xlarge 仍然也只提供同样的 4GB GPU)?其它云提供商也很少提供更大的 GPU(通常是 6GB),而且似乎都是专门为特定的应用(视频版或生物科学)定制的。

那么如果你有这种需求,你该怎么做呢?很简单,搭建你自己的 GPU 平台!

目录

了解你的研究

起步:选择正确的组件

将它们组装到一起

DIY 或寻求帮助

选项 A:DIY

选项 B:外界帮助

了解你的研究

一旦我决定了搭建我自己的 GPU 系统时,我首先想到的是:为什么要这么麻烦自己去搭建一个呢,英伟达不是刚发布了其强大的 DevBox 吗,而且还可能有其它供应商也在为深度学习应用做同样的事?

确实如此,也有一些其它公司在生产面向研究的机器,但它们都不面向欧洲发售。英伟达的 DevBox 也仅在美国出售,而且价格还高得离谱(大约 9000 美元的硬件组件售价 1.5 万美元),而且还要排队等待。

所以该怎么办呢?简单:搭建你自己的 GPU 平台!

起步:选择正确的组件

浏览网络时我发现 Tim Dettmers 的博客(http://timdettmers.com/)很好地讲解了如何为深度学习应用选择合适的 GPU 和硬件。在这里我不打算将他说过的内容再完全重复一遍。你可以自己去他的博客看!文章和下面的评论都值得一读。

简而言之:

双精度(比如英伟达的 Tesla K20/40/80)完全是浪费钱,因为 DNN 不需要这样的精度;

想想你现在和未来需要多少个 GPU。4 个 GPU 是最多了,因为再多也不能再带来太多性能增益了。这主要是因为较好的主板最多只支持最多 40 个通道(以 16x8x8x8 的配置)。另外,每个 GPU 都会增加一定的管理工作——你的系统需要决定使用哪个 GPU 来执行哪项任务。

获取一个支持 PCIe 3.0 的主板,它还要支持一根线缆上带有 8pin + 6pin 的 PCIe 电源连接器,这样你才能添加到 4 个 GPU。主板还应该支持你的 GPU 配置,即支持 x8/x8/x8/x8 的 4 GPU 设置的物理线路;

找一个能把所有东西都装进去的机箱。越大的机箱空气流动就越好。确保有足够的 PCIe 槽以支持所有 GPU 以及其它你可能需要安装的 PCIe 卡(比如高速千兆网卡等)。一个 GPU 通常会占据 2 个 PCIe 插槽的空间。一个典型的机箱需要有 7 个 PCIe 槽,因为最后一个安装在底部的 GPU 可以仅使用一个槽。

CPU 不需要非常快,也不需要有很多核。只需要确保 CPU 的核数至少是你的 GPU 的数量的两倍就可以了(再次强调:要考虑未来的使用情况;英特尔的 CPU 通常一个核有两个线程)。还要确保该 CPU 支持 40 个 PCIe 通道,一些新的 Haswell CPU 只支持 32 个;

RAM 大小是你的全部 GPU 内存之和的两倍;

SSD 很不错,但除非决定有必要才用——如果你加载的数据无法配入到 GPU 内存和 RAM 的组合中。如果你确实要使用一个 SSD,它的容量至少应该大于你较大的数据集;

至于普通的机械硬盘,你可能需要大量的磁盘空间来存储你的数据集和其它类型的数据。如果你需要至少 3 个同样大小的磁盘,RAID5 就很不错。基本上一旦发生单个错误时,你不会丢失你的数据。用于提升性能的 RAID0 等其它 RAID 配置通常没多大用处:你可用 SSD 提速,而且它已经超过了你的 GPU 通过 PCIe 带宽加载数据的速度;

至于供电单元(PSU),只要你负担得起,就尽可能选一个较高效的,并且要把你所需要的总功率考虑在内(要考虑未来的使用):钛或铂金品质的 PSU 值得你花钱购买:你能省钱和保护环境,因为其所节省的电力开销用不了多久就能把你的额外购买成本节省回来。对于 4 GPU 系统,你大概需要 1500 到 1600 W;

冷却是非常非常重要的,因为它会同时影响到性能和噪音。你需要一直将 GPU 的温度保持在 80 度(约 26.7 摄氏度)以下。更高的温度会拉低该单元的电压并影响到性能。另外,太高的温度也对你的 GPU 有害;这是你需要避免的。冷却有两种主要选项:风冷(风扇)和水冷(管道):

风冷更便宜、安装和维护更简单、但会制造大量噪音;

水冷价格更高、难以正确安装,但没有任何噪音,而且对组件的冷却效果也好得多。但你总归需要机箱风扇来冷却其它组件,所以你总会听到一些噪音,但会比全风冷的系统的噪音小。

将它们组装到一起

根据我读到的内容、Tim Dettmers 的回复和英伟达的 DevBox and Gamer 论坛的建议,我开始将这些组件组装到一起。很明显这台机器受到了英伟达 DevBox 的部分启发(至少机箱是这样),但价格差不多只有 DevBox 的一半。

机箱:Carbide Air 540 High Airflow ATX Cube

主板:华硕 X99-E WS 工作站级主板,带有 4 路 PCI-E Gen3 x16 支持

RAM:64GB DDR4 Kingston 2133Mhz (8x8GB)

CPU:Intel(Haswell-e) Core i7 5930K (http://ark.intel.com/products/82931/Intel-Core-i7-5930K-Processor-15M-Cache-up-to-3_70-GHz) (6 Core 3.5GHz)

GPU:3 块 NVIDIA GTX TITAN-X 12GB

HDD:3 块 RAID5 配置的 3TB WD Red

SSD:2 块 500GB SSD Samsung EVO 850

PSU: Corsair AX1500i (1500 W) 80 Plus Titanium (94% 的能效)

冷却:用于 CPU 和 GPU 的自制水冷系统(软管):在机箱顶部钻了一个注水孔,前面有一个透明的储水器(见下图)

左图:正在构建中的系统。你可以看到用于水冷的塑料管穿过 Carbide Air 540 机箱上原本就有的孔洞。主板是竖直安装的。

中图和右图:建造好的系统。注意可以从外面看到的储水器。还可以看到从上至下的红色塑料管:上连注水口,下接水泵,穿过安装在 GPU 上的散热器模块。还可以看到 CPU 上有一个类似的结构。

DIY 或寻求帮助

选项 A:DIY

当然,如果你有时间和意愿自己动手打造所有的一切,这将成为你完全理解各个组件的工作方式以及哪些硬件可以很好适配的绝佳方法。另外,你也可能能更好地理解当组件出现故障时应该做什么并更轻松地修复它。

选项 B:外界帮助

另一种选择是寻找专业的公司预定零件并让他们帮助组装好整个系统。你要寻找的这类公司应该是定制游戏机电脑的公司,他们常常为游戏玩家打造定制化的系统。他们甚至有水冷系统的经验,尽管游戏机电脑通常只需要水冷 CPU,但他们会有很好用的工具套件。当然,为了安装全水冷系统,你需要将 GPU 外壳打开,将芯片暴露出来安装散热片,再装上水管、压缩机帽等等各种所需的组件。不过水冷也有麻烦的地方:一旦出现漏水,你的 GPU 和其它组件就会被毁坏。

因为我觉得我不能将这些东西装在一起以及正确地安装水冷气系统,而且我还没有多少时间阅读操作手册,所以我选择了第二种方案:找了一个非常熟练的硬件打造商帮我组装了我的深度学习机器的第一个版本。

第二部分:安装软件和库

目录 

软件和库

安装 CUDA 

测试 CUDA 

深度学习库

软件和库

现在,我们有了一台裸机,是时候安装软件了!网上已有有了一些好的博文指导安装深度学习工具和库。为了简单化,我临时把一些要旨放在一起。这篇个文章将帮助你安装英伟达 CUDA 驱动,以及我青睐的一些深度学习工具与库。此外,我也假设你已经在电脑上安装了 Ubuntu 14.04.3 作为操作系统。

1.安装 CUDA 

让图像驱动程序能正常工作是一件很痛苦的事。我当时的问题是 Titan X GPU 只能得到 Nvidia 346 的支持,这些驱动不能在我特定的监控器下工作。经过一些 xconfig 改装,我终于让它能在高于 800×600 的分辨率下工作了,我使用了 Linux X64 (AMD64/EM64T) DISPLAY DRIVER 352.30 版本作为图像驱动。

设置演示安装的是 CUDA 7.0,我选择安装的 CUDA 7.5。虽然该版本的确有所改进,但在一些库上也难以正常工作。如果你想快速启动并运行,可以尝试 7.0 版本。

!/usr/bin/env bash

# Installation script for Cuda and drivers on Ubuntu 14.04, by Roelof Pieters (@graphific)

# BSD License

if [ "$(whoami)" == "root" ]; then

  echo "running as root, please run as user you want to have stuff installed as"

  exit 1

fi

###################################

#   Ubuntu 14.04 Install script for:

# - Nvidia graphic drivers for Titan X: 352

# - Cuda 7.0 (7.5 gives "out of memory" issues)

# - CuDNN3

# - Theano (bleeding edge)

# - Torch7

# - ipython notebook (running as service with circus auto(re)boot on port 8888)

# - itorch notebook (running as service with circus auto(re)boot on port 8889)

# - Caffe 

# - OpenCV 3.0 gold release (vs. 2015-06-04)

# - Digits

# - Lasagne

# - Nolearn

# - Keras

###################################

# started with a bare ubuntu 14.04.3 LTS install, with only ubuntu-desktop installed

# script will install the bare minimum, with all "extras" in a seperate venv

export DEBIAN_FRONTEND=noninteractive

sudo apt-get update -y

sudo apt-get install -y git wget linux-image-generic build-essential unzip

# manual driver install with:

# sudo service lightdm stop

# (login on non graphical terminal)

# wget http://uk.download.nvidia.com/XFree86/Linux-x86_64/352.30/NVIDIA-Linux-x86_64-352.30.run

# chmod +x ./NVIDIA-Linux-x86_64-352.30.run

# sudo ./NVIDIA-Linux-x86_64-352.30.run

# Cuda 7.0

# instead we install the nvidia driver 352 from the cuda repo

# which makes it easier than stopping lightdm and installing in terminal

cd /tmp

wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb

sudo dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

echo -e " export CUDA_HOME=/usr/local/cuda export CUDA_ROOT=/usr/local/cuda" >> ~/.bashrc

echo -e " export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc

echo "CUDA installation complete: please reboot your machine and continue with script #2"

2. 测试 CUDA 

完成安装了?很好,接下来让我们看一下 CUDA 驱动是否能够正常工作。直接进入 CUDA 样本目录,运行 ./deviceQuery。你的 GPU 应该会被显示如下:

#!/usr/bin/env bash

# Test script for checking if Cuda and Drivers correctly installed on Ubuntu 14.04, by Roelof Pieters (@graphific)

# BSD License

if [ "$(whoami)" == "root" ]; then

  echo "running as root, please run as user you want to have stuff installed as"

  exit 1

fi

###################################

#   Ubuntu 14.04 Install script for:

# - Nvidia graphic drivers for Titan X: 352

# - Cuda 7.0 (7.5 gives "out of memory" issues)

# - CuDNN3

# - Theano (bleeding edge)

# - Torch7

# - ipython notebook (running as service with circus auto(re)boot on port 8888)

# - itorch notebook (running as service with circus auto(re)boot on port 8889)

# - Caffe 

# - OpenCV 3.0 gold release (vs. 2015-06-04)

# - Digits

# - Lasagne

# - Nolearn

# - Keras

###################################

# started with a bare ubuntu 14.04.3 LTS install, with only ubuntu-desktop installed

# script will install the bare minimum, with all "extras" in a seperate venv

export DEBIAN_FRONTEND=noninteractive

# Checking cuda installation

# installing the samples and checking the GPU

cuda-install-samples-7.0.sh ~/

cd NVIDIA\_CUDA-7.0\_Samples/1\_Utilities/deviceQuery  

make  

#Samples installed and GPU(s) Found ?

./deviceQuery  | grep "Result = PASS"

greprc=$?

if [[ $greprc -eq 0 ]] ; then

    echo "Cuda Samples installed and GPU found"

    echo "you can also check usage and temperature of gpus with nvidia-smi"

else

    if [[ $greprc -eq 1 ]] ; then

        echo "Cuda Samples not installed, exiting..."

        exit 1

    else

        echo "Some sort of error, exiting..."

        exit 1

    fi

fi

echo "now would be time to install cudnn for a speedup"

echo "unfortunately only available by registering on nvidias website:"

echo "https://developer.nvidia.com/cudnn"

echo "deep learning libraries can be installed with final script #3"

3. 深度学习库

好了,来到最后一步,它也是很有趣的一部分:选择个人偏好的深度学习库,这也是由所在领域所决定的。

作为研究人员,Theano 能给你较大的自由度,做自己想做的事。你可以自己部署许多事,也因此更能深度理解 DNN 如何工作。但对想首先尝试下的初学者来说可能不合适。

我个人是 Keras(主要贡献者:François Chollet,已经加入了谷歌)和 Lasagne(8 个人的团队,但主要贡献者是 Sander Dielemans,近期读完了博士,如今加入了谷歌 DeepMind)的粉丝。这两个库有很好的抽象水平,也被积极的开发,也提供插入自己模块或代码工程的简单方式。

如果你习惯 Python,那使用 Torch 会具有挑战性,因为你需要学习 Lua。在使用 Torch 一段时间之后,我可以说它是一个很好使用的语言。一个问题是从其他语言接入到 Lua 很难。对研究目的,Torch 表现也很好。但对生产水平管道而言,Torch 难以进行测试,而且看起来完全缺乏任何类型的错误处理。Torch 积极的一面有:支持 CUDA,有很多可以使用的 程序包。Torch 看起来也是产业内使用最普遍的库。Facebook(Ronan Collobert & Soumith Chintala)、DeepMind(Koray Kavukçuoğlu)、Twitter(Clement Farabet)的这些人都是主要贡献者。

Caffe 是之前占据主导地位的深度学习框架(主要用于 Convnets),如今仍在被普遍使用,也是一个可以作为开始的很好的框架。训练制度(solver.prototxt)与架构(train val.prototxt)文档之间的分离使得实验更容易进行。我发现 Caffe 也是一个支持使用电脑外多 GPU 的框架,你可以穿过 GPU 或 GPU id 参数使用所有可用的 GPU。

Blocks 是最近的一款基于 Python 的框架,很好的分离了自己编写的模块与被称为 Brick 的模块。特别是其 partner「Fuel」,是一个处理数据的很好方式。Fuel 是一个对许多已有的或你自己的数据集的 wrapper。它利用「iteration schemes」将数据导流到模型中,并可以「transformers」所有类型的数据转换和预处理步骤。

Neon 是 Nervana System 公司基于 Python 的深度学习框架,建立在 Nervana 的 GPU Kernel(对英伟达 CuDNN 的替代)之上。Neon 是运行该特殊 Kernel 的框架,的基准测试显示在一些特定任务上它是最快的。

展示深度学习库(面向 Python)的另一种方式:从更低层次的 DIY 到更高层次的、更功能性的框架。

准备好了吗?下面的脚本将安装 Theano、Torch、Caffe、Digits、Lasange、Keras。我们之前用过 Digits,但它是一个建立在 Caffe 之上的图形网页接口。这相当的基础,但如果你刚开始的话,训练一些 ConvNets 以及建立一些图形分类器会是很简单的方法。

#!/usr/bin/env bash

# Installation script for Deep Learning Libraries on Ubuntu 14.04, by Roelof Pieters (@graphific)

# BSD License

orig_executor="$(whoami)"

if [ "$(whoami)" == "root" ]; then

  echo "running as root, please run as user you want to have stuff installed as"

  exit 1

fi

###################################

#   Ubuntu 14.04 Install script for:

# - Nvidia graphic drivers for Titan X: 352

# - Cuda 7.0 (7.5 gives "out of memory" issues)

# - CuDNN3

# - Theano (bleeding edge)

# - Torch7

# - ipython notebook (running as service with circus auto(re)boot on port 8888)

# - itorch notebook (running as service with circus auto(re)boot on port 8889)

# - Caffe 

# - OpenCV 3.0 gold release (vs. 2015-06-04)

# - Digits

# - Lasagne

# - Nolearn

# - Keras

###################################

export DEBIAN_FRONTEND=noninteractive

sudo apt-get install -y libncurses-dev

# next part copied from (check there for newest version): 

# https://github.com/deeplearningparis/dl-machine/blob/master/scripts/install-deeplearning-libraries.sh

####################################

# Dependencies

####################################

# Build latest stable release of OpenBLAS without OPENMP to make it possible

# to use Python multiprocessing and forks without crash

# The torch install script will install OpenBLAS with OPENMP enabled in

# /opt/OpenBLAS so we need to install the OpenBLAS used by Python in a

# distinct folder.

# Note: the master branch only has the release tags in it

sudo apt-get install -y gfortran

export OPENBLAS_ROOT=/opt/OpenBLAS-no-openmp

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPENBLAS_ROOT/lib

if [ ! -d "OpenBLAS" ]; then

    git clone -q --branch=master git://github.com/xianyi/OpenBLAS.git

    (cd OpenBLAS

      && make FC=gfortran USE_OPENMP=0 NO_AFFINITY=1 NUM_THREADS=$(nproc)

      && sudo make install PREFIX=$OPENBLAS_ROOT)

    echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> ~/.bashrc

fi

sudo ldconfig

# Python basics: update pip and setup a virtualenv to avoid mixing packages

# installed from source with system packages

sudo apt-get update -y 

sudo apt-get install -y python-dev python-pip htop

sudo pip install -U pip virtualenv

if [ ! -d "venv" ]; then

    virtualenv venv

    echo "source ~/venv/bin/activate" >> ~/.bashrc

fi

source venv/bin/activate

pip install -U pip

pip install -U circus circus-web Cython Pillow

# Checkout this project to access installation script and additional resources

if [ ! -d "dl-machine" ]; then

    git clone git@github.com:deeplearningparis/dl-machine.git

    (cd dl-machine && git remote add http https://github.com/deeplearningparis/dl-machine.git)

else

    if  [ "$1" == "reset" ]; then

        (cd dl-machine && git reset --hard && git checkout master && git pull --rebase $REMOTE master)

    fi

fi

# Build numpy from source against OpenBLAS

# You might need to install liblapack-dev package as well

# sudo apt-get install -y liblapack-dev

rm -f ~/.numpy-site.cfg

ln -s dl-machine/numpy-site.cfg ~/.numpy-site.cfg

pip install -U numpy

# Build scipy from source against OpenBLAS

rm -f ~/.scipy-site.cfg

ln -s dl-machine/scipy-site.cfg ~/.scipy-site.cfg

pip install -U scipy

# Install common tools from the scipy stack

sudo apt-get install -y libfreetype6-dev libpng12-dev

pip install -U matplotlib ipython[all] pandas scikit-image

# Scikit-learn (generic machine learning utilities)

pip install -e git+git://github.com/scikit-learn/scikit-learn.git#egg=scikit-learn

####################################

# OPENCV 3

####################################

# from http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-ubuntu-14-04/

# for 2.9 see http://www.samontab.com/web/2014/06/installing-opencv-2-4-9-in-ubuntu-14-04-lts/ 

cd ~/

sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev

   pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev

   libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev

   libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

   libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev

   libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

wget https://github.com/Itseez/opencv/archive/3.0.0.tar.gz -O opencv-3.0.0.tar.gz

tar -zxvf  opencv-3.0.0.tar.gz

cd opencv-3.0.0

mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

make -j $(nproc)

sudo make install

sudo /bin/bash -c "echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf"

sudo ldconfig

ln -s /usr/lib/python2.7/dist-packages/cv2.so /home/$orig_executor/venv/lib/python2.7/site-packages/cv2.so

echo "opencv 3.0 installed"

####################################

# Theano

####################################

# installing theano

# By default, Theano will detect if it can use cuDNN. If so, it will use it. 

# To get an error if Theano can not use cuDNN, use this Theano flag: optimizer_including=cudnn.

pip install -e git+git://github.com/Theano/Theano.git#egg=Theano

if [ ! -f ".theanorc" ]; then

    ln -s ~/dl-machine/theanorc ~/.theanorc

fi

echo "Installed Theano"

# Tutorial files

if [ ! -d "DL4H" ]; then

    git clone git@github.com:SnippyHolloW/DL4H.git

    (cd DL4H && git remote add http https://github.com/SnippyHolloW/DL4H.git)

else

    if  [ "$1" == "reset" ]; then

        (cd DL4H && git reset --hard && git checkout master && git pull --rebase $REMOTE master)

    fi

fi

####################################

# Torch

####################################

if [ ! -d "torch" ]; then

    curl -sk https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash

    git clone https://github.com/torch/distro.git ~/torch --recursive

    (cd ~/torch && yes | ./install.sh)

fi

. ~/torch/install/bin/torch-activate

if [ ! -d "iTorch" ]; then

    git clone git@github.com:facebook/iTorch.git

    (cd iTorch && git remote add http https://github.com/facebook/iTorch.git)

else

    if  [ "$1" == "reset" ]; then

        (cd iTorch && git reset --hard && git checkout master && git pull --rebase $REMOTE master)

    fi

fi

(cd iTorch && luarocks make)

cd ~/

git clone https://github.com/torch/demos.git torch-demos

#qt dependency

sudo apt-get install -y qt4-dev-tools libqt4-dev libqt4-core libqt4-gui

#main luarocks libs:

luarocks install image    # an image library for Torch7

luarocks install nnx      # lots of extra neural-net modules

luarocks install unup

echo "Installed Torch (demos in $HOME/torch-demos)"

# Register the circus daemon with Upstart

if [ ! -f "/etc/init/circus.conf" ]; then

    sudo ln -s $HOME/dl-machine/circus.conf /etc/init/circus.conf

    sudo initctl reload-configuration

fi

sudo service circus restart

cd ~/

## Next part ...

####################################

# Caffe

####################################

sudo apt-get install -y libprotobuf-dev libleveldb-dev

  libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev

  libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

  libatlas-base-dev libyaml-dev 

  

git clone https://github.com/BVLC/caffe.git

cd caffe

for req in $(cat python/requirements.txt); do pip install $req -U; done

make all

make pycaffe

cd python

pip install networkx -U

pip install pillow -U

pip install -r requirements.txt

ln -s ~/caffe/python/caffe ~/venv/lib/python2.7/site-packages/caffe

echo -e " export CAFFE_HOME=/home/$orig_executor/caffe" >> ~/.bashrc

echo "Installed Caffe"

####################################

# Digits

####################################

# Nvidia Digits needs a specific version of caffe

# so you can install the venv version by Nvidia uif you register

# with cudnn, cuda, and caffe already packaged

# instead we will install from scratch

cd ~/

git clone https://github.com/NVIDIA/DIGITS.git digits

cd digits

pip install -r requirements.txt

sudo apt-get install graphviz

echo "digits installed, run with ./digits-devserver or     ./digits-server"

####################################

# Lasagne

# https://github.com/Lasagne/Lasagne

####################################

git clone https://github.com/Lasagne/Lasagne.git

cd Lasagne

python setup.py install

echo "Lasagne installed"

####################################

# Nolearn

# asbtractions, mainly around Lasagne

# https://github.com/dnouri/nolearn

####################################

git clone https://github.com/dnouri/nolearn

cd nolearn

pip install -r requirements.txt

python setup.py install

echo "nolearn wrapper installed"

####################################

# Keras

# https://github.com/fchollet/keras

# http://keras.io/

####################################

git clone https://github.com/fchollet/keras.git

cd keras

python setup.py install

echo "Keras installed"

echo "all done, please restart your machine..."

#   possible issues & fixes:

# - skimage: issue with "not finding jpeg decoder?" 

# "PIL: IOError: decoder zip not available"

# (https://github.com/python-pillow/Pillow/issues/174)

# sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev

#     libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk

# next try:

# pip uninstall pillow

# git clone https://github.com/python-pillow/Pillow.git

# cd Pillow 

# python setup.py install

原文链接:http://graphific.github.io/posts/building-a-deep-learning-dream-machine/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4395.html

相关文章

  • 硬件配置软件安装基准测试,1700美元深度学习机器构建指南

    摘要:受到其他同行在上讨论更好经验的激励,我决定买一个专用的深度学习盒子放在家里。下面是我的选择从选择配件到基准测试。即便是深度学习的较佳选择,同样也很重要。安装大多数深度学习框架是首先基于系统开发,然后逐渐扩展到支持其他操作系统。 在用了十年的 MacBook Airs 和云服务以后,我现在要搭建一个(笔记本)桌面了几年时间里我都在用越来越薄的 MacBooks 来搭载一个瘦客户端(thin c...

    pkwenda 评论0 收藏0
  • HPE发力人工智能 更新深度学习服务器

    摘要:今天宣布推出旨在帮助客户加快机器和深度学习的硬件垂直市场软件和培训服务。深度学习是机器学习的一种,是试图模仿人类大脑的功能。在声明中表示系统最适合于解决深度学习模型训练中最重要的步骤。一周前,IBM在Think 2018上做了一系列人工智能相关的公告,现在HPE也紧随其后想要抓住人工智能这个IT业界最热门的趋势。HPE今天宣布推出旨在帮助客户加快机器和深度学习的硬件、垂直市场软件和培训服务。...

    luqiuwen 评论0 收藏0
  • 福布斯:机器学习深度学习将革老牌云服务提供商

    摘要:硬件机器学习和深度学习带来的那种颠覆早已从软件堆栈扩大到了芯片服务器和云服务提供商。数据中心也正在重新设计架构,以支持机器学习和深度学习耗用的超大量数据。 作者是多位精英CIO、CTO和技术高管组成的福布斯杂志的常设部门Forbes Technology Council过去这几年涌现出了全新类别的产品,这归功...

    muzhuyu 评论0 收藏0
  • 福布斯:机器学习深度学习将革老牌云服务提供商

    摘要:硬件机器学习和深度学习带来的那种颠覆早已从软件堆栈扩大到了芯片服务器和云服务提供商。数据中心也正在重新设计架构,以支持机器学习和深度学习耗用的超大量数据。 作者是多位精英CIO、CTO和技术高管组成的福布斯杂志的常设部门Forbes Technology Council过去这几年涌现出了全新类别的产品,这归功于机器学习和深度学习取得了非凡的进步。仅举几个例子,这些新技术在支持产品推荐、医疗成...

    邹立鹏 评论0 收藏0
  • 深度学习这么多年还不会挑GPU?这儿有份选购全攻略

    摘要:深度学习是一个对算力要求很高的领域。这一早期优势与英伟达强大的社区支持相结合,迅速增加了社区的规模。对他们的深度学习软件投入很少,因此不能指望英伟达和之间的软件差距将在未来缩小。 深度学习是一个对算力要求很高的领域。GPU的选择将从根本上决定你的深度学习体验。一个好的GPU可以让你快速获得实践经验,而这些经验是正是建立专业知识的关键。如果没有这种快速的反馈,你会花费过多时间,从错误中吸取教训...

    JohnLui 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<