ubuntu16.04 LTS安装Tensorflow-gpu(python)

最近在学习深度强化学习,仿真环境gym下的很多组件windows下不支持,只能移步linux,在linux下安装tensorflow-gpu经常会出现各种奇奇怪怪令人生无可恋的问题,总是耗时耗力直到绝望,好在多次安装,跳过各种坑,网上经常难以找到称手的教程,自己写一个,以后用,同时献给需要的小伙伴们。

首先目前tensorflow的gpu版支持cuda计算架构,对opencl也开始支持,但不是很好。cuda是nvidia的架构,因此AMD显卡的小伙伴就不要尝试了,默默祈祷好用的opencl版本吧。

1、系统配置

本人使用N年前古董本Thinkpad W530。显卡为Quadro K1000M ,计算能力勉强达到3.0。考虑到Tensorflow的稳定运行,没有使用最新的18.04 LTS,而是使用了ubuntu 16.04 LTS,毕竟这个版本官方支持到2020年,已经够用了。(2020年本人可能已经因为年龄太大被扫地出门,在某个街道翻垃圾桶为生了)

2、软件需求

官网给出的需求列表如下:

安装ubuntu后,默认显卡驱动为社区维护的第三方开源驱动,而要使用CUDA必须安装官方384.X版本以上驱动。虽然安装CUDA的时候会安装NVIDIA最新的驱动,但需要停用默认驱动,配置繁琐,易出错。先通过如下方式安装一个官方驱动,安装CUDA时会方便很多。首先,打开终端,更新软件源,sudo apt-get update 。在系统设置|软件和更新|附加驱动中选择官方驱动,点击应用更改(有时点一次不管用,需要点多次!!!),如下图所示,安装之时忘记截图了,这张是后补的,不太一样,但选专用驱动就好了。

安装后,在系统中搜索NVIDIA,找到NVIDIA X server setting,说明官方驱动安装成功,双显卡要确定当前使用的是独显,如下所示。

安装CUDA。本打算按照官网提供的方法安装CUDA,但运行以上命令,直接报错,如下图。


wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb

无奈,只能自行安装,根据CUDA安装说明,可以添加相应软件源,然后使用apt安装。在终端中输入以下命令:

sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
sudo apt install ./cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
sudo apt-get update

虽然看似只添加了CUDA9.1的源,其实可以安装任何版本,如果不指定版本,会安装最新的CUDA,我安装了CUDA10,之后开始安装,按需选择:

sudo apt-get install cuda

要需要安装CUDA9.0的,执行sudo apt-get install cuda9.0,安装cuda后可以运行如下命令,测试cuda是否装好,结果如下。

cd /usr/local/cuda-10.0/
cd ./samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery 

3、安装tensorflow

之后的必须组件,我使用了一种比较方便的办法。首先安装anaconda ,tensorflow目前不支持python3.7,推荐安装anaconda5.1版 ,如果安装最新anaconda,需要新建python3.6的虚拟环境。安装完成后,接着执行以下命令:

conda install tensorflow-gpu

 如果安装过程中提示权限问题,执行以下命令,更改所有者。

 sudo chown -R yzp:yzp ~/anaconda3

 conda会安装所有必需组件,对于可选组件,可以根据需要自行安装。好了,现在可以见证奇迹了,列出的可用设备输出结果,可以看到GPU。

In [1]:from tensorflow.python.client import device_lib

In [2]:device_lib.list_local_devices()
Out[2]: 
[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 7784159223744263143, name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 1512570880
 locality {
   bus_id: 1
   links {
   }
 }
 incarnation: 8493799634924620097
 physical_device_desc: "device: 0, name: Quadro K1000M, pci bus id: 0000:01:00.0, compute capability: 3.0"]

跑一段代码,在终端中运行,安装htop监测CPU状态,运行watch监测显卡状态,结果如下图,可清楚看到,GPU和CPU在同时使用,GPU利用率很高。

sudo apt-get install htop
watch -n 10 nvidia-smi
htop

猜你喜欢

转载自blog.csdn.net/yzp1011/article/details/83928449