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


前言

本章主要操作以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改成int32

ultralytics/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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值