基于MindStudio完成ResNeXt101_32x8d开发

使用MindStudio进行Pytorch模型迁移以及推理

  1. MindStudio环境搭建

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

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

  1. 模型简介

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

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

  1. 创建推理工程

    打开 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,完成工程创建,进入工程主界面。

  1. 将环境部署到远端

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

  1. 配置ssh

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

  1. 部署本地文件夹

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

首先选择连接哪一个SSH服务,然后测试连接是否可用。

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

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

  1. 配置python环境

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

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

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

  1. 数据预处理

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

第一个参数为原始数据验证集(.jpeg)所在路径,第二个参数为输出的二进制文件(.bin)所在路径。每个图像对应生成一个二进制文件。

在预处理获得bin文件之后,再执行get_info.py提取输入信息:

  1. 模型转换

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

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

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

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

本实验需要跑到不同的batch size,这里只需要修改shape参数即可生成对应不同batch size的om模型。

MindStudio自动生成如下atc指令,用户可以在此做最后的校验,点击Finish即可开始进行模型转换。

转换成功得到结果如下:

  1. 离线推理

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

  1. 精度对比

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

最后的到精度表现如下:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值