附录A 在 Ubuntu上安装 Keras及其依赖
建立深度学习工作站的过程相当复杂,本附录会详细介绍具体步骤,如下所示。
(1)安装 Python科学套件(Numpy和 SciPy),并确认安装了基础线性代数子程序(BLAS)库,这样模型才能在 CPU上快速运行。
(2)另外再安装两个软件包, HDF5(用于保存大型的神经网络文件)和 Graphviz(用于将神经网络架构可视化)。在使用 Keras时这两个软件包很有用。
(3)安装 CUDA驱动程序和 cuDNN,确保 GPU能够运行深度学习代码。
(4)安装一个 Keras后端:TensorFlow、CNTK或 Theano。
(5)安装 Keras。
这个过程可能看起来有点麻烦。其实唯一的难点就是设置 GPU支持,其他步骤用几个命令就可以完成,只需几分钟即可。
我们假设你已经安装了全新的 Ubuntu,并配备了 NVIDIA GPU。开始之前,请确认你已经安装了pip,并确认你的包管理器是最新的。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python-pip python-dev
Python 2与 Python 3的对比
默认情况下,Ubuntu在安装 Python包时使用 Python 2(比如python-pip)。如果你想使用 Python 3,那么应该使用python3前缀代替python。例如:
$ sudo apt-get install python3-pip python3-dev
使用pip安装包时要记住,它默认安装的是 Python 2的包。想要安装 Python 3的包,你应该使用pip3。
$ sudo pip3 install tensorflow-gpu
A.1 安装 Python科学套件
如果你用的是 Mac,我们推荐你通过 Anaconda安装 Python科学套件。你可以在 https://www.anaconda.com/download/下载 Anaconda。注意,其中并不包含 HDF5和 Graphviz,需要手动安装。在 Ubuntu上手动安装 Python科学套件的步骤如下所示。
(1)安装 BLAS库(这里安装的是 OpenBLAS),确保你可以在 CPU上运行快速的张量运算。
$ sudo apt-get install build-essential cmake git unzip \ pkg-config libopenblas-dev liblapack-dev
(2)安装 Python科学套件:Numpy、SciPy和 Matplotlib。无论是否做深度学习,如果想要使用 Python进行任意类型的机器学习或科学计算,这一步都是必需的。
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-yaml
(3)安装 HDF5。这个库最初由 NASA(美国国家航空航天局)开发,用高效的二进制格式来保存数值数据的大文件。它可以让你将 Keras模型快速高效地保存到磁盘。
$ sudo apt-get install libhdf5-serial-dev python-h5py
(4)安装 Graphviz和 pydot-ng,这两个包可以将 Keras模型可视化。它们对运行 Keras并不是必需的,所以你可以跳过这一步,在需要时再来安装这些包。安装命令如下。
$ sudo apt-get install graphviz
$ sudo pip install pydot-ng
(5)安装某些代码示例中用到的其他包。
$ sudo apt-get install python-opencv
A.2 设置 GPU支持
使用 GPU并不是绝对必要的,但我们强烈推荐使用 GPU。本书的所有代码示例都可以在笔记本电脑的 CPU上运行,但训练模型有时可能需要等待几个小时,而在一个好的 GPU上则只需要几分钟。如果你没有一块现代的 NVIDIA GPU,则可以跳过这一步,直接阅读 A.3节。
想要用 NVIDIA GPU做深度学习,需要同时安装 CUDA和 cuDNN。
- CUDA。用于 GPU的一组驱动程序,它让 GPU能够运行底层编程语言来进行并行计算。
- cuDNN。用于深度学习的高度优化的原语库。使用 cuDNN并在 GPU上运行时,通常可以将模型的训练速度提高 50%到 100%。
TensorFlow依赖于特定版本的 CUDA和 cuDNN库。写作本书时,它使用的是 CUDA 8和cuDNN 6。请查阅 TensorFlow网站,上面详细说明了当前推荐的版本。
请按照以下步骤操作。
(1)下载 CUDA。对于 Ubuntu(以及其他 Linux版本),NVIDIA提供了现成的安装包,可以在 https://developer.nvidia.com/cuda-downloads下载。
$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
(2)安装 CUDA。最简单的安装方法就是对这个包使用 Ubuntu的apt命令。这样就可以在程序更新时使用apt轻松安装更新。
$ sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/ x86_64/7fa2af80.pub $ sudo apt-get update $ sudo apt-get install cuda-8-0
(3)安装 cuDNN。
①注册一个免费的 NVIDIA开发者账号(遗憾的是,想要下载 cuDNN,这一步是必需的),然后在 https://developer.NVIDIA.com/cudnn下载 cuDNN(选择与 TensorFlow兼容的 cuDNN版本)。与 CUDA一样,NVIDIA也提供了用于不同 Linux版本的软件包,我们将使用针对 Ubuntu 16.04的版本。注意,如果你用的是 EC2实例,那么是无法将 cuDNN存档直接下载到实例中的,你需要将其下载到本地计算机上,然后再利用scp命令将其上传到 EC2实例中。
②安装 cuDNN。
$ sudo dpkg -i dpkg -i libcudnn6*.deb
(4)安装 TensorFlow。
①无论是否支持 GPU,都可以使用 pip从 PyPI安装 TensorFlow。安装不支持 GPU的TensorFlow的命令如下。
$ sudo pip install tensorflow
②安装支持 GPU的 TensorFlow的命令如下。
$ sudo pip install tensorflow-gpu
A.3 安装 Theano(可选)
你已经安装了 TensorFlow,所以无须安装 Theano即可运行 Keras代码。但构建 Keras模型时,在 TensorFlow和 Theano之间来回切换有时会很有用。
Theano也可以从 PyPI安装。
$ sudo pip install theano
如果你有 GPU,那么应该配置 Theano来使用 GPU。你可以用下面这个命令创建一个 Theano配置文件。
nano ~/.theanorc
然后,将下列配置写入这个文件。
[global] floatX = float32 device = gpu0 [nvcc] fastmath = True
A.4 安装 Keras
可以从 PyPI安装 Keras。
$ sudo pip install keras
或者也可以从 GitHub安装 Keras。这么做的话,就可以访问 keras/examples文件夹,里面包含许多示例脚本供你学习。
$ git clone https://github.com/fchollet/keras $ cd keras $ sudo python setup.py install
现在你可以尝试运行一个 Keras脚本,比如这个 MNIST示例。
python examples/mnist_cnn.py
注意,完整运行这个示例可能需要几分钟。因此,在确认 Keras可以正常运行之后,你可以随时强制退出(按 Ctrl-C)。
运行 Keras至少一次之后,就可以在 ~/.keras/keras.json找到 Keras的配置文件。你可以编辑这个文件,选择运行 Keras的后端:tensorflow、theano或cntk。你的配置文件应该是这样的。
{ "image_data_format": "channels_last", "epsilon": 1e-07, "floatx": "float32", "backend": "tensorflow" }
运行 examples/mnist_cnn.py这个 Keras脚本时,你可以在另一个 shell窗口中监控 GPU利用率。
$ watch -n 5 NVIDIA-smi -a --display=utilization
一切安装完成,恭喜你!现在可以开始构建深度学习应用了。