在linux和windows下anaconda+pycharm+tensorflow+cuda的配置
在linux和windows下anaconda+pycharm+tensorflow+cuda的配置
第一次在csdn上写博客,纯粹是为了想自己以后可以来看看之前踩得坑,也方便以后遇到同样的问题的时候能够有经验解决
Window10
首先是在Linux下,刚开始之所以会遇到这个问题是在跑Github上的一个代码,是需要用到tensorflow框架,之后配好环境后代码是能够跑通的,但是计算速度非常慢,使用nvidia-smi查看之后发现并没有用到GPU,应该还是在用cpu在跑,但是代码里也都对GPU进行了调用,所以就很奇怪,寻思之前就对cuda什么的这些不了解,就趁着这次机会可以好好解决一下这个问题。
1.Anaconda+pycharm
2. cuda和cudnn的安装
3. 与tensorflow的关系;
4. tensorflow与tensorflow-gpu
1、Anaconda+pycharm
Anaconda 是一个基于 Python 的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,装上Anaconda,就相当于把 Python 和一些如 Numpy、Pandas、Scrip、Matplotlib 等常用的库自动安装好了,使得安装比常规 Python 安装要容易。如果选择安装Python的话,那么还需要 pip install 一个一个安装各种库,安装起来比较痛苦,还需要考虑兼容性,非如此的话,就要去Python官网(https://www.python.org/downloads/windows/)选择对应的版本下载安装,可以选择默认安装或者自定义安装,为了避免配置环境和安装pip的麻烦,建议勾选添加环境变量和安装pip选项
此外,anaconda安装成功后可以很方便的创建虚拟环境,对于不同的projects是会需要不同版本的python解释器,这时候利用anaconda就可以很方便的对于不同的环境进行管理。
anaconda和pycharm的安装和配置可详见这篇博客:https://zhuanlan.zhihu.com/p/36389880
对于我而言,因为在之前安装的过程中并没有勾选环境变量,所
以需要在安装完anaconda后添加环境变量,也就是首先找到anaconda的安装路径,然后找到一个scripts文件,点击后将路径复制
然后,右键“我的电脑”>选择“属性”>高级系统设置>环境变量
这时候直接在cmd里输入python就会是anaconda里base的python版本,conda也不是内部命令。
这时候就大功告成了,可以使用conda来创建虚拟环境,对各个projects的管理也方便和很多。常用的conda的命令
2、cuda和cudnn的安装
用GPU计算肯定离不开显卡,显卡的好坏决定了你的运算速度。首先查看你的显卡,gpu算力需要5.0以上的显卡才能进行GPU的计算,可参考下面的博客:https://blog.csdn.net/huixingshao/article/details/82215703 然后就是安装CUDA和cuDNN。
可查看自己电脑的显卡支持的最高版本的cuda,从控制面板里搜nvidia控制面板,在系统信息里可以看到显卡驱动和支持的cuda版本,显卡驱动个cuda版本的对应关系:https://blog.csdn.net/zl535320706/article/details/83474849
之后cuda和cudnn的安装和配置可按照这篇博客进行。
https://blog.csdn.net/Coppa/article/details/90573236
注:cuda安装完成后如果测试代码可能会有问题,重启一下电脑可能会解决。
验证是否安装成功可以直接在cmd里用nvcc --version查看cuda的版本。
3、与tensorflow的关系
众所周知,tensorflow是一个深度学习的框架,我们在跑github上的代码的时候经常会在readme文件里告知此项目需要的tensorflow版本,所以这也是需要创建虚拟环境的好处,可以很容易对不同的项目使用不同的环境,但是一旦用到tensorflow-gpu版本的话就需要使用cuda来进行加速,但是我们在之前已经安装好了cuda的版本,不同的cuda版本是有对应的tensorflow-gpu版本的,具体可参考:https://blog.csdn.net/qq_27825451/article/details/89082978
这里需要注意的是,如果是使用pip install tensorflow-gpu 这时候的tensorflow-gpu是和在电脑里装的cuda和cudnn对应的,所以安装的版本要注意,这时候就会产生一个问题,我们不同的项目是需要使用不同的tensorflow版本的,那我们每次还需要再重新安装cuda吗?其实是不用的,使用pip进行安装时是只会安装install之后的包,但是如果使用的是conda install进行安装,则还会安装除了这个包外其他可能会用到的依赖项,所以如果conda install tensorflow-gpu时就会看到
是默认已经安装了cuda和cudnn的,而且版本是已经适配好的,所以在使用conda进行安装的时候其实是并没有看外部电脑系统里带的cuda版本,所以,这样就可以使用虚拟环境随意使用不同的cuda和tensorflow版本。但是也有一个问题,比如我的系统cuda是9.0,我在使用pip install tensorflow-gpu1.6的时候是可以安装并且跑成功的,但是当我使用conda install tensorflow-gpu1.6的时候就无法进行安装,当调整为1.10版本的时候就可以了,这是目前无法理解的问题,可能是系统自带的cuda还是会影响tensorflow的版本,亦或者是python的版本问题,之后还需要进行解决。
4、tensorflow与tensorflow-gpu
有一个例子说的很好
GPU的工作大部分就是这样,计算量大,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分
CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个
CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别,而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了
GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。
当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。
gpu版安装麻烦,需要涉及到cuda(显卡驱动)和cdnn 以及tensorflow-gpu的配置很麻烦,即使安装成功后,调用一大堆问题,只有解决了这些问题才是真的安装好了,并不是有了这个东西就算安装好了。
网上说的tensorflow-gpu的安装会覆盖tensorflow(cpu版),即使tensorflow存在,也是被覆盖了。
我在自己尝试的时候使用conda安装gpu会把cpu版本的也装上,但是在使用的时候是可以直接指定gpu进行使用的。
Linux
linux下基本和windows是一致的。需要注意的点如下。
1、环境变量
linux下的环境变量可以直接编辑./bashrc文件。
命令:ls -a 找到文件 .bashrc;
gedit~./bashrc 打开文件后直接在文件的最末尾加上要添加的环境变量,export PATH=路径:$PATH,之后还需要source回到跟目录即可
2、想到再写吧