Ubuntu18.04+RTX3060+TensorFlow2.12.0(GPU版)+Cuda11.1+CuDNN8.6.0安装

前情提要 可以跳过

我在Ubuntu18.04上安装了pytorch的相关环境,配置如图。

Ubuntu18.04+RTX3060显卡配置pytorch、cuda、cudnn和miniconda_Toblerone_Wind的博客-CSDN博客之前已经安装成功了,也发了篇博客梳理了整套流程如下。ubuntu18.04安装pytorch、cuda、cudnn和miniconda_Toblerone_Wind的博客-CSDN博客_ubuntu18.04安装pytorchhttps但后续发现tensor变量不能转移到cuda上,即执行下面的语句会卡死。卡死也没报错信息,后来调试了很久发现是原先的cuda10.2版本太低了,不持支我的3060显卡。装了cuda11.4发现又没有对应的pytorch,导致cuda无法和torch正常通讯。.........https://blog.csdn.net/qq_42276781/article/details/125523817这个环境跑pytorhc代码没有什么问题,但是最近我要复现一个基于Keras的论文方法。Keras是一个基于TensorFlow的深度学习框架,可以用简单的四五行代码构建一个深度学习模型。

下面给出了一个示例,创建了一个序列模型,接着向里面添加了嵌入层,LSTM层,全剧最大池化层和全连接层,最后设置模型的损失函数和优化方法。

