yolov3的训练cuda和cudnn
Posted 卑微小熊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yolov3的训练cuda和cudnn相关的知识,希望对你有一定的参考价值。
提出的问题
https://ask.csdn.net/questions/7771526
参考的教程
https://blog.csdn.net/zhaoxueqi666/article/details/120333153
##################################
同学们,这个系列的文件不要直接就跟着我操作了,因为这个是踩坑的记录,不是教程,我只是将整个流程记录下来,让后面的同学操作的时候能够避开这些坑,希望你能将整个系列的操作流程看了一遍斟酌后进行操作
##################################
根据在csdn和网上其他大神的指导
初次怀疑是机器的cuda和cudnn的版本过低
所以首先尝试对cuda和cudnn进行升级
其实图片这里反映了另一个重大的问题,只是当时眼挫没注意到,后面注意到了并修复
nvidia-smi
现阶段CUDA的版本是10.2
升级为11.1
进入到官网
https://developer.nvidia.com/cuda-downloads
选择对应的版本,然后选择runfile的下载方式,nvidia会给出命令行的下载方式
如果要选择其他版本的cuda,可以在页面下端选择
然后找到需要的版本,点击进去
执行nvidia给出的安装命令
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run
然后查看nouveau驱动
lsmod | grep nouveau
无输出则代表nouveau没有加载,有的话要禁用nouveau
Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,如果需要用nvidia自己的驱动的话就要先禁止
到下载cuda的位置,然后执行安装脚本
sudo sh cuda_11.1.0_455.23.05_linux.run
中间参考的文件
重装cuda报错“Error installing Cuda toolkit: Existing package manager installation of the driver found”
然后等待一下,可以先尝试直接选择continue,之后安装的时候不在装driver就好,顺利的话也可以直接成功安装,记得之后修改.bashrc文件
然后就是用户许可协议
在终端输入accept同意协议
由于我之前已经安装了Nvidia的显卡驱动,这里不安装driver,那么只需要移动到Driver,按enter键,将"[]"中的X去掉即是不选择.
然后移动到install回车即可
选择升级全部
然后选择yes
稍等片刻后,安装完成
然后添加环境变量
sudo gedit ~/.bashrc
将原本的cuda注释或删除
根据终端的提示,然后添加以下语句
export PATH=$PATH:/usr/local/cuda-11.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.1/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-11.1/lib64
然后刷新环境变量,使其生效
sourec .bashrc
接着查看cuda的版本,可以看到环境变量已经生效
nvcc -V
中途参考的资料
cuda版本nvidia-smi和nvcc -V显示不同
然后查看GPU的使用情况
nvidia-smi
那么cuda安装完成了,接下来就安装cudnn
根据官网,和CUDA11.1配套的是CUDNN8.0.4
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse804-111
进入到下载页面,nvidia要求下载cudnn需要登陆账号
然后查找
点击CUDNN8.0.4,进去有很多的版本
添加链接描述
如果不知道电脑的版本可以查看
uname -a
完成后会下载
由于网络比较卡,所以我是在Win10下载,然后使用filezilla发送过去
中途参考的资料
解压 .solitairetheme8 文件
然后下载的是.solitairetheme8类型的文件,需要转换成tgz然后解压
cd NVIDIA_CUDA-11.1_Samples/
cp cudnn-11.1-linux-x64-v8.0.4.30.solitairetheme8 cudnn-11.1-linux-x64-v8.0.4.30.tgz
tar -xvf cudnn-11.1-linux-x64-v8.0.4.30.tgz
解压之后得到一个cuda文件夹
将解压缩的文件放入对应cuda项目下,但是发现终端报错
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
终端报错,移动到路径,发现文件名称不一样
进行对应的修改,将将解压缩的文件放入对应cuda项目下
sudo cp cuda/include/cudnn.h /usr/local/cuda-11.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.1/lib64/
并设上只读权限
sudo chmod a+r /usr/local/cuda-11.1/include/cudnn.h
sudo chmod a+r /usr/local/cuda-11.1/lib64/libcudnn*
然后为了查看安装的版本号,可以将cudnn_version.h文件放到usr/local/cuda/include目录下
将 /home/heying/NVIDIA_CUDA-11.1_Samples/cuda/include/cudnn_version.h文件移动到/usr/local/cuda-11.1/include/路径下
sudo mv cudnn_version.h /usr/local/cuda-11.1/include
查看版本号,可以看到cudnn版本为8.0.4
cat /usr/local/cuda-11.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
在完成修改后对darknt进行编译
初步怀疑是版本不对应
首先将下载的cudnn的修改文件进行删除
然后重新下载一个
重新移动
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
然后查看版本信息
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
没有输出
sudo cp include/cudnn_version.h /usr/local/cuda/include/
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
流程失败
以上是关于yolov3的训练cuda和cudnn的主要内容,如果未能解决你的问题,请参考以下文章
YOLOv3配置(win10+opencv3.40+cuda9.1+cudnn7.1+vs2015)
Tensorflow 在训练 yolo 时报告了 CUDA_ERROR_ILLEGAL_ADDRESS 错误
Ubuntu系统---安NVIDIA 驱动后 CUDA+cuDNN 安装