2020-04-13:今天一整天时间在配置Linux下的TensorFlow环境,着实心累
1. 目的:
- Linux服务器下有3块2070GPU,我的reproduce代码是TensorFlow写的,所以要在该服务器下配置GPU版的TensorFlow
2. 连接Linux服务器,连网,数据互传:
- 在windows下使用远程桌面,连接linux服务器,输入ip,用户名:ivlab,连接时选择'console' module,输入密码,即可连接成功
- 将Linux服务器连网:sudo vpn-connect -c,输入校园网的上网账号+@a,密码,之后再输入sudo vpn-connect 可以连接上网
- 从windows向linux传输数据:建议使用Xftp6软件,可以网上下载,学生账号免费使用。Xftp6使用方法:
- 双击打开Xftp6,新建会话(如下),填写相关内容
- 名称可以任意;主机是Linux的ip地址;协议旋转SFTP即可,端口号:22即可;用户名:ivlab,密码:xxx
- 连接建立成功以后,可以直接从windows拖拽文件到linux。为了维护服务器健康,将文件放在home/ivlab/new_home/zx/目录下,这个目录是4TB的硬盘
- Linux 服务器驱动安装的教程
- 服务器的版本型号是ubuntu 16.0.4,根据教程安装https://blog.csdn.net/fdqw_sph/article/details/78745375
- 下载显卡驱动器, NVIDIA-Linux的驱动器在Home文件夹下:NVIDIA-Linux-x86_64-440.100.run
- 以下方法重装了驱动以后,可能屏幕分辨率很小,需要使用独显连接一下屏幕让其工作一下就可以了!
-
#禁用nouveau lsmod | grep nouveau
#卸载掉原有驱动 sudo apt-get remove --purge nvidia-*
#安装nvidia driver sudo chmod a+x NVIDIA-Linux-x86_64-440.100.run //获取权限 sudo ./NVIDIA-Linux-x86_64-440.100.run –no-x-check –no-nouveau-check –no-opengl-files //安装驱动
–no-x-check 安装驱动时关闭X服务 –no-nouveau-check 安装驱动时禁用nouveau –no-opengl-files 只安装驱动文件,不安装OpenGL文件
3. 安装Anaconda虚拟环境、CUDN、cudnn、TensorFlow-gpu、降级numpy
- 打开Terminal,输入以下代码创建名为zx,python=3.5的虚拟环境
conda create -n your_env_name python=X.X # 例如,我安装的3.5的python conda create -n zx python=3.5
- conda常用的命令:
conda activate zx # 激活指定的虚拟环境 conda list # 查看当前环境的包和模块 conda deactivate # 关闭当前的虚拟环境 conda info -e # 查看当前存在哪些虚拟环境
- 虚拟环境下安装CUDA 和 cudnn: https://www.cnblogs.com/elitphil/p/11833815.html
在conda虚拟环境中安装CUDA conda install cudatoolkit=8.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ (上面两行是同一条语句的) # 我安装的是8.0的CUDA 在conda虚拟环境中安装cudnn conda install cudnn=6.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/ (上面两行是同一条语句的) #我安装的是6.0的cudnn
- pip安装tensorflow-gpu
pip install tensorflow-gpu==1.4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 在Linux的虚拟环境下,我安装的是1.4.0的TensorFlow
# 这时可能会提醒安装scripy 和 pypml,同样适用pip安装
- 降级numpy,以上步骤安装完TF,运行时总是出现大量关于numpy的警告,原因是当前TF版本与已安装的numpy版本不兼容,所以降级numpy
pip uninstall numpy # 先卸载numpy pip install --upgrade numpy==1.14.5 # 将numpy降级到1.14.5
- 以上步骤结束,在pycharm运行TensorFlow时,可能会提示tf没有特定的初始化函数,但是不报错,可以使用以下方法解决:
- https://stackoverflow.com/questions/51585095/module-tensorflow-has-no-attribute-constant(注意将1.9.0改成1.4.0)
- 或者重启pycharm也可以(应该)
4. 安装tf2.x时,原本的tf1.x不可用,出现 ImportError: cannot import name 'abs'错误
pip install --upgrade tensorflow==1.4.0 # 更新自己的tensorflow cpu版 pip install --upgrade tensorflow-gpu==1.4.0# 更新自己的tensorflow-gpu版
5. pycharm导入虚拟环境
- 定位虚拟环境位置
conda info -e # 查看虚拟环境所在的位置,记住它
- 将pycharm的project的python解释器设置到上方目录的python文件上,即可
6. 使用GPU、常用设置语句
- gpu版本的TensorFlow会优先使用gpu进行运算,但是会默认使用第1块gpu:'/gpu:0'。常用语句:
with tf.device('/gpu:0'): # 指定运算发生在哪个设备上。 # 所有的cpu只有1个名字:/cpu:0 # 每块GPU都有唯一的名字,如/gpu:0, /gpu:1, /gpu:2 config = tf.ConfigProto(log_device_placement=True, allow_soft_placement=True) # log_...表示在执行代码时,显示运算发生在哪些设备上,allow_...表示将GPU不能运行的操作,自动加载到CPU上 with tf.Session(config=config) as sess: # 在生成会话时,将上述config参数设置进来 import os os.environ['CUDA_VISIBLE_DEVICES']='2' # 只使用第3块GPU,注意这是字符串 config = tf.ConfigProto() config.gpu_options.allow_growth = True # 让GPU按需分配显存 config.gpu_options.allow_growth = 0.4 # 直接指定,让代码占用所有可使用的GPU的40%显存 with tf.Session(config=config) as sess: # 生成会话时,设置config