大二下学期的时候,小编接触了机器学习,当时在windows下从最初的cpu版本的 tensorflow 到 anaconda、cuda、cudnn的安装,也算是从简到繁,有所进步。现在笔记本安装ubuntu系统之后却一直没有配置机器学习的环境,近日闲来无事,就想要拣一拣 (好吧,其实和重新学习没什么区别 ),加油,事情总要一步一步来。
GPU版本tensorflow的安装,其实主要分为以下几个部分:
接下来,咱们直接进入主题!!!
在网上,小编找到了很多安装显卡驱动的方法,但是为了保险起见,还是选择了最稳妥的图形界面安装,链接如下:
Ubuntu系统安装英伟达显卡驱动教程(详细图文)
安装显卡驱动之后,若要验证是否安装成功,打开终端输入:sudo lshw -c video
上面是小编安装后的输出,在第11行输出 configuration: driver=nvidia
这表示nvidia显卡驱动安装完毕
ananconda的安装很重要,在anaconda创建的虚拟环境下,直接下载 tensorflow-gpu 会自动安装cuda和cudnn。这就不需要我们手动下载并且纠结cuda和cudnn的版本问题 (最好还是手动安装,这样自己更加了解),关于安装anaconda的具体操作,小编就不赘述了,直接分享一篇好的链接。
Ubuntu18.04 安装 Anaconda3
anaconda安装好了之后,关于创建并激活环境等一些基本命令,大家可以上网搜索,小编这里多嘴一句,可以使用conda安装的第三方包,尽量使用conda,不要使用pip。
ubuntu18.04自带的gcc和g++的版本的是 7.5 (小编电脑如此),这对于cuda9.0来说是不允许的,所以小编将等级下降到了6,对应命令如下:
sudo apt install gcc-6
sudo apt install g++-6
# 删除原来建立的软链接
sudo rm gcc
# 创建新的软链接
sudo ln -s gcc-6 gcc
sudo rm g++
sudo ln -s g++-6 g++
# 通过以下命令查看现在的版本是否正确
gcc --version
g++ --version
安装cuda和cudnn最大的困难就是和自身显卡的匹配问题以及下载网速令人崩溃,需要了解自己电脑显卡与之对应的cuda和cudnn。小编是回到了windows10查看的显卡信息。
显卡信息如下:
笔记本中存在集显和独显两块显卡,我们选取cuda时大部分查看的是独立显卡
我们需要的数据是第一行:驱动程序版本: 430.86,记住这个数据,我们根据这个数字挑选对应的cuda版本。这里分享一篇链接:
CUDA、显卡驱动和Tensorflow版本之间的对应关系 (小编选择tensorflow-gpu=1.11.0)
从刚才这篇链接我们可以看到,大部分选择的cuda和cudnn之间的版本选择是:cuda9,cudnn7。
小编使用anaconda自动安装的cuda和cudnn也是这个版本,这说明手动安装选择的版本是正确的。
此外,cuda和cudnn之间没有一一对应的关系,关于这一点,我们需要知道cuda和cudnn到底指的是什么?
什么是CUDA?
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
什么是CUDNN?
NVIDIA cuDNN是用于深度神经网络的GPU加速库(只是一个包)。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如加州大学伯克利分校的流行caffe软件。简单的,插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在GPU上实现高性能现代并行计算。
所以在cuda的基础上,再安装cudann会使得gpu关于神经网络的计算速度更快。
下载完毕后,激活环境,创建py文件,粘贴以下代码,运行成功即可。
"""
测试GPU的计算能力,测试tensorflow-GPU版是否安装正确
"""
import tensorflow as tf
import numpy as np
import time
value = np.random.randn(5000, 1000)
a = tf.constant(value)
b = a * a
c =0
tic = time.time()
with tf.Session() as sess:
for i in range(1000):
sess.run(b)
c+=1
if c%100 == 0:
d = c / 10
# print(d)
print("计算进行%s%%" % d)
toc = time.time()
t_cost = toc - tic
print("测试所用时间%s"%t_cost)
# 小编代码输出如下:
计算进行10.0%
计算进行20.0%
计算进行30.0%
计算进行40.0%
计算进行50.0%
计算进行60.0%
计算进行70.0%
计算进行80.0%
计算进行90.0%
计算进行100.0%
测试所用时间7.980262279510498
# 计算进行10.0% 前面还有一乱七八糟的输出,就不展示了
安装tensorflow-gpu的步骤,这只是小编的一家之言,虽然小编安装成功,但是也许还存在各种的坑,毕竟大家的电脑和小编的电脑配置不同。所以大家还是要广泛的搜索信息,对于同一个问题,多看几篇博客,特别是浏览量很大的博客,不要抱怨自己安装了整整一天还是没有成功,毕竟大家都是这样过来的,加油!!!