最近的机器学习大作业要用卷积神经网络做模型,github上找了代码却发现跑起来特别慢,迭代一次就要好几分钟,于是终于下定决心安装gpu版本的tensorflow,之前没装是因为网上查到的资料都在说好多坑,很难,仅供参考,目前适用于本人,把安装过程和查阅的资料都摆在这里,分享一下,也为以后需要用到时做个备份吧。大体参考的博客:https://www.cnblogs.com/apan008/p/11254688.html
环境
windows10+anaconda3.0
显卡是N卡 GeForce MX250
TensorFlow的GPU 版本需要 CUDA 和 cuDNN 的支持,你需要查看一下你的英伟达GPU是否支持CUDA,https://developer.nvidia.com/cuda-gpus,我在上边并没有找到我的显卡,不过这个轻薄本独显应该也凑合能用吧。
打开NVIDIA控制面板,点击左下角的系统信息,点击组件选项卡
应该是支持的
步骤
第一步:安装Anaconda
我先前已经安装过Anaconda3了,一路通过,中间出现的两个选项都没有选,自己配置一下环境就行了,具体可以参考上边的博客或者网上有很多教程,这一步我用的清华镜像安装的,没什么大问题。注意我安装的版本默认的base环境是python3.7的,3.7好像只能装tensorflow2.0,室友也说没有对应的tensorflow,干脆我也把base版本降到了3.6,方法是在Anaconda Prompt中打一行
conda install python=3.6
即可
第二步:安装CUDA Toolkit + cuDNN
我下载的是CUDA Toolkit 9.0 + cuDNNv7.0.5, for CUDA 9.0, for windows 10
tensorflow官网打不开,理论上应该看下载的CUDA和cuDNN的版本是否一致,为了省事我就直接按照人家下载的版本安装,安装过程基本与其类似。
在这个网址查找CUDA已发布版本:https://developer.nvidia.com/cuda-toolkit-archive
下载好CUDA Toolkit 9.0 后,我们开始下载cuDnn 7.0,需要注意的是,下载cuDNN需要在nvidia上注册账号,使用邮箱注册就可以,免费的。登陆账号后才能下载。注意印象是密码设置的为至少9位。
至关重要的一步:
由于CUDA Toolkit需要在指定版本显卡驱动环境下才能正常使用的,所以如果我们已经安装了nvidia显卡驱动(很显然,大部分人都安装了),再安装CUDA Toolkit时,会因二者版本不兼容而导致CUDA无法正常使用,这也就是很多人安装失败的原因。而CUDA Toolkit安装包中自带与之匹配的显卡驱动,所以务必要删除电脑先前的显卡驱动。我也把MX250的显卡驱动卸载了。后来扫描硬件的时候又出现了,一头雾水。
CUDA:选择自定义安装--->勾选所有驱动组件--->一路通过
cuDNN:解压后将三个文件夹中内容分别粘贴到CUDA安装目录下对应文件夹内即可。
第三步:安装tensorflow-gpu
1.创建conda环境
conda create -n tensorflow pip python=3.5
之前就把conda设置为了清华源,下载速度很快
2.激活环境
activate tensorflow
这样就进入了刚创建的“tensorflow”环境。
3.安装tensorflow-gpu
pip install --ignore-installed --upgrade tensorflow-gpu=1.8.0
4.测试
能成功运行的话这样就安装成功啦!
注意在VScode中把设置调成env中的tensorflow环境就行了。
最终运行代码时报错:failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED 并直接退出运行,问题在于:
https://blog.csdn.net/weixin_42769131/article/details/84372952
如果你是使用 GPU 版 TensorFlow 的话,并且你想在显卡高占用率的情况下(比如玩游戏)训练模型,那你要注意在初始化 Session
的时候为其分配固定数量的显存,否则可能会在开始训练的时候直接报错退出:
这时你需要用下面的方法创建 Session:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
这里的0.333就是占你总显存的份额。
遇到的诸多问题:
1.tensorflow2.0
我完全按照博客中的步骤来时,发现安装了tensorflow-gpu2.0,结果证明,2.0完全用不了,如果是自己慢慢研究写代码或许还可以,我用的别人两年前的代码,人家用的tensorflow肯定不是2.0版本的,许多tf语句都不一样,例如:报错:“AttributeError: module 'tensorflow' has no attribute 'Session'”
因为是tensorflow 2.0版本
怎么解决:
此时须用
tf.compat.v1.Session()
替代
tf.Session()`
2.tensorflow1.4.0
也用不了,报错:ImportError: Could not find 'cudart64_100.dll'
解决方法:https://blog.csdn.net/aya_tao/article/details/100056269
但是解决了(改名后可以用但)事实上也无法用gpu加速,这就是第三个问题了
3.GPU占用率1%
看似安装完成之后其实也没有用GPU加速,原因尚未可知,至少前两个问题中的版本用不了。我还尝试使用TensorFlow指定GPU设备、分配显存,依然没有用。
4.查阅过的博客
https://ask.csdn.net/questions/710159无法调用gpu
https://blog.51cto.com/cfy10/2446977?source=dra安装tensorflow2.0的坑
https://blog.csdn.net/gangeqian2/article/details/79358543tensorflow安装
https://blog.csdn.net/littlehaes/article/details/82317220tensorflow获取可用运算设备(CPU,GPU)