苦水
当我发现AMD显卡没法给yolov5模型加速的时候,我训练一个模型要15天的时候,我原地爆炸,还好我不是一个轻易放弃的人,费尽心力的找到一个稍微优秀点的法子。提前说明可能会花点小钱,10块到20块左右,但是速度要比用CPU炼丹好的多。不多说直接开整
一、Pytorch与“Windows系统和AMD显卡”的爱恨情仇
既然大家能通过网上的内容找到Yolov5的几个关键词Pytorch,操作系统,GPU(显卡内的部件)从而跳转到我这篇文章一定是废了些苦功的了解了一些梗概的。所有我就简单的概括一下为什么windows系统的AMD显卡训练Yolov5这么困难。
Yolov?(这个系列比较多后面的数字我就用?来代替,后面主讲Yolov5我就直接用Yolov5)这个系列是基于Pytorch这个第三方库开发的,要使用yYolov5,就没办法绕开Pytorch,悲催的来了看下图 :
我来解释一下第一行是Pytorch的版本类型稳定版(Stable)和夜间版(Preview (Nightly)),第二行是指操作系统,第三行是指环境,第四行指的是语言,第四行就是指代你的显卡类型。
CUDA系列需要的NVDIA的显卡就是硬件上的,也就是说电脑显卡是AMD就无法使用,ROCm是AMD显卡的补丁让AMD用户也能训练模型,但是很显然对Windows用户很不友好。可供选择的就是CPU炼丹,但是这个耗时不是一般的长。
当然如果后续可以更新Windows的Rocm咱们就可以在自己电脑上炼丹了,关注我后续更新的话,我再出一个新教程
二、柳暗花明又一村
上面的讲述就已经很明显了,我们在Windows系统AMD显卡的电脑上炼丹耗时很久,但是我们可以在别人电脑上炼丹,不是说去抢一台电脑,而是我们可以去租云服务器😏,这就是我所说可能要花点小钱的原因。
下面是我找到能按小时租的一个平台:AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL
一个小时1块钱到2块钱
开搞
租借的服务器可以直接设置环境十分的方便,设置步骤如下:
点击立即创建创建完成
登录指令复制后长这样:ssh -p 20404 root@connect.cqa1.seetacloud.com
这里我们的端口号:20404
主机号:connect.cqa1.seetacloud.com
用户名:root
密码:直接复制即可
租界好服务器登录之后,第一步先进入数据盘中,启动Minconda,并验证是否安装成功。(前在租借服务器的时候就已经创建好了环境,我们只需要激活就可以了)
cd /root/autodl-tmp
source ~/miniconda3/bin/activate
conda --version
创建python环境
conda create -n yolov5 python=3.8
启动环境
conda activate yolov5
安装PyTorch
注意:这里可以根据官网来选择自己适合的版本:Start Locally | PyTorch
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
获取Yolov5项目,并且进入项目
git clone https://gitcode.com/gh_mirrors/yo/yolov5.git
cd yolov5
更新pip,安装yolov5对应版本的第三方库
pip3 install --upgrade pip
pip install --default-timeout=300 -r requirements.txt
获取yolov5s.pt模型权重
wget https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt
测试是否成功
python detect.py
出现上面的内容就算是成功了,可以开始训练自己的模型
上传我们的数据集,为了方便这里使用WinSCP来传输数据,很简单只需要在左侧的本地找到要传输的文件,拖动在右侧服务器的/root/autodl-tmp/yolov5(你的项目路径)
WinSCP的下载地址:WinSCP :: Official Site :: Download
配置.yaml文件
上面这张图片是我在pycharm上创建的.yaml文件然后再上传到服务器,当然你也可以直接
vim dataset.yaml
i进入编辑模式编写图片里的内容注意要换成自己的数据集路径,和相关内容,完成后:wq保存退出
开始模型训练
python train.py --img 640 --batch 16 --epochs 300 --data dataset.yaml --weights yolov5s.pt
我的数据集比较庞大有2.3G,一轮3分钟左右,一共100轮,预测时间在5个小时以内,最终用时4个小时,这个速度我很满意,因为我自己的电脑训练预测时间要15天,嗯十五天......
ok,希望大家都能训练好自己的模型,拜拜~