win10下通过Anaconda搭建深度学习环境GPU篇

环境准备

Anaconda3-5.3.0-Windows-x86_64 (PYTHON 3.7)

环境说明

主要安装以tensorflow和pytorch这两个可以通过GPU进行计算的深度学习框架,并且在这两个计算框架的基础上安装keras,fastai和autokeras,最后再安装xgboost,因为xgboost也有可以通过GPU计算的版本,所以就一起安装了,版本如下

1
2
3
4
5
6
tensorflow 1.19.0
pytorch 0.4.1
keras 2.2.4
autokeras
fastai 1.0.5
xgboost

安装步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 因为autokeras只支持3.6所以使用python3.6
conda create -n dl python=3.6
activate dl
# 安装tensorflow
# tensorflow 默认版本是使用的cuda8,我这台电脑是安装的cuda92所以需要找到别人编译好的安装包
# 安装包在这个地址,https://github.com/fo40225/tensorflow-windows-wheel 需要寻找跟自己的cuda版本对应的安装包进行下载后安装
pip install --ignore-installed tensorflow_gpu-1.9.0-cp36-cp36m-win_amd64.whl
pip install keras
# 安装pytorch,这是官方给的安装地址,就是下载速度有点慢
conda install pytorch cuda92 -c pytorch
pip install torchvision
# 安装fastai,fastai 已经包含了matplot等常用的包
pip install fastai
# Cython加快sklearn 的计算速度,也一起装上
pip install Cython --install-option="--no-cython-compile"
pip install sklearn
# 安装autokeras
pip install autokeras
# autokeras 会自动使用最新的tensorflow 覆盖掉以前版本,所以安装完后需要从新再装一遍tensorflow

安装xgboost

xgboost的GPU版本需要下载源代码并且自己安装所以单独出来写
国外大神已经把编译好的放到网上了,所以就不用自己编译了,地址这里:http://ssl.picnet.com.au/xgboost/ 。左边是cpu版,右边是支持gpu加速版。点击需要的版本下载xgboost.dll就可以了

1
2
3
4
5
# clone 源代码
git clone --recursive https://github.com/dmlc/xgboost
# 下载好的xgboost.dll 复制到python-package\xgboost目录,并进入python-package目录,执行以下命令行
python setup.py install
# 在安装过程中的进度中会出现复制xgboost.dll的命令,查看下进度记录即可确认安装的是GPU版本

验证

验证 tensorflow

1
2
3
4
5
6
7
import numpy
import tensorflow as tf
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))

如果最后返回中信息包含了GPU的信息,说明tensorflow使用的是GPU进行计算

验证 pytorch

1
2
3
4
import torch
torch.cuda.is_available()
torch.cuda.device_count()
torch.cuda.get_device_name(0)

torch会打印GPU的信息,如果出现就说明没有问题

验证xgboost

找到xgboost\demo\gpu_acceleration目录
执行 python cover_type.py 即可

问题解决

如果你在import fast的时候出现以下错误

1
2
3
4
lib\importlib\_bootstrap.py:219: RuntimeWarning: cymem.cymem.Pool size changed, may indicate binary incompatibility. Expected 48 from C header, got 64 from PyObject
return f(*args, **kwds)
\lib\importlib\_bootstrap.py:219: RuntimeWarning: cymem.cymem.Address size changed, may indicate binary incompatibility. Expected 24 from C header, got 40 from PyObject
return f(*args, **kwds)

说明是在导入spacy时出现了问题
我这边安装的是cymem 2.0.2 可能是不兼容,切换到cymem 1.31.2后可以顺利导入
或者使用更简单的方法

1
2
python uninstall Spacy
conda install Spacy