本文将指导你如何在自己的 Mac 上部署 Theano + keras 的深度学习开发环境。
如果你的 Mac 不自带 NVIDIA 的独立显卡(例如 15 寸以下或者 17 年新款的 Macbook。具体可以在 "关于本机 -> 系统报告 -> 图形卡/显示器 " 里查看),那么你可能无法在这台 Mac 上使用 GPU 训练深度学习模型。不过这并不值得遗憾。事实上,我在自己的 Macbook 上(15-inch,Early 2013,NVIDIA GeForce GT 650M 1024 MB)做了一个简单的测试:在 mnist 数据集上训练 CNN 模型时,GPU 模式相对于 CPU 模式仅节省了 1/3 的时间。这可能要归咎于 Mac 上赢弱的显卡。相比之下,我更推荐购买一台有着强劲性能的显卡的 PC 本(比如某些游戏本)来搭建深度学习的开发环境,或者是直接租赁 AWS 的 Instance 服务。
下面步入正题。
几乎所有的主流深度学习框架在使用 GPU 进行模型训练时都依赖于两个底层环境:CUDA 和 cuDNN。前者是一个使用 GPU 进行并行计算的平台,后者是一个封装了使用 GPU 加速神经网络计算的 library。
。这一步会自动安装 clang 编译器,可以在命令行里输入:
- xcode-select --install
进行验证。 clang 编译器也是安装 Theano 的预备环境之一。
- /usr/bin/cc --version
,输入四行命令:
- ~/.bash_profile
其中,环境变量 CUDA_ROOT 给 Theano 指定了 CUDA 的安装目录,也可以被设置为
- export CUDA_ROOT = /Developer/NVIDIA / CUDA - 8.0 export PATH = $CUDA_ROOT / bin$ {
- PATH: +:$ {
- PATH
- }
- }
- export DYLD_LIBRARY_PATH = $CUDA_ROOT / lib$ {
- DYLD_LIBRARY_PATH: +:$ {
- DYLD_LIBRARY_PATH
- }
- }
- export LD_LIBRARY_PATH = $CUDA_ROOT / lib: $LD_LIBRARY_PATH
(这两个路径下的文件均通过软链接被 link 到了一起)。 配置完成后,退出编辑器,
- /usr/local/cuda
并执行
- source ~/.bash_profile
验证 CUDA 的安装是否正常。
- nvcc -V
目录下的
- include
文件复制到
- *.h
目录下;将
- $CUDA_ROOT/include
目录下的
- lib
文件复制到
- *.so
目录下。
- $CUDA_ROOT/lib
至此,完成了 GPU 开发环境的基本部署。
Theano 的安装极其简单:
- shell conda install numpy scipy mkl <nose> <sphinx> <pydot-ng>
- conda install theano pygpu
Keras 是一个建立在 Theano 和 TensorFlow 基础上,封装了大量底层接口,方便研究人员快速搭建模型原型的深度学习开发框架。它提供了 pip 和从源码直接安装两种方式。
使用 pip 安装:
- sudo pip install keras
从源码直接安装:
- git clone https://github.com/fchollet/keras.git
- cd keras
- sudo python setup.py install
Keras 默认以 TensorFlow 为底层计算引擎。第一次执行
命令后,会生成
- import keras
文件。打开这个文件,将
- ~/.keras/keras.json
修改为
- "backend": "tensorflow"
,即完成了后端计算引擎到 Theano 的切换。
- "backend": "theano"
至此,一个基本的深度学习开发环境已搭建完成。重启电脑以确保所有配置均已生效。
我们可以运行一些 demo 来测试环境的安装是否正常。
从 Github 上下载 Keras 的源码,进入
子目录,输入命令:
- examples
- THEANO_FLAGS=mode=FAST_RUN python mnist_cnn.py
该命令将以 CPU 模式在 mnist 数据集上训练 CNN 模型。
输入命令:
- THEANO_FLAGS='mode=FAST_RUN,device=cuda,floatX=float32,optimizer_including=cudnn' python mnist_cnn.py
该命令将以 GPU 模式(并使用 cudnn 加速)在 mnist 数据集上训练 CNN 模型。
如果一切正常,你将看到类似下图的屏幕输出:
我在自己的 Macbbok Pro(15 寸,13 年初,GT 650M 的 1024MB 显卡)上分别测试了 CPU,GPU,GPU with cuDNN 三种模式下 CNN 模型(mnist 数据集)的训练性能,其结果如下(单位:秒):
出乎意料的是,如果没有 cuDNN 的加速,Mac 上 GPU 的计算性能远不如 CPU!而即便使用了 cuDNN 的加速,模型的训练也只不过缩短了 1/3 的时间。因此,如果想认真地玩一玩深度学习模型,还是建议上高性能的显卡,或者直接用 AWS 的 GPU 服务吧!
来源: http://www.cnblogs.com/iloveai/p/shen-du-xue-xi-kai-fa-huan-jing-da-jian-jiao-cheng.html