栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用MindStudio进行Pytorch模型迁移和离线推理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用MindStudio进行Pytorch模型迁移和离线推理

1. MindStudio环境搭建

    MindStudio是一套基于IntelliJ框架的开发工具链平台,提供了应用开发,调试,Profiling工具,模型转换,模型可视化等功能,以及对开发者来说至关重要的精度对比,自定义算子等重要功能,同时还提供了网络移植,优化和分析功能,方便用户开发应用程序。

    按照平台安装教程安装MindStudio即可完成本部分的环境搭建。

2.模型简介

    本次实验我们的目标是在MindStudio上使用ResNet进行图像分类任务。ResNet曾在ILSVRC2015比赛中获得冠军,在图像分类上具有很大的潜力。ResNet的主要思想是在网络中增加了直连通道,使得原始输入信息能够直接传入到后面的层中,ResNet的结构如下图所示。

ResNet会将残差块串联,形成多层网络。一般常见的ResNet根据层数的大小有ResNet-18, ResNet-34, ResNet-50, ResNet-101等。

3. 创建推理工程

    打开MindStudio,点击New Project,进入新建工程界面。选择Ascend App。填入项目名resNext101_32x8d。首次新建训练工程时,需要配置CANN的版本。点击Change。

点击 + 配置远程连接,然后根据选项填入自己服务器的IP地址、端口号、用户名和密码等。

配置Remote CANN location。该参数需要填入ascend-toolkit在服务器上的路径地址。在这里,我们的toolkit路径如下

/usr/local/Ascend/ascend-toolkit/5.1.RC1。点击finishing进行配置。

点击Next,选择Pytorch Project。

点击Finish,完成工程创建,进入工程主界面。

4. 将环境部署到远端

Mind Studio可以支持实时的将本地文件夹内容同步到服务器,可以达到像自己电脑上执行模型推理一样的效果,此过程需要两个步骤。点击File->Settings->Tools,即可看到两个设置的入口。

  •  配置ssh

                首先点击SSH Configuration,再点击 + 配置远程连接,然后根据选项填入自己的服务器ip地址,端口号,用户名和密码。

  • 部署本地文件夹

        相当于将远端服务器的路径与本地文件夹形成一个对应关系。Deployment配置能够更精准地连接远程服务,他需要选择一个SSH连接来定位远程主机,然后设置本地与远程项目目录的对应关系。首先选择连接哪SSH服务,然后测试连接是否可用。

下一步,设置项目目录映射关系,点击Mappings,然后选择本地的项目目录和远程的项目目录(最好提前创建文件夹),接下来跑代码的时候MindStudio会保证这两个目录文件的同步。

配置好Mappings之后,建议配置Excluded Paths, 因为MindStudio默认行为会把Mappings目录的文件保持完全相同,这意味着只存在于远端服务器的数据集文件会被删除(如果本地没有数据集)。再次,我配置了几个需要排除的文件夹目录。

5. 配置Python环境

    点击File -> Project Structures -> SDKs可以看到如图所示的界面。点击+号,可以新增python SDK和JDK。

    点击Add Python SDK后,将弹出下图所示界面,点击左侧的SSH Interpreter,如下图所示,首先选择使用哪一个Deployment,这是刚刚我们配置过的。然后选择python解释器的路径。图中的路径是MindStudio自动检测出来的,但一般需要我们找自己的Python环境安装目录。

然后点击Project,选择刚才添加到MindStudio中的Python解释器,将其作为本项目所使用的解释器。

6. 数据预处理

   首先执行数据预处理脚本image_torch_preprocess.py, 将原生的图片数据转换为bin格式的输入文件。

第一个参数为原始数据集(.jpeg)所在路径,第二个参数为输出的二进制文件(.bin)所在的路径。每个图片对应生成一个二进制文件。在预处理获得bin文件之后,再执行get_info.py提取输入信息。

7. 模型转换

    模型转换主要分为两步,第一步是将原有的pth模型转换为通用的onnx模型,第二步是将onnx模型转换为npu适用的om模型。

    首先调用python脚本将pth模型转换为onnx模型。

再使用ATC工具将onnx模型导出为om模型。MindStudio提供了atc工具的窗口化应用,他会根据用户选择自动生成atc指令。Model Converter的入口如图所示。

 

选择onnx路径,模型输出名称,目标设备,输入格式和batchsize等信息。

本实验需要跑到不同的batchsize,这里只需要修改shape参数即可对应生成不同batch size的om模型。MindStudio自动生成如下atc指令,用户可以在此做最后的校验,点击Finish即可开始进行模型转换。

转换成功得到结果如下:

8. 离线推理

    使用benchmark工具进行离线推理,可以创建如图所示的应用:点击 + 号,再点击Ascend App,

按照自己的模型相关信息进行填写即可。

在不同机器上执行效率对比如下表格

Model

Batch Size

310p

310 (FPS/Card)

T4 (FPS/Card)

310p/310

310p/T4

ResNeXt101

1

594.884

594.696

254.252

1.000

2.340

ResNeXt101

4

566.742

674.64

486.656

0.840

1.160

ResNeXt101

8

937.698

669.232

531.996

1.401

1.763

ResNeXt101

16

1086.34

670.3

570.867

1.621

1.903

ResNeXt101

32

1191.32

429.944

543.293

2.771

2.193

ResNeXt101

64

781.172

427.304

539.924

1.828

1.447

最优batch

32/8/16

1191.32

669.232

570.867

1.766

2.087

9. 精度对比

    推理结束之后,可以调用imagenet_acc_eval.py脚本和原有标签数据进行对比,得到top5的结果。

最后的精度表现如下:

top1准确率为79.3%,top5准确率为94.52%。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号