yolov8/yolov10 MLU370 实现推理/单多卡训练!

文章目录

  • 前言
  • 一、平台环境配置
  • 二、基础环境配置
    • 1.代码下载
    • 2.环境安装
    • 3.模型下载
    • 4.代码修改
  • 三.单卡推理
  • 四、单/多卡训练


前言

本章主要操作以yolov8为主,但是yolov10用该操作也能直接适用,开干!

一、平台环境配置

镜像选择:v24.06-torch2.3.0-catch1.21.0-ubuntu22.04-py310
驱动版本:HYG-2*370-5.10.29
存储卷记得挂载,已经有很多小伙伴根目录超限环境崩溃

二、基础环境配置

1.代码下载

git clone https://githubfast.com/ultralytics/ultralytics.git
注释ultralytics/pyproject.toml"torch>=1.8.0","torchvision>=0.9.0"
因为我们镜像中本身就自带了torch全家桶,如果不注释会安装torch1.8得最低版本包
之后源码安装该代码

2.环境安装

上述修改完成之后
pip install -e ./ultralytics
torchvision安装【其实就是安装个cpu版本的】
去这里面搜索https://download.pytorch.org/whl/torch_stable.html
torchvision-0.18.0+cpu-cp310-cp310-linux_x86_64.whl
进行本地安装

3.模型下载

yolov8n.pt 
https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8n.pt模拟数据下载
https://ultralytics.com/assets/coco8.zip

4.代码修改

ultralytics/ultralytics/data/utils.py
#他下载速度太慢了还容易超时,有需要的自行下载
注释:
check_font("Arial.ttf" if is_ascii(data["names"]) else "Arial.Unicode.ttf")ultralytics/ultralytics/utils/tal.py
修改151-152行
count_tensor = torch.zeros(metrics.shape, dtype=torch.int8, device=topk_idxs.device)
ones = torch.ones_like(topk_idxs[:, :, :1], dtype=torch.int8, device=topk_idxs.device)
将两行的int8改成int32ultralytics/ultralytics/engine/trainer.py
最上面添加两行代码
import torch_mlu
from torch_mlu.utils.model_transfer import transfer

三.单卡推理

from ultralytics import YOLO
import torch_mlu
from torch_mlu.utils.model_transfer import transfer
# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)
# metrics = model.val()  # evaluate model performance on the validation set
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image
(pytorch) root@notebook-devenviron-0808-143257-13b1tdu-notebook-0:/workspace/volume/guojunceshi2/yolov8/ddd# python dete.py Found https://ultralytics.com/images/bus.jpg locally at bus.jpg
[2024-8-15 23:15:19] [CNNL] [Warning]:[cnnlGetConvolutionForwardAlgorithm] is deprecated and will be removed in the future release. See cnnlFindConvolutionForwardAlgorithm() API for replacement.
[2024-8-15 23:15:19] [CNNL] [Warning]:[cnnlGetNmsWorkspaceSize_v3] is deprecated and will be removed in the future release, please use [cnnlGetNmsWorkspaceSize_v4] instead.
/workspace/volume/guojunceshi2/yolov8/ultralytics/ultralytics/engine/results.py:646: UserWarning: Casting input of dtype int64 to int32, maybe overflow! (Triggered internally at /catch/torch_mlu/csrc/aten/utils/cnnl_util.cpp:117.)n = (boxes.cls == c).sum()  # detections per class
image 1/1 /workspace/volume/guojunceshi2/yolov8/ddd/bus.jpg: 640x480 4 persons, 1 bus, 1 stop sign, 11.7ms
Speed: 3.1ms preprocess, 11.7ms inference, 3.8ms postprocess per image at shape (1, 3, 640, 480)
/opt/py3.10/lib/python3.10/tempfile.py:860: ResourceWarning: Implicitly cleaning up <TemporaryDirectory '/tmp/tmprq9rc0fi'>_warnings.warn(warn_message, ResourceWarning)

是不是就添加两行代码就跑通了,真的很方便

四、单/多卡训练

