带GPU支持的TensorFlow需要依赖一些驱动和库,主要是NVIDIA显卡驱动和CUDA。另外,推荐使用Anaconda来管理Python环境,并且使用Python 3.6.x版本,以避免不必要的麻烦。
note:
Ubuntu选择安装界面,在按e键进入编辑界面。
找到"Boot Options ed boot=… initrd=/casper/initrd.lz quiet splash —"
修改红色部分(删去“—”并添加“nomodeset”)如下
“Boot Options ed boot=… initrd=/casper/initrd.lz nomodeset quiet splash”
接着按 '‘F10’'启动系统》
1,使用命令ubuntu-drivers devices
查看当前提供的驱动列表:
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001C03sv00001043sd000085BFbc03sc00i00
vendor : NVIDIA Corporation
model : GP106 [GeForce GTX 1060 6GB]
driver : nvidia-driver-390 - distro non-free
driver : nvidia-driver-430 - distro non-free
driver : nvidia-driver-435 - distro non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
== /sys/devices/pci0000:00/0000:00:1c.6/0000:04:00.0 ==
modalias : pci:v000014E4d000043B1sv00001A3Bsd00002123bc02sc80i00
vendor : Broadcom Limited
model : BCM4352 802.11ac Wireless Network Adapter
driver : bcmwl-kernel-source - distro non-free
2,推荐安装最新版本的显卡驱动
使用命令sudo apt install nvidia-driver-435
安装显卡驱动,安装成功后重启系统。
3,查看当前显卡信息
使用命令nvidia-smi
查看当前先看的驱动版本,内心及处理器信息。
Tue Dec 31 11:18:01 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 435.21 Driver Version: 435.21 CUDA Version: 10.1 |
|-------------------------------|----------------------|----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 106... Off | 00000000:01:00.0 On | N/A |
| 29% 23C P8 8W / 120W | 603MiB / 6075MiB | 0% Default |
+-------------------------------|----------------------|----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1228 G /usr/lib/xorg/Xorg 40MiB |
| 0 1274 G /usr/bin/gnome-shell 49MiB |
| 0 2081 G /usr/lib/xorg/Xorg 300MiB |
| 0 2212 G /usr/bin/gnome-shell 210MiB |
+-----------------------------------------------------------------------------+
在NVIDIA官网的CUDA下载界面,按照操作系统类型选择合适的安装包,我这里选择Ubuntu
18.04
deb[local]
。然后使用下面的命令,来安装:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-1-local-10.1.243-418.87.00/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
CUPTI组件包含在CUDA中,无需单独安装。
CUPTI采用懒加载的方式进行初始化,当你第一次调用CUPTI函数时,会触发该初始化操作。
CUPTI提供了包括Activity API,Callback API,Event API,Metric API和Profiler API。
在cuDNN的官网,按照要求勾选一些选项后,进入下载界面,按照操作系统类型选择合适的安装包,我这里选择"Download cuDNN v7.6.5 (November 5th, 2019), for CUDA 10.1"下的运行时库和文档库:
载完成后后,使用下面的命令来依次安装
:
sudo dpkg -i ./libcudnn7_7.6.5.32-1+cuda10.1_amd64.deb
sudo dpkg -i ./libcudnn7-dev_7.6.5.32-1+cuda10.1_amd64.deb
sudo dpkg -i ./libcudnn7-doc_7.6.5.32-1+cuda10.1_amd64.deb
note: cuDNN的runtime, dev, doc三个包要按顺序依次安装。
安装完cuDNN的三个组件后,使用如下命令nvidia-smi
查看本机NVIDIA驱动程序,如果显然如下错误,则需要重启系统。
Failed to initialize NVML: Driver/library version mismatch
依次执行如下命令,如果结果输出Test passed!
,则表示cuDNN安装成功。
cp -r /usr/src/cudnn_samples_v7/ ~/Downloads/cudnn_samples_v7/
cd ~/Downloads/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
本机在Anaconda环境下安装TensorFlow 2.0.0,Python版本是3.6.9,
$ pip install tensorflow-gpu==2.0.0
note:
1,建议Python版本使用3.6.x,而不是3.7.x。
使用如下代码,如果安装正确,则会输出True
。
tf.test.is_gpu_available
如果测试TensorFlow过程中,会出现下面的错误:
2020-01-09 13:44:35.195765: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcudart.so.10.0'; dlerror: libcudart.so.10.0: cannot open shared object file: No such file or directory
2020-01-09 13:44:35.195853: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcublas.so.10.0'; dlerror: libcublas.so.10.0: cannot open shared object file: No such file or directory
2020-01-09 13:44:35.195919: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcufft.so.10.0'; dlerror: libcufft.so.10.0: cannot open shared object file: No such file or directory
原因:TensorFlow2.0现在支持CUDA10.0,还不支持CUDA10.1,而我的Ubuntu上安装的是CUDA10.1(也正确安装了cuDNN)。现在只需要安装一个CUDA10.1就行。可以仿照安装pytorch时就自动安装cudatoolkit 10.1.243,无需再下载CUDA10.0的包,在Ubuntu上重新安装CUDA10.0,而是直接用conda安装cudatoolkit。
conda install cudatoolkit=10.0
安装TensorFlow问题 解决Cannot uninstall 'wrapt'. It is a distutils installed project