安装心理路程(吐槽)
历时两天时间,终于将Tensorflow-gpu安装成功, 期间观看不下于50篇的博客,也尝试多种的安装方法,其中电脑驱动就来回捣鼓数次,然后就是cuda和cudnn下载了多个版本,现在后悔它们都没用了,还有Python的版本问题也捣鼓了许久,呜呜呜(心疼手机流量).....最后我重装的系统,将win10的企业版换成了专业版,专业版一次成功,但应该和电脑系统没啥关系.....个人猜测
虽然失败了很多次,期间也想过放弃,使用CPU跑,但笔记的cpu跑深度学习,大规模数据和复杂网络结果出的真的慢,还是GPU香,废话不多说了,开干......
总结目前安装tensorflow-gpu主要是两种途径:
① 直接本地安装(cuda+cudnn,不推荐,如何第一次没成功卸载特别难受)
② 利用conda安装(cudatoolkit+cudnn,推荐,贼舒服)
安装环境选择
使用群体:使用win10的进行深度学习的同学,安装ubuntu(linux)的同学可以不用看了
1. 整个环境的介绍:
① 安装Anaconda3:目的创建虚拟环境
② vscode:进行Python code,方便
③ 框架: Tensorflow
2. 版本选择:
① NVIDIA显卡驱动:可以为最新
② Anaconda3: 直接最新版,Anaconda3支持python版本向下兼容
③ vscode:直接最新版
④ python环境:python 3.7(这个待会创建虚拟环境会设置)
⑤ cudatoolkit版本:10.1(重点)
⑥ cudnn版本:7.6.5(重点)
⑦ tensorflow-gpu:2.2.0
3. 补充说明
① 官网说tensorflow2.1版本后tensorflow中包含GPU,但我没有试过,我安装仍然是tensorflow-gpu,感兴趣可以重创环境试下
② tensorflow-gpu和cudatoolkit和cudnn版本要对应,否则会出现意想不到的错误,下图是目前的最新版本对应:
查询Tensorflow版本对应的: tensorflow官方技术文档
③ 注意自己的电脑驱动支持的cuda版本,查看到支持版本一定大于等于将下载的版本:
上图中,表明我的电脑驱动版本为457.20,支持的最高版本的cuda为11.1(也就是我能安装的cuda不能高于11.1,如果想装更高的版本cuda,可以到官网下载驱动,更新自己的驱动)
安装过程详解
(贴下我的配置依据)
①安装Anaconda3
②更新下自己的conda的默认镜像源
③创建虚拟环境:
conda create -n tensorflow2.2(名字,可修改) python=3.7
conda env list # 查存在的环境
conda activate tensorflow2.2 #进入虚拟环境
④安装tensorflow-gpu2.2.0版本,使用pip安装,采用豆蔻镜像
pip install tensorflow-gpu==2.2.0 -i https://pypi.douban.com/simple/
⑤安装cudatoolkit10.1+cudnn7.6.5
conda install cudatoolkit=10.1 cudnn=7.6.5
至此安装工作结束,推荐大家完全按照上述指令在cmd中进行操作,等成功后可尝试其他版本。
测试
- 查看是否安装成功,是够存在GPU
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
2. 测试GPU是否能运行
import tensorflow as tf
import timeit
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 代码用于忽略级别 2 及以下的消息(级别 1 是提示,级别 2 是警告,级别 3 是错误)。
with tf.device('/cpu:0'):
cpu_a = tf.random.normal([10000, 1000])
cpu_b = tf.random.normal([1000, 2000])
print(cpu_a.device, cpu_b.device)
with tf.device('/gpu:0'):
gpu_a = tf.random.normal([10000, 1000])
gpu_b = tf.random.normal([1000, 2000])
print(gpu_a.device, gpu_b.device)
def cpu_run():
with tf.device('/cpu:0'):
c = tf.matmul(cpu_a, cpu_b)
return c
def gpu_run():
with tf.device('/gpu:0'):
c = tf.matmul(gpu_a, gpu_b)
return c
# warm up
cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('warmup:', cpu_time, gpu_time)
cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('run time:', cpu_time, gpu_time)
print('GPU', tf.test.is_gpu_available())
运行结果:
warmup: 1.0394134999999993 0.2286729000000003
run time: 1.0295364999999999 0.0005075000000003271
GPU True
通过运行时间可以看出,说明tensorflow-gpu安装成功
祝大家都能成功,享受tensorflow-gpu的快乐!!!!!