YOLOv5适配昇腾开源验证任务心得

举报
yd_234131603 发表于 2024/11/15 12:45:00 2024/11/15
【摘要】 首先查看任务计划书:https://bbs.huaweicloud.com/blogs/439491,主要目的是将YOLOv5项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保其在这些硬件平台上的高效运行,即验证qwen2能不能在 Ascend(昇腾)、Kunpeng(鲲鹏)处理器和Euler操作系统中运行。验证过程明确目的后开始熟悉项目,YOLOv5 v6.0的g...

首先查看任务计划书:https://bbs.huaweicloud.com/blogs/439491主要目的是将YOLOv5项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保其在这些硬件平台上的高效运行,即验证qwen2能不能在 Ascend(昇腾)、Kunpeng(鲲鹏)处理器和Euler操作系统中运行。

验证过程

明确目的后开始熟悉项目,YOLOv5 v6.0gitee网址:https://gitee.com/ascend/modelzoo-GPL/tree/master/built-in/PyTorch/Official/cv/object_detection/Yolov5_for_PyTorch_v6.0

安装依赖包

首先我使用Ascend CANN Toolkit版本为7.0.1.5:

我们要安装对应的pytorchtorch_npu插件,这里我们要注意到操作系统是aarch64架构,找到合适的版本进行下载安装。

以下是安装pytorch的示例命令:

wget https://download.pytorch.org/whl/torch-1.11.0-cp38-cp38-manylinux2014_aarch64.whl
pip3 install torch-1.11.0-cp38-cp38-manylinux2014_aarch64.whl

然后按照项目的要求安装对应的requirement.txt。

但按照requirement.txt安装相关文档会导致代码运行时报错,numpy版本建议安装1.23系列的版本,安装最新版本会导致兼容性问题。

    资源清单

产品名称

NPU架构

CPU架构

操作系统

云堡垒机

Ascend 910B3

 

鲲鹏计算

Kunpeng-920

Huawei Cloud EulerOS 2.0 (aarch64)


    测试结果

Npu推理

项目地址的推理脚本用起来容易出问题,然后我自己写了一个推理脚本,详见demo仓库:

使用如下命令进行推理

python detect_npu.py --weights yolov5.pt --source ./zidane.jpg --device npu --save-img --save-dir ./ --custom-name "detection_result"

这是要推理的图片以及推理的结果图片

zidane.jpg

zidane3.jpg


心得体会

  • 设备选择统一化
    在代码中,将设备选择从 cuda 替换为 npu,并通过 torch.device 实现设备动态适配。统一使用 to(device) 的方式将模型和数据迁移到设备,确保代码可以无缝兼容 CPU 和 NPU,方便调试和部署。

  • 推荐依赖版本
    为了确保代码的兼容性和算子支持,建议安装 numpy 的 1.23 系列版本。此版本对 PyTorch 和 torch_npu 的兼容性较好,可以避免在算子操作中出现不必要的兼容性问题。

  • 安装 APEX 模块支持混合精度训练
    混合精度训练是在训练时结合使用单精度(float32)与半精度(float16)数据类型,并保持相同的超参数以实现接近 float32 的精度。推荐安装 NVIDIA 的 APEX 模块进行混合精度训练,能显著加速训练过程,同时降低显存占用。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。