记录安装tensorflow-gpu版本时遇到的一些问题
我现在用的时Pycharm,里面的Interpreter使用的是Anaconda的python.exe。我的想法是,把所有的package全都放在一个Interpreter里,这样的话,以后我不管运行什么文件都可以只是用这个Interpreter,从而不需要安装重复的package。
但事实上,我请教了一些大佬,他们说tensorflow一般都单独创建一个虚拟环境,因为像tensorflow, pytorch之类谁知道混在一起就会崩了。而我看了网上的一些教程也都是让你先创建一个名为tensorflow的环境,然后安装进去之类…
再然后就是,我使用Pycharm的时候会遇到一些问题,有时候我会绕过去,但早晚还会再遇见这些坑,于是这次我又跳了进去…但最后还是跳了出来。
一、首先是Anaconda的安装
正常默认安装, 记得勾选添加环境变量。
打开Anaconda Prompt,输入
conda info --e
显示结果如下,它要我们激活这个base:
此时,我们执行
conda activate base
我们就进入了base
接着在这里输入
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.0.0a0
OK,tensorflow-gpu版本就已经安装完成了!
二、然后我们安装Cuda
https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal 选择version10安装,然后全都默认安装到结束。
然后就是cudnn的安装
https://developer.nvidia.com/rdp/cudnn-download
下载之后解压缩,然后将文件夹的内容放到Cuda的安装目录下(需要自己建立一个名为cudnn的文件夹)
最后就是环境变量的配置了。在安装的时候机会有前两个环境自动配置好,而我们需要手动配置后两个:
至此,Cuda算是安装完成了。
正常默认安装, 记得勾选添加环境变量。
三、记录一下安装tensorflow-gpu遇到的一些问题
装完之后,运行以下测试代码(来自网络)
import tensorflow as tf
import timeit
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)
此时结果是正常出来了,但是报出如下:
意思是你的 CPU 支持AVX AVX2 (可以加速CPU计算),但你安装的 TensorFlow 版本不支持。但我用的是GPU的Cuda加速,想想就不需要CPU了。虽然这些不是警告也不是错误,但看起来还是不舒服。
查找了忽略这些信息的一些方法:
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '1' # 默认,显示所有信息
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '2' # 只显示 warning 和 Error
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '3' # 只显示 Error
因此,对于现在的情况,我们选择‘2’
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
结果如下:
我手贱,我手贱,把显卡驱动升级到11.0了,导致现在识别不了我的GPU了,只能重新装了。。。
参考了这篇博客。
来到https://developer.nvidia.com/cuda-toolkit-archive 找到11.0,下载。我一般下载local的.exe文件。
他原本安装位置在C盘:
我向来是不喜欢的,改。
装的时候看看我的tensorflow-gpu的版本是2.2,在对着下面的表,就升了2.4
https://tensorflow.google.cn/install/source_windows