写在前面的话
why: 在复现不同yolo版本时,是否会出现不兼容的pytorch,cuda版本。
例如:
-
yolov8中Python=3.8.0 CUDA = 11.6.0 PyTorch=1.13.0
-
yolov5中Python=3.6.0 CUDA = 11.0.0 PyTorch=1.7.1
what: 如上述例子所呈现的那样,这时候你yolov5搭配的环境就和v8的不适配,你就要重新配环境以便运行v8。而本文要解决的就是这个问题,如何在一个电脑中安装多个环境,根据不同的模型运用不同的环境。先说结论:创建虚拟环境,将不同模型所需要的环境隔离开来,针对本文的例子就是将v8和v5环境隔离开。
一. 创建系统环境(已有系统环境的可以跳过这一步)
什么是系统环境:之前已经根据电脑配置,安装过CUDA,cuDNN,python,pytorch
如何安装系统环境:参考博文
结果显示:本博文以yolov8的环境为系统环境配置
二. 创建新的虚拟环境(本例是安装v5的环境)
步骤:
-
创建虚拟环境和对应的python环境
-
激活虚拟环境,在虚拟环境中下载对应的pytorch和cuda环境。下载pytorch的命令行会附带下载配套的cuda。
-
在配置环境中可能遇到的问题
1. 创建虚拟环境和对应的python环境
在anaconda中创建yolov5的虚拟环境
conda create -n yolov5 python=3.6`
2. 激活虚拟环境,在虚拟环境中下载对应的pytorch和cuda环境。下载pytorch的命令行会附带下载配套的cuda
2.1 激活环境:
conda activate yolov5
2.2 去pytorch官网找到对应版本的pytorch安装代码 官网地址
2.3 激活环境后运行这段代码
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
ps:
- 这段代码在执行时,下载pytorch的命令行同时会附带下载配套的cuda和cudnn
- 这里会出现一个问题,就是下载速度太慢问题(解决办法)
2.4 验证环境
等待2.3下载好后,我们可以激活虚拟环境看是否配置完成。
conda activate yolov5
# 执行这段代码要进入python中!
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.version.cuda)
print(f'cuDNN版本: {torch.backends.cudnn.version()}')
如果配置成功则会出现下图显示
三. 配置环境中常见问题
3.1 用pip方式安装pytorch速度慢问题:
解决办法:
例如: pip install torch1.13.0+cu116 torchvision0.14.0+cu116 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu116
获取新下载地址,如图 https://download.pytorch.org/whl/cu116/torch-1.13.0%2Bcu116-cp38-cp38-win_amd64.whl,放在迅雷或者谷歌浏览器中下载速度可以加倍(实测迅雷更快)
下载好后打开cmd切换到文件下载目录,进行以下操作(同样要激活conda环境)
1. pip install torch-1.13.0+cu116-cp38-cp38-win_amd64.whl
2. pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu116
# 这一步不能省 虽然说cuda和cudnn环境都安装好了,但是程序运行配套的其他包是要经过这一步才能完善的!否则自己就要安装很多东西
3.2 tensorboard 无法使用的问题:
详细描述:无法将**“tensorboard”**项识别为 cmdlet、函数、脚本文件或可运行程序的名称 的问题
- 先查看虚拟环境中有没有tensorboard
2. 查看tensorboard.exe的位置
- 激活要进入的虚拟环境,我这里是yolov3spp,你们根据需求来
- 通过输入pip uninstall tensorboard指令获取tensorboard.exe存放位置,如黄框所示
3. 将tensorboard.exe路径添加到环境变量中的path路径中
经过上述三步就可以解决了
3.3 页面文件太小,无法完成操作问题
详细描述:cv2.error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\core\src\alloc.cpp:73: error: (-4:Insufficient memory) Failed to allocate 1324800 bytes in function 'cv::OutOfMemoryError’,“OSError: [WinError 1455]页面文件太小,无法完成操作”问题
解决办法:将虚拟内存调大
- 点击高级系统设置-高级-设置
3. 自定义大小那里要注意两个地方,初始大小和最大值都得小于可用空间(图上是123093MB),我的内存是16GB转换为MB就是(16 * 1024 * 8 )MB。我这里的初始大小和最大值是看我运行软件时占用内存修改的,你们也可以通过查看任务管理器,软件调用内存来具体设置。
- 修改完设置后,会提醒你重启电脑,重启后即可
3.4. 常见问题4
换项目能接受的最高的pytorch环境,cuda也和项目要求的是同一个系列,找到对应下载pytorch并附带cuda环境的下载路径。
例如:这个项目原作者配置的环境是python=3.6,pytorch=1.2.0,cuda=10.0;而pytorch=1.2.0没有附带cuda为10版本的下载,如下图所示
然后我去找项目的readme文件,作者说改项目支持pytorch1.7.1版本,所以我就去pytorch官网找了对应的下载路径,发现pytorch=1.7.1版本下载路径自带了cuda10版本的环境,所以我就将虚拟环境的配置改成python=3.6,pytorch=1.7.1,cuda为10.1
3.4 cuda版本和显卡版本不匹配问题
- 问题描述:NVIDIA GeForce RTX 3060 with CUDA capability sm_86 is not compatible with the current PyTorch installation.
- 背景:我最近显卡升级,从RTX1660换成了RTX3060;原先用1660跑的v5模型在3060上就出现了上述问题。
- 原因分析: 高版本的RTX3060不能支持低版本的cuda10.0 。我一开始yolov5的环境配置的是pytorch-1.7.1+cuda10.1-python3.6。
- 解决方案:重新配置虚拟环境。
详细步骤我就不再叙述了,我拿我的例子来简单说一下。我把原先的v5环境换成了pytorch-1.7.1+cuda11.0-python3.6就可以跑了。核心步骤就是换pytorch配套的cuda,如下图所示