from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Embedding, Dense, GlobalMaxPooling1D, LSTM
def create_model(input_dim, input_length, latent_dim, drop_prob):
    model = Sequential()
    model.add(Embedding(input_dim=input_dim, output_dim=latent_dim, input_length=input_length))
    model.add(LSTM(units=latent_dim, return_sequences=True, dropout=drop_prob, recurrent_dropout=drop_prob))
    model.add(GlobalMaxPooling1D())
    model.add(Dense(units=1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model

由于Ubuntu18.04是安装的是Cuda11.1,我就在Miniconda下创建了一个Python3.6的虚拟环境,使用下面的命令安装了适配的tensorflow。

pip install tensorflow_gpu=2.5.0

安装完成之后,我运行代码确实可以使用GPU加速,但是我切换成纯CPU版的Tensorflow运行时,发现速度是GPU版本的3倍。查阅了相关资料,发现是LSTM的效率太低导致的,众所周知LSTM是长短期记忆模型,当前时刻的状态会受到上一时刻状态的影响,这就导致必须计算完成上一时刻的状态,才能计算这一时刻的状态,也就是说LSTM是顺序执行的,GPU的并行加速在这里并不能体现优势,而GPU的顺序计算是弱于CPU的,至少在我的机器上(i9-10850k和RTX3060)。

解决的办法也是有的,可以使用CuDNNLSTM替换普通的LSTM,CuDNNLSTM借助CuDNN对LSTM的运算进行了加速,可以极大提升效率(我理解的是利用矩阵乘法在损失小部分精度的情况下,进行并行运算)

修改后代码如下

from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Embedding, Dense, GlobalMaxPooling1D, CuDNNLSTM
def create_model(input_dim, input_length, latent_dim, drop_prob):
    model = Sequential()
    model.add(Embedding(input_dim=input_dim, output_dim=latent_dim, input_length=input_length))
    model.add(CuDNNLSTM(units=latent_dim, return_sequences=True))
    model.add(GlobalMaxPooling1D())
    model.add(Dense(units=1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model

但是运行的时候却报错了,说我系统中的CuDNN版本是8.0.5,keras使用的CuDNNLSTM需要8.1.0。于是卸载了系统中的CuDNN8.0.5,安装了支持Cuda11.1的CuDNN8.1.0,虽然这次没有报错说CuDNN版本不一致,但是报了一个CuDNN和Cuda不协同的错误,我明明找到是相适配的CuDNN啊!重启了也没有解决不适配的问题。

鉴于现在Cuda和CuDNN并不适配,我切换回了原有的Pytorch虚拟环境,测试代码发现可以正常运行。这说明一般情况下,Cuda和CuDNN并不一定需要适配,除非你的代码需要使用CuDNN。

言归正传,之后我就不停的安装CuDNN,不停的安装TensorFlow,企图让CuDNN,TensorFlow和Cuda三者完美统一。但都失败了。直到我福至心灵地创建了一个python3.8的虚拟环境,在里面使用这个命令安装Tensorflow时,Pip报错,说不需要添加后缀gpu。

pip install tensorflow_gpu=2.5.0

于是我就直接使用了下面这个命令,Pip自动给我安装了tensorflow-2.12.0

pip install tensorflow

运行代码,提示我tensorflow支持的CuDNN是8.6.0,而我系统中CuDNN的是8.0.5。

我选择了适配Cuda11.x的CuDNN 8.6.0

TensorFlow 1.12.0

python版本是3.8,使用下面的命令安装

pip install tensorflow=2.12.0

虽然可以使用清华镜像,但是下载一会之后开始会断开,推荐使用专门的下载器,下载链接在此

下载完成之后进入文件所在目录,使用下面的命令就可以直接安装

pip install tensorflow-2.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Cuda 11.1

见我的这篇博客

Ubuntu18.04+RTX3060显卡配置pytorch、cuda、cudnn和miniconda_Toblerone_Wind的博客-CSDN博客之前已经安装成功了,也发了篇博客梳理了整套流程如下。ubuntu18.04安装pytorch、cuda、cudnn和miniconda_Toblerone_Wind的博客-CSDN博客_ubuntu18.04安装pytorchhttps但后续发现tensor变量不能转移到cuda上,即执行下面的语句会卡死。卡死也没报错信息,后来调试了很久发现是原先的cuda10.2版本太低了,不持支我的3060显卡。装了cuda11.4发现又没有对应的pytorch,导致cuda无法和torch正常通讯。.........https://blog.csdn.net/qq_42276781/article/details/125523817

CuDNN 6.5.0

下载链接在此如果不能下载可能是要注册账号,网页放在这里

nullExplore and download past releases from cuDNN GPU-accelerated primitive library for deep neural networks.https://developer.nvidia.com/rdp/cudnn-archive下载完成后需要安装,这里我找到了官方的安装文档

Installation Guide - NVIDIA Docshttps://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

但是他提供的有点问题,567步的指令缺少了安装文件后缀.deb,sudo apt-get update好像也没有必要。

这里就提供一个我的安装步骤

首先是进入cudnn-local-repo-ubuntu1804-8.6.0.163_1.0-1_amd64.deb文件所在的目录,打开命令行输入下面的指令

sudo dpkg -i cudnn-local-repo-ubuntu1804-8.6.0.163_1.0-1_amd64.deb

接着移动CUDA的GPG钥匙

sudo cp /var/cudnn-local-repo-ubuntu1804-8.6.0.163/cudnn-local-77B32ECB-keyring.gpg /usr/share/keyrings/

接着进入/var目录

cd /var

输出该目录的所有文件

ls

会发现有一个叫cudnn-local-repo-ubuntu1804-8.6.0.163的文件夹,进入

cd cudnn-local-repo-ubuntu1804-8.6.0.163/

输出该目录的所有文件

ls

会发现libcudnn8_8.6.0.163-1+cuda11.8_amd64.deb,libcudnn8-dev_8.6.0.163-1+cuda11.8_amd64.deb和libcudnn8-samples_8.6.0.163-1+cuda11.8_amd64.deb

这时候依次执行下面三个安装命令

sudo dpkg -i libcudnn8_8.6.0.163-1+cuda11.8_amd64.deb 
sudo dpkg -i libcudnn8-dev_8.6.0.163-1+cuda11.8_amd64.deb 
sudo dpkg -i libcudnn8-samples_8.6.0.163-1+cuda11.8_amd64.deb 

顺便提一下Cudnn的卸载方法

首先显示安装的CuDNN

sudo dpkg -l | grep cudnn

再根据显示的名字卸载,如

dpkg -r cudnn-local-repo-ubuntu1804-8.6.0.163

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
好的,下面是安装步骤: 1. 安装CUDA 8.0 首先,你需要下载CUDA 8.0安装包,可以在官网上下载或者使用以下命令: ``` wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run ``` 下载完成后,运行以下命令进行安装: ``` sudo sh cuda_8.0.61_375.26_linux-run ``` 安装过程中需要你进行一些选择,可以按照默认选项进行。 安装完成后,在`~/.bashrc`文件中添加以下环境变量: ``` export PATH=/usr/local/cuda-8.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH ``` 然后运行以下命令使配置生效: ``` source ~/.bashrc ``` 2. 安装cuDNN cuDNN是NVIDIA提供的深度学习库,可以加速深度学习的训练和推理过程。你需要先在官网上注册一个账号,然后才能下载cuDNN。 下载完成后,解压文件并将文件复制到CUDA安装路径下: ``` tar -xzvf cudnn-8.0-linux-x64-v6.0.tgz sudo cp -P cuda/include/cudnn.h /usr/local/cuda-8.0/include sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64/ sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn* ``` 3. 安装TensorFlow 最后,你可以使用pip安装TensorFlow: ``` pip install tensorflow-gpu==1.3 ``` 如果你想使用CPU本的TensorFlow,可以使用以下命令: ``` pip install tensorflow==1.3 ``` 安装完成后,你可以测试一下TensorFlow是否正常工作: ``` python import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() print(sess.run(hello)) ``` 如果输出了`Hello, TensorFlow!`,那么TensorFlow安装成功了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Toblerone_Wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值