使用GPU训练模型

1.说明

        本地训练模型可以用CPU和GPU,但是GPU的性能比CPU要好得多,所以如果有独立显卡的,尽量还是用GPU来训练模型。
        使用GPU需要安装Cuda和Cudnn

2.安装Cuda

安装cuda之前,首先看一下显卡支持的cuda版本,在命令行输入如下命令:

nvidia-smi

显示如图:

我这里支持的版本是:12.8

进入官网:https://developer.nvidia.com/cuda-toolkit-archive

找到对应的版本:

点击对应的版本,进入网页,选择你的平台,如图:

软件一共3.2G,安装软件之前,确定软件有VC++环境,不然会失败。
我是装了Visual Studio 2019

装了vc++环境之后就可以开始安装cuda,选择自定义安装,如图:

在选择组件的时候,将CUDA中的Nsight VSE和Visual Studio Integration取消勾选,后选择下一步,即可安装成功,如图:

安装完成之后,检查是否安装成功,输入命令:

nvcc -V

3.安装cudnn

下载地址:cuDNN 9.7.1 Downloads | NVIDIA Developer

下载合适自己的版本

如图:

然后浏览器直接输入地址下载:

https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/windows-x86_64/cudnn-windows-x86_64-9.7.1.26_cuda12-archive.zip

 下载完成之后,然后解压,如图:

然后将所有文件拷贝到某个目录,我这里是:D:\program\cuda,然后设置环境变量:

至此,就安装完成。

编写一个测试代码,看看是否支持CPU。
先装依赖:

pip install torch-2.6.0+cu126-cp312-cp312-win_amd64.whl
pip install torchaudio-2.6.0+cu126-cp312-cp312-win_amd64.whl
pip install torchvision-0.21.0+cu126-cp312-cp312-win_amd64.whl
import torch

# 检查torch是否有CUDA支持,即是否能用GPU
print(torch.cuda.is_available())

# 如果CUDA可用,它还会打印出当前默认的CUDA设备(通常是第一个GPU)
if torch.cuda.is_available():
    print(torch.cuda.get_device_name(0))
print(torch.version.cuda)

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(device)

4.创建测试项目

我们使用YOLO机器学习框架来测试,创建一个python项目,然后安装如下依赖:
GPU版本的torch

pip install torch-2.6.0+cu126-cp312-cp312-win_amd64.whl
pip install torchaudio-2.6.0+cu126-cp312-cp312-win_amd64.whl
pip install torchvision-0.21.0+cu126-cp312-cp312-win_amd64.whl

然后安装ultralytics等基础依赖

pip install ultralytics==8.3.75
pip install pandas==2.2.3
pip install matplotlib==3.10.0
pip install opencv-python==4.11.0.86

然后准备训练数据,如图:

然后编写data.yaml配置文件,如图:

然后编写代码:

from ultralytics import YOLO

# coding:utf-8
# 根据实际情况更换基础模型
#yolov8n.pt 轻量化模型,适合嵌入式设备,速度快但精度略低。
#yolov8s.pt 小模型,适合实时任务。
#yolov8m.pt 中等大小模型,兼顾速度和精度。
#yolov8l.pt 大型模型,适合对精度要求高的任务。
#yolov8x.pt

#基础模型
model_path = '../base_model/yolov8s.pt'
data_path = './data.yaml'


if __name__ == '__main__':
    model = YOLO(model_path)
    # 训练模型
    results = model.train(
        data=data_path,
        epochs=500,  # 训练轮数
        batch=64,  # 批次大小
        device='0',  # 使用nvidia-smi查看gpu的序号,使用 GPU 0,如果有多个 GPU 可以使用 '0,1,2,3'
        workers=0,  # 数据加载工作线程数
        project='runs/detect',  # 保存结果的项目目录
        name='fatigue_detection',  # 实验名称
        imgsz=640  # 图像大小
    )
    model.save('best_fatigue_detection.pt')

如图:

5.测试模型

 

torch-gpu

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

落寞书生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值