无root权限下在服务器装tensorflow-gpu1.12版本和Python3.6

1.安装Miniconda

按照以下链接下载到本地,再传到服务器上运行就可以在自己的用户路径下安装conda环境了,运行代码: sh Miniconda2-latest-Linux-x86_64.sh
https://repo.anaconda.com/miniconda/Miniconda2-latest-Linux-x86_64.sh

2. 启用conda

当执行conda命令时,提示 command not found
无root权限下在服务器装tensorflow-gpu1.12版本和Python3.6
查看上一步的结果,我们能发现miniconda安装的是修改用户路径下的 .bashrc 文件,因此可以在当前窗口执行 source ~/.bashrc 重新生效配置。
或者重新连接服务器。

3. Tensorflow-gpu 需要使用CUDA和cuDNN

3.1. 下载
这里 CUDA 使用9.0版本, cuDNN 使用7.6.4版本
CUDA 下载地址:https://developer.nvidia.com/cuda-toolkit-archive
cuDNN 下载地址:https://developer.nvidia.com/rdp/cudnn-download
cuDNN下载需要注册Nvidia开发者账号,如果下载的文件扩展名不是tar.gz,改成tar.gz即可。
3.2. 安装 CUDA 和 cuDNN
将安装包上传到服务器上,
1)给安装程序添加执行权限
chmod u+x cuda_9.0.176_384.81_linux.run
2)执行安装程序
./cuda_9.0.176_384.81_linux.run
3)按照提示安装
4)将cuDNN放到CUDA的相应路径,目录结构按照cuDNN的压缩包的结构
解压cuDNN
tar zxvf cudnn-9.0-linux-x64-v7.6.4.38.tar.gz
进入到解压后的文件夹中
执行 cp -r ./* ~/software/cuda-9.0/,将cudnn复制到cuda的对应文件夹中(记得修改cuda安装路径)
3.3. 配置环境变量
在用户路径下的.bashrc文件中添加环境变量
vim ~/.bashrc
内容如下:
无root权限下在服务器装tensorflow-gpu1.12版本和Python3.6
cuda,CUDA_HOME修改为CUDA安装路径
export CUDA_HOME=/public/home/lrstu19/software/cuda-9.0
export PATH=CUDAHOME/bin:CUDA_HOME/bin:PATH
export LD_LIBRARY_PATH=LDLIBRARYPATH:LD_LIBRARY_PATH:CUDA_HOME/lib64
重新登录服务器或执行source ~/.bashrc使环境变量生效

创建虚拟环境

conda create –n 自己命名的虚拟环境名字 python=版本
**虚拟环境
conda activate name
现在可以在虚拟环境中安装python包而不影响其他环境了

3. 安装Tensorflow-gpu

pip install tensorflow-gpu==1.12.3
python中执行测试代码
import tensorflow as tf
当不再提示cuda和cudnn相关的错误时,证明安装成功

tensorflow测试代码

import tensorflow as tf

with tf.device(’/cpu:0’):
a = tf.constant([1.0,2.0,3.0],shape=[3],name=‘a’)
b = tf.constant([1.0,2.0,3.0],shape=[3],name=‘b’)
with tf.device(’/gpu:1’):
c = a+b

#注意:allow_soft_placement=True表明:计算设备可自行选择,如果没有这个参数,会报错。
#因为不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,将会报错。
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=True))
#sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(tf.global_variables_initializer())
print(sess.run©)