因为自己的机子太差了,所有从学校申请了一个服务器的账号,之前按照网上的教程,在自己的用户目录下裸装了python3.6。本来想继续裸装来着,但是尝试了很多方法,出了太多奇奇怪怪的问题,最终选择在anaconda环境下安装。
首先安装cudahttps://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=CentOS&target_version=7&target_type=runfilelocal和cudnnhttps://developer.nvidia.com/rdp/cudnn-download,这里版本很重要,Anaconda3 5.0.0 +tensorflow gpu版+cuda9 +cudnn7是尝试后可行的。按照这篇博文安装https://blog.csdn.net/ws995339251/article/details/85699172
wget -c https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run
sh cuda_9.0.176_384.81_linux-run
accept #接受协议
no #不更新驱动
yes #确认安装toolkit
no #不建立软链接
no #不安装samples库(因为不需要cuda编程)
安装时,NVIDIA Accelerated Graphics Driver和OpenGL libraries都选no,默认位置要改到自己的用户目录名下“/home/我的名字/”
然后配置环境变量,将以下内容写入到~/.bashrc尾部:
export PATH="/home/name/cuda9.0/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/name/cuda9.0/lib64/"
然后激活配置文件
source ~/.bashrc
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
测试CUDA的samples,显示一些GPU的信息则安装成功。
cd /home/name/cuda9.0/samples/1_Utilities/deviceQuery
make
./deviceQuery
cuda安装成功,查看GPU信息
nvidia-smi # GPU
nvcc -V # 版本
解压对应的cudnn文件
wget http://developer.download.nvidia.com/compute/redist/cudnn/v7.3.0/cudnn-9.0-linux-x64-v7.3.0.29.tgz
tar -xzvf cudnn-9.0-linux-x64-v7.3.0.29.tgz
把解压的文件复制到对应的cuda文件夹下。这里有个要注意的点,如果直接复制所有文件,最后测试代码时可能会报错“ImportError: /usr/local/cuda/lib64/libcudnn.so.7: file too short”,按照https://blog.csdn.net/qq_20373723/article/details/86137271 这篇博文的办法,libcudnn.so libcudnn.so.7 libcudnn.so.7.3.0这三个文件,删除libcudnn.so.7 ,再cd /home/name/cuda9.0/lib64文件夹下,
ln -s libcudnn.so.7.3.0 libcudnn.so.7
就可以了,其中libcudnn.so.7是新生成的。
查看cuda版本
cat /home/name/cuda9.0/version.txt
nvcc -V
查看cudnn版本
cat /home/name/cuda9.0/include/cudnn.h | grep CUDNN_MAJOR -A 2
anaconda指的是一个开源的Python发行版本,其包含了conda、Python、numpy等180多个科学包及其依赖项。可以帮助python开发者省去很多安装科学包的工作。
anaconda的主要让人选择的功能是:
1.包管理器。
2.虚拟环境管理器。
wget https://repo.continuum.io/archive/Anaconda3-5.0.0-Linux-x86_64.sh
bash Anaconda3-5.0.1-Linux-x86_64.sh
# 清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=D
安装完成后会询问是否添加环境变量,建议选是。(只会添加到本用户的环境变量中)。安装完成后,可以去~/.bashrc文件里查看一下环境变量,最后激活一下配置文件。
source ~/.bashrc
若成功,则本用户下python会从anaconda目录中打开,本用户pip默认安装目录为
~/anaconda3/lib/python3.6/site-packages
添加清华的镜像源
# ~/.condarc文件里
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
# Conda Forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
# msys2
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
# bioconda
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
# menpo
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
# pytorch
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
# for legacy win-64
# conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/
创建一个虚拟环境并激活
#conda create -n your_env_name python=X.X(2.7、3.6等)命令创建python版本为X.X、名字为your_env_name的虚拟环境。
conda create -n tensorflow python=3.6
# To activate this environment, use:
source activate tensorflow
# conda activate tensorflow
# To deactivate an active environment, use:
source deactivate
# 以下记录一些conda常用命令
conda --version # 验证并查看版本
conda list # 查已经安装的python包
conda remove -n your_env_name --all # 删除虚拟环境。
conda remove --name $your_env_name $package_name(包名) # 删除虚拟环境中的包。
conda install package_name(包名) # 安装包
conda env list 或 conda info -e # 查看当前存在哪些虚拟环境
# 更新Anaconda
conda update conda
# 更新所有包
conda update --all
conda update -n base -c defaults conda
激活环境后下载tensoflow-gpu,保险起见用了1.9.0版,其他版本可以尝试一下。
(tensorflow)$ pip install tensorflow-gpu==1.9.0
这样就可以了,跑了一下测试代码没有报错。
但是我还是想在虚拟环境外直接安装tensorflow gpu版,但是我尝试了一下,还是报错了,我也不知道为啥。还有就是,因为安装了anaconda3,我的用户目录下pyhton默认为anaconda3的版本,应该是因为修改了环境变量缘故。
我本来就安装了python3.6+tensorflow,也就是CPU版,最近想更新成GPU版,在更新之前,按照https://blog.csdn.net/freewebsys/article/details/81276120 这篇教程安装了CUDA9.0和cudnn7.6。
查询自己显卡是否支持CUDA https://developer.nvidia.com/cuda-gpus
准备工作做好后就pip3更新一下
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow-gpu
这里用镜像网站安装会快很多
阿里云
http://mirrors.aliyun.com/pypi/simple/中国科技大学
https://pypi.mirrors.ustc.edu.cn/simple/豆瓣(douban)
http://pypi.douban.com/simple/清华大学
https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学
http://pypi.mirrors.ustc.edu.cn/simple/
以上更新不出意外的报错了,提示“Failed to load the native TensorFlow”。我百度了一下这个问题,为了确保我就算GPU版安装失败,CPU版本还继续可用,所以我想先试试能不能恢复到CPU版本。
pip3 install --upgrade --ignore-installed tensorflow
不出所料的,这里重新安装完,numpy模块会报错,原因是安装了两个numpy模块,
ImportError: Something is wrong with the numpy installation. While importing we detected an older version of numpy in ['C:\\Python36\\lib\\site-packages\\numpy']. One method of fixing this is to repeatedly uninstall numpy until none is found, then reinstall
按照报错的提示,卸所有版本的numpy,再重新安装就好,我卸载了两次。注意一下这里卸载需要管理员权限。
pip3 uninstall numpy
然后再按照上面重新安装numpy,再试一下,import tensorflow as tf 就没有报错了,运行了一下以前的代码也照样可行。
然后神奇的事情发生了。这次重新安装后,“import tensorflow as tf”竟然没有报错……我也不知道这中间到底是为什么,也许是之前也是有两个numpy模块所以才会报错?不是很理解,反正就是这么神奇的装好了。但是跑程序的时候发现并没有使用GPU,可能是因为本身机子配置比较差,没有GPU可跑。所以这种安装方法到底行不行我也不知道。