显卡:GTX1060 6G (可用命令lspci | grep -i nvidia
查看自己显卡型号)作为自己深度学习入门使用
之前跑深度学习一直是在win10上用1.12版本,但其实Ubuntu训练速度比win快多了。于是转到了之前配置的Ubuntu18.04系统下,加上现在出了2.x想熟悉下,查看配置图好像只有1.15和2.0同时兼容一个CUDA,于是准备配置tensorflow1.15+tensorflow2.0的环境。
后续可能在实验室的多个电脑上跑程序,准备使用Pycharm作为IDEA,后续安装Git作为代码版本管理工具。
之前刚配置了两台GTX1080Ti 和RTX2080Ti的机器,Ubuntu20.04的系统比18.04更方便一些,趁着热乎劲把自己的1066也给配了吧。
为了避免ubuntu默认下载源的下载速度过慢,我先在软件和更新里改成了国内的阿里源。
(1)输入命令lsmod | grep nouveau
若有输出,表示该驱动还在使用
(2)使用命令sudo gedit /etc/modprobe.d/blacklist.conf
打开文件,在末尾加入以下两行:
blacklist nouveau
options nouveau modeset=0
保存(Ctrl+S或右上角"保存")并退出。
(3)使用命令sudo update-initramfs -u
更新刚才所做的改动
(4)重启电脑sudo reboot
。再在终端输入lsmod | grep nouveau
命令,若无输出,表示禁用成功。
使用命令sudo dpkg --list | grep nvidia-*
可以查看本机驱动版本
通过以下链接在Nvidia官网查看nvidia驱动与CUDA的版本对应关系:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
可以看到,CUDA10.0要求nvidia410.48以上的驱动。
然后我们可以直接在Ubuntu的软件和更新里面,选择合适的驱动版本进行安装,我的Ubuntu18上已经安装了nvidia-440,就可以直接跳过了。
安装完成后,命令行输入nvidia -smi
可以查看驱动信息和GPU使用情况:
CUDA这里也比较容易出问题,首先我们要去到tensorlfow的官网的install页面 https://tensorflow.google.cn/install/source,查看我们要安装的版本对应的所有环境,上面有所有 tf 版本的环境说明噢,我只截取了前半部分放到下面。
需要注意的主要是【GCC版本】和【CUDA版本】
【查看和安装gcc/g++版本的命令】
ll /usr/bin/gcc*
查看本机所有已安装gcc版本
gcc -v
查看本机的默认gcc版本
sudo apt-get install gcc-7
安装gcc-7版本
g++命令与上述相同,只需把gcc改成g++
我的gcc/g++只有4.8版本,所以需要升级,这里选择不卸载旧版本,使可以在多个版本之间切换以备不时之需:
(1)安装gcc-7和g++7 sudo apt-get install gcc-7 g++7
(2)使用update-alternatives设置gcc和g++各个版本的优先级,优先级用数字表示,数字越大优先级越高。
把gcc-4.8版本设为10的优先级:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
把g+±7版本设为30的优先级:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 30 --slave /usr/bin/g++ g++ /usr/bin/g++-7
(3)使用命令sudo update-alternatives --config gcc
选择想用的版本,输入编号再回车即可,如下图所示:
其实在第(2)步设置完优先级之后已经自动调整为7版本了,所以第(3)步可以跳过,以后要切换版本再使用。
这时候再用命令gcc -v
和g++ -v
看默认环境都已经变成了7的版本。
去到nvidia官网的CUDA历史版本页https://developer.nvidia.com/cuda-toolkit-archive
,选择 “CUDA Toolkit 10.0” 进入下载页,根据本机环境下载runfile文件(ubuntu18以上的也都选18.04)如下图:
下载完毕后,在下载文件夹下打开终端,输入命令sudo sh cuda_10.0.130_410.48_linux.run
启动安装程序,按住回车拖完说明页,然后按照指令进行如下图操作:
注意第二个是安装驱动的选项,要选no,我们已经安装了nvidia驱动了。
安装完成后如下图,可能会有一些warning,可以忽略。
【添加环境变量】
(1)命令行打开.bashrc文件gedit ~/.bashrc
(2)在末尾写入以下两句,保存(Ctrl+S或右上角点击"保存")后退出
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
(3)执行命令source ~/.bashrc
使所作改动生效
(4)执行命令nvcc -V
查看环境变量是否设置成功,成功的话会显示cuda-10.0版本,如下图:
接下来通过运行刚下载的CUDA_Sample,来测试CUDA是否能正常运行,在命令行依次输入以下三句命令(如果Sample安装到了其他位置需要调整路径,或者直接把第一句换成手动在目标文件夹下打开终端):
cd ~/NVIDIA_CUDA-10.0_Samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
输出的最后部分如下所示:
若最后一行显示 “Result = PASS” 就表示CUDA安装成功了,另外上面一行也可以看到我的 “CUDA Driver Version = 10.2, CUDA Runtime Version = 10.0” ,表示显卡驱动的CUDA版本是10.2,运行版本是10.0,没毛病~
从这开始的安装就比较容易了,首先去nvidia官网https://developer.nvidia.com/rdp/cudnn-archive下载CUDA10.0版本对应的cudNN,直接选 cuDNN Library for Linux 那个就可以。
下载下来后,在下载目录下依次执行命令:
# 解压下载的cudnn压缩包,注意文件名
tar -xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
# 将解压的文件别拷贝到刚才安装的cuda之下
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
# 修改文件权限
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
至此,cuDNN的配置就完成了,刚解压的文件夹可以删掉。
(另外,也可以通过下载刚才页面的三个(Deb)文件进行安装,优点是安装完后可以执行Sample来测试是否安装正确)
去到Anaconda官网 https://www.anaconda.com/products/individual 下载免费的个人版本,然后在安装目录下用命令sudo sh Anaconda3…(.sh文件名)
进行安装中间都同意就好了,安装完毕后输入命令source ~/.bashrc
更新环境变量,就可以发现来到了conda的base环境下。
【conda常用命令】
conda --version #查看conda版本,验证是否安装
conda update conda #更新conda到最新版本,也会更新其它相关包
conda update --all #更新所有包
conda update package_name #更新指定的包
conda create -n env_name package_name(s) #创建名为env_name的新环境,并在该环境下安装名为package_name的包,package_name可以写多个,用空格隔开
conda activate env_name #切换至env_name环境
conda deactivate #退出环境
conda info -e #显示所有已经创建的环境
conda remove --name env_name –all #删除环境
conda install package_name #在当前环境中安装某个包(也可以用pip install package_name)
conda remove package_name #删除当前环境中的某个包
conda install --name env_name package_name #在指定环境中安装某个包
conda remove --name env_name package_name #删除指定环境中的某个包
根据这些命令后面就可以安装tensorflow-gpu啦~
在conda内创建多个环境,用来分别放tf1.15和tf2的版本(以后安装pytorch也可以生成一个pytorch的环境)
以tf1.15为例:
# 创建环境"tf1.15"的同时安装python3和tf1.15(别忘了-gpu)
conda create -n tf1.15 python=3.7 tensorflow-gpu==1.15
# 进入tf1.15环境
source activate tf1.15
# 进入python验证是否安装成功
python
import tensorflow as tf
tf.__version__ #查看tf版本
tf.test.is_built_with_cuda() #返回true表示获取到cuda
tf.test.is_gpu_available() #返回true表示获取到gpu
exit()
至此,Ubuntu18.04下的tensorflow-gpu-1.15 / 2.0 就安装好啦~
但是!如果你想再安装一个Pycharm,一切就没有么简单了!且往下看
Pycharm的安装我就不多说了,现在community版本已经免费使用不需要激活了。
要记住一点就是,记得创建运行脚本这里要钩上,以后想运行直接从命令行输入pycharm即可
创建工程后,点击进入File->Setting->Project: (project_name)->Python Interpreter中,Add窗口,选择Conda Environment下的Existing environment的相应环境即可。
奉上我的测试代码:
import tensorflow as tf
def test(x, y):
a = tf.placeholder(dtype=tf.int8, shape=None)
b = tf.placeholder(dtype=tf.int8, shape=None)
c = tf.add(a, b)
with tf.Session() as sess:
print(sess.run(c, feed_dict={a: x, b: y}))
print(tf.test.is_built_with_cuda(), tf.test.is_gpu_available())
if __name__ == '__main__':
test(1, 1)