这是我第N次遇到把环境搞坏,再重新配环境,然后忘记各个步骤中的指令,然后全网查资料的情况。于是我决定落实一下一直都有的一个想法:写个 Blog 记录下从零开始搭建环境的全过程,以方便将来再次把环境搞坏的自己和遇到相同问题的同学们。
GPU 对深度学习运算效率提升非常巨大,就我目前做的一个项目而言,一个 epoch 用 CPU 耗时 1622s ,而用 GPU 仅需要 33s,粗略估计下使用 GPU 运算效率是 CPU 的 50 倍。然而深度学习 GPU 的环境配置之路上各种坑,希望本文可以帮你绕开这些坑。
TensorFlow 2.0 alpha 版本也已经发布,其整体风格更接近于 PyTorch,将 Eager execution 设置为默认优先模式,这就意味着任何运算在调用后就会立即运行,从而不再需要预先定义静态图,变得更加方便使用。而且 Google 也已经收购了 Keras,也就是说 TensorFlow 2 将和 Keras 耦合起来,整体上考虑学习 TensorFlow 2 也是非常有价值的。本文也将介绍 TensorFlow 2 的环境配置。
2019/10/7补充:TensorFlow 2.0 在祖国 70 岁生日之际正式 release 了,现在直接安装 TensorFlow 将默认安装 2.0 版本。
前言
Anaconda 安装
conda 的简单使用
基本操作
使用国内 conda 软件源加速
环境的导出与导入
jupyter lab 的配置
jupyter lab 添加 kernel
jupyter lab 默认工作路径修改
jupyter lab 插件安装
pip 使用国内镜像加速下载
CUDA 安装
cuDNN 安装
TensorFlow-GPU
Keras
其他要装的常用库
从 Anaconda官网 下载,安装。推荐安装 Python 3 的版本,所以无情的我给旁边打上了马赛克。
在安装过程中没有把 Anaconda 添加到环境变量的可以添加一下 Anaconda 的安装路径,%Anaconda%/Library/bin和 %Anaconda%/scripts/ ,这样就可以在 cmd 或者 powershell 中使用 conda 和 python,还可以避免一些问题。
Anaconda Prompt 用着很舒服。使用 install 安装包,remove 卸载包,activate 激活环境。有时候安装包的时候会出现没有权限什么的,以管理员身份运行 Anaconda Prompt 就好了。
以创建环境为例:
conda create -n DeepLearning python=3.7.4
移除环境:
conda remove -n DeepLearning --all
拷贝环境:
conda create --clone DeepLearning --name DL
鉴于惨不忍睹的下载速度,我们可以使用 清华大学 或者 中科大 的仓库镜像加速下载,以清华为例:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes
在费了半天劲配好环境之后,可以将环境中的包名和版本号导出为 yaml 文件,之后可以发给别人,让别人快速的拥有一个和你一样的环境,或者自己以后再搞坏环境的时候可以方便的重新配置。
导出当前环境:
conda env export > environment.yaml
导入环境:
conda env create -f environment.yaml
当然,也可以用 pip 导出和导入:
pip freeze > requirements.txt
pip install -r requirements.txt
Jupyter lab 是一个神器,但是新建的环境在 jupyter lab 中是不能直接使用的,需要安装 ipykernel 并将这个环境加入到 Jupyter Lab 中:
conda install ipykernel
python -m ipykernel install --name DL
使用:
jupyter kernelspec list
查看现在 jupyter 已安装的 kernel,使用:
jupyter kernelspec remove DL
移除 kernel。
在 Anaconda Prompt 中:
jupyter lab --generate-config
# 或者
jupyter notebook --generate-config
可以获取 jupyter lab 配置文件的路径。修改这个文件的一个字段:
## The directory to use for notebooks and kernels.
c.NotebookApp.notebook_dir = 'D:\'
把路径改成想要的工作路径就好了。
jupyter lab 作为一个神器却没有很好的代码提示等功能是令人遗憾的,不过我们可以通过安装插件的方式改善这些问题。首先要启用 jupyter lab 的插件管理器:
在菜单栏 Setting 中的 Advanced Setting Editer 中,做如下更改:
之后便可以安装插件了。这里推荐几个插件:
展示 MarkDown 的目录
展示 ploty 可视化效果
使用 Matplotlib 可视化交互
变量检查器
code navigation + hover suggestions + linters + autocompletion + rename
可以在使用 pip 的时候加参数
-i https://pypi.tuna.tsinghua.edu.cn/simple
以使用国内较快的源。
附上几个镜像源:
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:https://pypi.douban.com/simple/
要想要一劳永逸,可以在 user 目录下创建一个 pip 目录,新建pip.ini:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
CUDA 下载地址
首先呢,你要知道自己的显卡支不支持 CUDA。可以到 NVIDIA 官网 看看。
其次,你要知道自己的显卡支持 CUDA 的什么版本。可以在 NVIDIA Control Panel 里,Help -> System Information -> Components -> 3D Settings -> NVCUDA.DLL 看到。我的显卡是 RTX 2080,目前支持到 CUDA 10.0.132。
很多人都会遇到诸如 CUDA 8 和自己安装的 TensorFlow 版本不匹配然后被水淹没,不知所措的问题。对于这种问题只需要多
看 官方文档 就好了。比如:
图中有说到 CUDA 和 cuDNN 的版本要求。
这些是经过官方测试通过的版本。
所以安CUDA之前先上官网看一眼最新的 TensorFlow 版本,或者根据你要安装的 TensorFlow 版本,选择合适的 CUDA 和 cuDNN 版本。
需要注意的是,Keras 会限制 TensorFlow 的版本,TensorFlow 的版本又会限制 CUDA 的版本, 同时 TensorFlow 的版本也会限制诸如 numpy 的版本。考虑到 pip 和 conda 兼容性一般般的问题,个人建议 TensorFlow-gpu 环境下 numpy,matplotlib 等包全部用 pip 安装,以防 pip 安装 TensorFlow-gpu 后再用 conda 安装包导致的依赖项不兼容的问题。
我安装的是 Python 3.7.4,CUDA 10.1,cuDNN 7.6.5,TensorFlow-GPU 2.1。
另外一个环境是 Python 3.7.4,CUDA 10.0,cuDNN 7.5.0,TensorFlow-GPU 1.15。
在安装 CUDA 的时候有几点需要注意到的,首先是 Installation options 要选 Custom:
接下来的组件安装推荐不安装 GeForce Experience... 和 CUDA 里的 VS Integration:
接下来很重要的一点是看 Display Driver 的 当前版本和新版本,如果新版本比当前版本新,就一定要勾上;如果新版本比当前版本旧,就一定不能勾上;一样的话就无所谓了:
Driver 这一条不这样设置基本会报错,至少我安装的时候是这样。
cuDNN 下载解压后,直接解压到CUDA的安装路径下。
cuDNN 下载地址
可以直接安装最新的稳定版本:
pip install tensorflow-gpu
2019/10/7补充:现在 TensorFlow 2.0 已经正式 release ,上面的命令将默认安装 2.* 版本,想要装老版本需要采用下面的方式。
也可以安装需要的版本:
pip install tensorflow-gpu==1.15
不用 conda 安装是因为之前用 conda 安装的不管是 tensorflow-gpu ,还是直接装 keras-gpu 都没有办法很方便的使用 GPU 运算。
测试:
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
输出中有 GPU 就表示 OK 了。
简单粗暴。
pip install keras
pip install numba scikit-learn matplotlib seaborn pandas tensorflow-datasets pillow
常见问题
这个问题 GitHub 上 已经被讨论了很久了,我这里好用的解决方法:
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, …)
参考来源
https://tensorflow.google.cn/install/gpu
https://www.jianshu.com/p/30555fd2bd50
https://www.cnblogs.com/guohaoblog/p/9260917.html
https://medium.com/@WhoYoung99/2018%E6%9C%80%E6%96%B0win10%E5%AE%89%E8%A3%9Dtensorflow-gpu-keras-8b3f8652509a
https://baijiahao.baidu.com/s?id=1627348344283610528&wfr=spider&for=pc
https://www.cnblogs.com/microman/p/6107879.html