from ultralytics import YOLO
import torch_mlu
from torch_mlu.utils.model_transfer import transfer
# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)# Use the model
model.train(data="coco8.yaml", epochs=3)  # train the model
metrics = model.val()  # evaluate model performance on the validation set
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

在这里插入图片描述
单卡成功训练

from ultralytics import YOLO
import torch_mlu
from torch_mlu.utils.model_transfer import transfer
# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)# Use the model
model.train(data="coco8.yaml", epochs=100,device=[0,1])  # train the model
metrics = model.val()  # evaluate model performance on the validation set
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image
# path = model.export(format="onnx")  # export the model to ONNX format

在这里插入图片描述
多卡成功训练

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/401462.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python Django 框架 01

1. 以新闻内容为主的网站-Django。CMS 查看django官方网站。查看django源码。查看中文文档。对于Django框架遵循MVC设计&#xff0c;并且有个专用名字&#xff1a;MVT。 model 只适用于关系型数据库。 建议使用谷歌浏览器。 Django环境配置 python 环境 因为Django是需要Py…

Leetcode每日刷题之面试题01.02判断是否互为字符重排(C++)

1. 题目解析 本题判断的是两个字符串&#xff0c;其中一个字符串变换顺序是否可以变化为第二个字符串&#xff0c;即重排后是否为同一字符串 2. 算法原理 这里我的思路是直接统计两字符串中字符出现的次数&#xff0c;然后直接比较即可&#xff0c;我使用了范围for以及字符ASCI…

【系统架构设计】系统性能评价

【系统架构设计】系统性能评价 性能指标对计算机对网络对操作系统对数据库管理系统对Web服务器 性能计算MIPS(百万条指令/秒)计算方法峰值计算等效指令速度 性能设计性能评估 性能指标 对计算机 时钟频率&#xff08;主频&#xff09; 指计算机处理器的时钟频率&#xff0c;…

2024 D^3CTF pwn(d3note write_flag_where D3BabyEscape pwnshell)

文章目录 d3note libc 2.37源码exp write_flag_where glibc 2.38源码改scanf利用 改write D3BabyEscape源码exp pwnshellphp堆源码exp d3note libc 2.37 源码 index越界&#xff0c;show也没有检查&#xff0c;直接打印&#xff0c;这里找到got表&#xff0c;直接开搜就行 然后…

asp.net core 调用wps实现word转pdf

安装wps https://www.wps.cn/ 创建.net core控制项目 添加com引用&#xff0c;搜索wps 准备word&#xff0c;名字叫001.docx word转pdf 编写代码 namespace WPSStu01 {internal class Program{static void Main(string[] args){Console.WriteLine("转化开始&q…

日撸Java三百行(day24:二叉树的建立)

目录 一、分析准备 二、代码实现 1.方法创建 2.数据测试 3.完整的程序代码 总结 一、分析准备 在日撸Java三百行&#xff08;day22&#xff1a;二叉树的存储&#xff09;中&#xff0c;我们学习的是如何将链表二叉树转换为顺序表二叉树进行存储&#xff0c;而今天我们要…

一套完整的NVR方案与部分NVR录像机GUI源码剖析

一、部分功能展示 1.1 通道管理部分 在NVR系统中&#xff0c;通道管理是核心功能之一。通过通道管理&#xff0c;用户可以对连接的摄像头进行配置和监控。 通道连接使能&#xff1a;用户可以选择开启或关闭特定通道的连接功能&#xff0c;以实现灵活的设备管理。 时间同步&…

Kali Linux 三种网络攻击方法总结(DDoS、CC 和 ARP 欺骗)

一、引言 在当今数字化的时代&#xff0c;网络安全成为了至关重要的议题。了解网络攻击的方法和原理不仅有助于我们增强防范意识&#xff0c;更是网络安全领域专业人员必备的知识。Kali Linux 作为一款专为网络安全专业人员和爱好者设计的操作系统&#xff0c;提供了丰富的工具…

VideoPlayer插件的用法

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容&#xff0c;本章回中将介绍如何播放视频.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…

Windows11下wsl闪退的解决

