当前位置: 首页 > news >正文

使用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

相关文章:

  • js数据类型检测
  • Linux 常见面试题汇总
  • Baklib一站式企业知识库搭建指南
  • Deepseek首页实现 HTML
  • 连接Sql Server时报错无法通过使用安全套接字层加密与 SQL Server 建立安全连接
  • 通俗易懂的浏览器事件循环指南(含async/await)
  • Linux提权之计划任务反弹shell提权(十一)
  • 【Viewer.js】vue3封装图片查看器
  • 【时时三省】(C语言基础)结构化程序设计方法
  • 二:前端发送POST请求,后端获取数据
  • Java并发 ThreadLocal 原理(详解)
  • c++中,什么时候应该使用mutable关键字?
  • Bash Shell控制台终端命令合集
  • C语言番外篇(3)------------>break、continue
  • 论文笔记:Autonomy-of-Experts Model
  • watchEffect 里有响应式依赖时并没有自动追踪
  • C++关键字之mutable
  • Tesseract OCR:起源、发展与完整使用指南
  • 多线程篇学习面试
  • 请谈谈 Vue 中的 key 属性的重要性,如何确保列表项的唯一标识?
  • 玉渊谭天丨是自保还是自残?八个恶果透视美国征收100%电影关税
  • 谢承祥已任自然资源部总工程师
  • 9金收官!跳水世界杯总决赛朱子锋、程子龙包揽男子10米台冠亚军
  • 跳水世界杯总决赛陈佳获得女子3米板冠军,陈艺文获得亚军
  • 少数人的奢侈品还是所有人的必需品:我们如何解构创造力?
  • 澳大利亚大选今日投票:聚焦生活成本与“特朗普问题”