以前一直都是在Windows上玩CPU版的Tensorflow,现在有时间弄一下,买了一根16GB的内存条扩容上。以前是Win10+Ubuntu双系统,以前的Ubuntu上由于做实验有一堆的错误待解决,现在懒得折腾了,直接装成Ubuntu单系统。我的电脑配置如下:
CPU:Intel Core i7-7770HQ
内存:24GB
显卡:NVIDIA 940MX
硬盘:128GBSSD+1TB机械
Linux空间划分如下:
SSD:200MB /boot 主分区
24GB /swap 逻辑分区
剩余 / 主分区
机械:/home 逻辑分区
下面进入正题,从安装GPU驱动开始,对CUDA9、cuDNN7.1等显卡相关库的安装,以及开发环境Anaconda、Pycharm专业版破解、最后介绍tensorflow CPU版和GPU版,keras,Pytorch的安装,其间踩了不少坑,靠百度解决问题,参考可很多博客,在此感谢。
目录
一、安装NVIDIA驱动
1.卸载原有NVIDIA驱动(任选其一)
2.禁用nouveau驱动
3.命令行安装驱动
4. perform mok management(不一定会出现)
二、安装CUDA9.0
1、GCC降级
3、安装其依赖的库:
4、测试:
三.安装cuDNN
1、安装
2、测试
四、安装Anaconda
五、安装TensorFlow
1、安装Tensorflow CPU版本
2、安装Tensorflow GPU版本
六、安装Keras
七、安装jupyter
八、安装Pycharm专业破解版
九、安装pytorch-cpu
#使用apt方法安装:
sudo apt-get remove --purge nvidia*
#使用.run文件安装:
sudo chmod +x *.run
sudo ./NVIDIA-Linux-x86_64-384.59.run –uninstall
sudo gedit /etc/modprobe.d/blacklist.conf
在末尾添加:
blacklist nouveau
然后执行:sudo update-initramfs -u
重启进入命令行界面后执行:lsmod | grep nouveau
。如果没有屏幕输出,说明禁用nouveau成功。注意此步需要在命令行下执行。
确定自己所需要安装的驱动版本:
ubuntu-drivers devices
可以看到有目前可以安装的驱动:
driver : nvidia-driver-390 - distro non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
安装推荐的390:
sudo apt install nvidia-driver-390
安装完毕使用命令nvidia-smi会出现显卡信息。
安装完显卡驱动后,系统需要重启加载驱动,注意如果按照上述流程进行驱动安装,那在重启系统时,会出现一个蓝色背景的界面 perform mok management , 本人在这一步选择了 continue reboot, 导致新安装的 N 卡驱动没有加载,正确的做法如下:
(1)当进入蓝色背景的界面perform mok management 后,选择 enroll mok ,
(2)进入enroll mok 界面,选择 continue ,
(3)进入enroll the key 界面,选择 yes ,
(4)接下来输入你在安装驱动时输入的密码,
(5)之后会跳到蓝色背景的界面perform mok management 选择第一个 reboot
这样,重启后N卡驱动就加载了,恭喜你,Ubuntu 18.04LST 安装成功。可以在系统信息处看到显卡已经是独立显卡。
下载地址:https://developer.nvidia.com/cuda-zone
注意:tensorflow对CUDA的版本有要求,见https://github.com/mind/wheels
由于CUDA 9.0仅支持GCC 6.0及以下版本,而Ubuntu 18.04预装GCC版本为7.3,故手动进行降级:
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
装完后进入到/usr/bin目录下
$ls -l gcc*
会显示以下结果
lrwxrwxrwx 1 root root 7th May 16 18:16 /usr/bin/gcc -> gcc-7.3
发现gcc链接到gcc-7.0, 需要将它改为链接到gcc-4.8,方法如下:
sudo mv gcc gcc.bak #备份
sudo ln -s gcc-4.8 gcc #重新链接
同理,对g++也做同样的修改:
ls -l g++*
lrwxrwxrwx 1 root root 7th May 15:17 g++ -> g++-7.3
需要将g++链接改为g++-4.8:
sudo mv g++ g++.bak
sudo ln -s g++-4.8 g++
再查看gcc和g++版本号:
gcc -v g++ -v
均显示gcc version 4.8 ,说明gcc 4.8安装成功
2、安装cuda及其补丁
先安装Base Insataller:
sudo sh cuda_9.0.176_384.81_linux.run
需要注意的是,之前已经安装过显卡驱动程序,故在提问是否安装显卡驱动时选择no,其他 选择默认路径或者yes即可。然后,继续执行以下操作安装3个 patch :
sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.1. 176.2_linux.run
sudo sh cuda_9.1. 176.3_linux.run
配置环境变量:
cd ~
sudo gedit .bashrc
在末尾添加以下路径:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
更新路径:
source .bashrc
sudo apt-get install python-pip python-dev
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
cd ../bandwidthTest
sudo make
./bandwidthTest
下载地址:https://developer.nvidia.com/cudnn,需要简单注册(免费),下载对应的cuDNN,我这里下载的是cuDNN v7.1.4[May 16,2018],for CUDA 9.0,选择其下的cuDNN v7.1.4 Library for Linux。解压后的文件夹名字为CUDA,复制到CUDA的安装目录/usr/local/cuda下。
tar -xzvf cudnn-9.0-linux-x64-v7.tgz
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
安装Freeimage
在我们验证cuDNN之前,我们必须首先安装freeimage lilbray作为ministCUDNN示例代码的依赖关系。否则,会有提示要求我们正确设置Freeimage。
sudo apt-get install libfreeimage3 libfreeimage-dev
验证cuDNN安装
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
如果一切正常,我们可以得到我们的结果 - “测试通过!”
下载地址:https://www.anaconda.com/download/,此处我下载的是Python3.6版的。
bash Anaconda3-5.2.0-Linux-X86-64.sh
1、添加环境变量:
sudo gedit ~/.bashrc
在末尾加入:
export PATH="/home/zhangyunfeng/anaconda2/bin:$PATH"
更新一下环境变量:
source ./bashrc
最后使用命令看下有没有生效
conda list
2、设置Anaconda镜像源以减少等待时间。同样,我的镜像源是科大镜像。
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
这里参考了https://www.cnblogs.com/Ph-one/p/9000211.html
将使用virualenv安装。 首先安装libcupti-dev库。
sudo apt-get install libcupti-dev
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
然后我们将安装virtualenv并创建一个Tensorflow Environment。
sudo apt-get install python3-pip python3-dev python-virtualenv
virtualenv --system-site-packages -p python3 tensorflow # create a enviroment named tensorflow
注意:在这一过程中可能会出现“setuptools pkg_resources pip wheel failed with error code 2”错误,导致虚拟环境创建不成功。
则使用:virtualenv --system-site-packages -p python3 tensorflow --no-setuptools
当环境创建好了,我们必须在每次使用tensorflow时激活它。首先按照推荐安装tensorflow cpu version。
source ~/tensorflow/bin/activate
pip3 install --upgrade tensorflow # install the cpu version
验证Tensorflow CPU版本
在同一个环境中,这意味着你会在你的shell中看到它。
(tensorflow)$
键入python和下面的python代码。
python
# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
这是我的结果。虽然它与官方验证结果不同,但是应该没问题。
>>> print(sess.run(hello))
b'Hello, TensorFlow!'
>>>
2、安装Tensorflow GPU版本
首先确保我们处于同一环境中
pip3 install --upgrade tensorflow-gpu
验证Tensorflow GPU版本
仍然确保你在Tensorflow Enviroment。
键入python和下面的python代码。
python
# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
结果是一样的。但是我们可以看到我们的GPU设备正在工作。可以在下的测试结果中看到自己的显卡型号。
Pip install keras
pip3 install jupyter
jupyter notebook --generate-config
jupyter notebook
我下载的是pycharm-professional-2018.1.4,破解补丁是JetbrainsCrack-2.8-release-enc.jar,找不到的童鞋可以留言,我发给你。
破解如下:
ThisCrackLicenseId-{
"licenseId":"11011",
"licenseeName":"微信公众号",
"assigneeName":"裸睡的猪",
"assigneeEmail":"[email protected]",
"licenseRestriction":"",
"checkConcurrentUse":false,
"products":[
{"code":"II","paidUpTo":"2099-12-31"},
{"code":"DM","paidUpTo":"2099-12-31"},
{"code":"AC","paidUpTo":"2099-12-31"},
{"code":"RS0","paidUpTo":"2099-12-31"},
{"code":"WS","paidUpTo":"2099-12-31"},
{"code":"DPN","paidUpTo":"2099-12-31"},
{"code":"RC","paidUpTo":"2099-12-31"},
{"code":"PS","paidUpTo":"2099-12-31"},
{"code":"DC","paidUpTo":"2099-12-31"},
{"code":"RM","paidUpTo":"2099-12-31"},
{"code":"CL","paidUpTo":"2099-12-31"},
{"code":"PC","paidUpTo":"2099-12-31"}
],
"hash":"2911276/0",
"gracePeriodDays":7,
"autoProlongated":false}
到期时间为2099年,基本为永久啦。这里参考了博客,在此感谢:
https://blog.csdn.net/u014044812/article/details/78727496。
conda install pytorch -c soumith