wsl闪退 1. 原因分析 解释&#xff1a;WSL&#xff08;Windows Subsystem for Linux&#xff09;闪退通常指的是在Windows操作系统中运行的Linux环境突然关闭。这可能是由于多种原因造成的&#xff0c;包括系统资源不足、WSL配置问题、兼容性问题或者是Linux内核的问题。&…

【Python学习-UI界面】PyQt5 小部件13-Slider 拖动条

高级布局管理器&#xff0c;允许通过拖动边界来动态改变子小部件的大小。 Splitter控件提供一个手柄&#xff0c;可以拖动以调整控件的大小 样式如下: 常用方法如下&#xff1a; 序号方法描述1addWidget将小部件添加到拆分器的布局中2indexOf返回布局中小部件的索引3insetW…

MySQL架构与数据库基础

文章目录 一、数据库概念二、数据库的简单概念三、SQL四、MySQL架构 一、数据库概念 数据库是一个以某种由组织的方式存储的数据集合。我们可以把数据库想象称为一个文件柜。此文件柜是一个存放数据的物理位置&#xff0c;不管数据是什么以及如何组织的。数据库本质也需要像文…

EMC学习笔记2——电磁兼容问题分析

分析一个电磁兼容问题一般从三方面入手&#xff0c;分别是骚扰源、敏感源、耦合路径。解决掉其中一个问题&#xff0c;就能解决大部分的电磁兼容问题。 例如&#xff1a;当骚扰源是雷电时&#xff0c;敏感源是电子线路时&#xff0c;我们需要消除的就是耦合电路。 耦合路径就是…

LLM - 微调(Fine-Tuning) Llama3 以及合并微调模型 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/141218047 在微调 Llama3 大模型时&#xff0c;需要注意一些事项&#xff1a; 合适的预训练模型&#xff1a;不同的预训练模型具有不同的特点和适…

Java 操作 Redis和redis持久化

一、Jedis 我们要使用 Java 来操作 Redis&#xff0c;Jedis 是 Redis 官方推荐的 java连接开发工具&#xff01; 使用Java 操作 Redis 中间件&#xff01; 1.导入对应的依赖 https://mvnrepository.com/artifact/redis.clients/jedis <dependency><groupId>redi…

Keycloak中授权的实现-转载

在Keycloak中实现授权&#xff0c;首先需要了解与授权相关的一些概念。授权&#xff0c;简单地说就是某个&#xff08;些&#xff09;用户或者某个&#xff08;些&#xff09;用户组&#xff08;Policy&#xff09;&#xff0c;是否具有对某个资源&#xff08;Resource&#xf…

CAN总线详解-理论知识部分

目录 CAN总线简介 CAN总线硬件电路 CAN电平标准 CAN收发器 ​编辑 CAN物理层特性 CAN总线帧格式 数据帧 数据帧格式 数据帧发展历史 遥控帧 错误帧 过载帧 帧间隔 位填充 波形实例 CAN总线接收方数据采样 接收方数据采样遇到的问题 位时序 硬同步 再同步 波…

Cesium.js:webGIS领域的翘楚,开源全球地理空间数据可视化框架.

说起数据可视化/数字孪生开发&#xff0c;少不了webGIS&#xff0c;聊起webGIS不得不提大名鼎鼎的Cesium.js框架。 CesiumJS是一个用于创建地理空间应用程序的开源JavaScript库。它提供了丰富的地图和地理空间数据的可视化功能&#xff0c;可以用于构建基于地理位置的3D地图、…

nvm介绍、下载、安装、配置及使用

一、背景 在工作中&#xff0c;我们可能同时在进行2个或者多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;进而不同项目必须依赖不同版本的NodeJS运行环境&#xff0c;这种情况下&#xff0c;对于维护多个版本的node将会是一件非常麻烦的事情&#xff0c;nvm就…

go语言源码解读之数据结构堆

概述 堆(heap)&#xff0c;是一种计算中常用的数据结构。本文我们将探讨对的特性、实现细节以及实际应用场景。 基本概念 堆是一种特殊的完全二叉树。堆分为大顶堆与小顶堆。 大顶堆的特点是&#xff0c;父节点的值总是大于或等于其子节点的值。 小顶堆的特点是&#xff0c…