|
基于PyTorch的MindX高性能预训练模型—HRNet
目录
1 任务介绍
1.1 HRNet模型概述
1.2 MindStudio介绍
2 安装教程
2.1 安装说明
2.2 环境依赖配置
2.2.1 CANN安装
2.2.2 安装依赖
2.3 安装 MindStudio
3 MindStudio复现HRNet推理与训练功能
3.1 模型转换
3.1.1 创建工程
3.1.2 配置工程属性
3.1.3 pth->onnx
3.1.4 onnx->om
3.2 sdk推理
3.2.1 创建工程并配置工程属性
3.2.2 运行推理
3.2.3 求精度
3.3 mxbase推理
3.3.1 创建工程并配置工程属性
3.3.2 前处理
3.3.3 编译
3.3.4 运行推理
3.3.5 求精度
3.4 modelarts训练
3.4.1 创建训练作业
3.4.2 执行训练
4 FAQ
5 从昇腾社区获取更多帮助
1 任务介绍
1.1 HRNet模型概述
HRNet是一个用于图像分类的高分辨网络。通过并行连接高分辨率到低分辨率卷积来保持高分辨率表示,并通过重复跨并行卷积执行多尺度融合来增强高分辨率表示。在像素级分类、区域级分类和图像级分类中,证明了这些方法的有效性。其创新点在于能够从头到尾保持高分辨率,而不同分支的信息交互是为了补充通道数减少带来的信息损耗,这种网络架构设计对于位置敏感的任务会有奇效。
1.2 MindStudio介绍
MindStudio是一套基于华为昇腾 AI 处理器开发的 AI 全栈开发工具,包括基于芯片的算子开发、以及自定义算子开发,同时还包括网络层的网络移植、优化和分析,另外在业务引擎层提供了一套可视化的AI引擎拖拽式编程服务,极大的降低了AI引擎的开发门槛,全平台通过IDE的方式向开发者提供各种服务功能。其中,针对安装与部署MindStudio提供多种部署方式,支持多种主流操作系统,为开发者提供最大便利;针对算子开发,MindStudio提供包含UT 测试、ST测试、TIK算子调试等的全套算子开发流程。支持 TensorFlow、PyTorch、MindSpore等多种主流框架的TBE和AI CPU自定义算子开发;针对网络模型的开发,MindStudio支持TensorFlow、Pytorch、MindSpore框架的模型训练,支持多种主流框架的模型转换。集成了训练可视化、脚本转换、模型转换、精度比对等工具,提升了网络模型移植、分析和优化的效率;针对应用开发,MindStudio集成了Profiling性能调优、编译器、MindX SDK的应用开发、可视化pipeline业务流编排等工具,为开发者提供了图形化的集成开发环境,通过MindStudio能够进行工程管理、编译、调试、性能分析等全流程开发,能够很大程度提高开发效率。
本文以HRNet模型为例,指导用户使用MindStudio平台进行模型转换(pth-onnx-om)、sdk推理、mxBase推理以及连接modelarts训练。
2 安装教程
2.1 安装说明
在一站式导航中点击“下载方式,用户手册”,根据安装指南进行安装。
其主要安装流程如下图所示。
所需环境如下。
MindStudio安装之前,安装依赖不是必选的。若要将项目在本地运行,则需要根据项目安装相应版本的依赖,配置所需的环境;若要将项目在远端服务器运行,则需在服务器上配置相应的环境和依赖。
2.2 环境依赖配置
2.2.1 CANN安装
CANN(Compute Architecture for Neural Networks)是华为公司针对AI场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。
用户根据实际使用需要,下载对应的CANN软件包,具体安装流程可以参考官网的用户手册。
CANN软件包下载地址:
https://www.hiascend.com/software/cann/commercial
CANN安装流程:
https://www.hiascend.com/document/detail/zh/canncommercial/51RC1/envdeployment/instg
2.2.2 安装依赖
(1)安装Python依赖
Python官方网站下载安装Python3.7.5到本地:
https://www.python.org/downloads/release/python-375/
打开高级系统设置 > 环境变量 > Path > 编辑 > 新建。
将Python安装环境下的Scipts路径添加到Path里。
安装Python依赖:
pip install xlrd==1.2.0
pip install absl-py
pip install numpy
pip install requests
(2)安装MinGW依赖
根据电脑配置选择合适的版本下载:
https://sourceforge.net/projects/mingw-w64/files/
将MinGW安装包解压到自定义的路径,按照上述环境变量的配置方法,将 MinGW路径下的bin文件夹添加到Path中。
安装配置完成后,打开cmd输入gcc -v
(3)安装CMake依赖
下载地址:https://cmake.org/download/
同样将cmake安装路径添加到Path中
2.3 安装 MindStudio
下载地址:https://www.hiascend.com/software/mindstudio/download
双击MindStudio_{version}_win.exe安装包,按照提示安装即可。
3 MindStudio复现HRNet推理与训练功能
3.1 模型转换
3.1.1 创建工程
选择File > New > Project。
选择Ascend App。
点击Change选择CANN Version。
点击Remote Connection > 配置SSH,连接远端服务器。
连接成功后,点击Remote CANN location,选择相应的CANN版本。
选好后,点击Finish。
选择工程类型ACL Project(Python) > 点击Finish,工程创建成功。
3.1.2 配置工程属性
选择File > Project Structure。
选择Add Python SDK。
选择SSH Interpreter:其中Deploy选择已经配置好的SSH,Interpreter选择远端的一个python版本,并在Name处为其命名。
通过File > Settings > Deployment > Mappings来设置映射,其目的是使本地项目与远程服务器保持同步,从而使本地选择的文件能够在远端运行,同时运行结果也能同步到两端。
点击Excluded Paths来设置排他路径,将数据集等文件设置为排他,不进行同步,防止在运行过程中误删掉数据集。
配置好映射后,可通过在“某一文件”右击 > Deployment > Download from将文件从服务器上下载下来,也可以通过Deployment > Upload to 将某一文件上传至服务器。
3.1.3 pth->onnx
选择Run > Edit Configurations来配置运行文件。
在Script path处选择pth2onnx.py,在Parameters处输入超参数,在Python interpreter处指定python解释器的版本(配置工程属性时已经配置),配置好后点击Apply > OK。
运行完成后会在远程convert文件夹下生成hrnet.onnx。
3.1.4 onnx->om
选择Ascend -> Model Converter
按照提示选择onnx模型并填写其他参数,完成后点击Next。
在此界面确认参数是否正确,若不正确则点击Previous退回上一步进行修改,若正确则点击Finish开始转换。
如图所示,模型转换成功,会在convert目录下生成hrnet.om。
3.2 sdk推理
3.2.1 创建工程并配置工程属性
选择Ascend App类型的工程,并按照3.1节同样的步骤连接CANN。
选择MindX SDK Project(Python) > Finish。
按照3.1节同样的步骤配置工程属性(设置python解释器与映射)。
3.2.2 运行推理
选择sdk目录下的run.sh文件,配置其运行参数,点击Apply > OK。
运行结果如下所示:在sdk目录下生成了result_file.txt保存推理结果。
3.2.3 求精度
将util目录下的task_metric.py文件与标签文件val_label放到sdk目录下,然后选中sdk目录下的task_metric.py文件,配置其运行参数,点击Apply > OK。
打开生成的sdk_pred_result.acc.json文件查看推理精度。
3.3 mxbase推理
3.3.1 创建工程并配置工程属性
选择Ascend App类型的工程,并按照3.1节同样的步骤连接CANN。
选择MindX SDK Project(C/C++) > Finish。
按照3.1节同样的步骤配置工程属性(设置python解释器与映射)。
3.3.2 前处理
转到sdk工程,选择util目录下编译产生的preprocess.py文件,配置其运行参数,点击Apply > OK。
处理后的图片会存放在util目录下的preprocess文件夹中。
3.3.3 编译
Mxbase推理需要先进行编译,选择mxbase目录下的build.sh文件,配置其运行参数,点击Apply > OK。
编译完成后会在mxbase文件夹下生成用来运行推理的hrnet文件。
3.3.4 运行推理
选择mxbase目录下编译产生的hrnet文件,配置其运行参数,点击Apply > OK。
运行结果如下所示:在mxbase目录下生成了mx_pred_result.txt保存推理结果。
3.3.5 求精度
将util目录下的task_metric.py文件与标签文件val_label放到mxbase目录下,然后选中mxbase目录下的task_metric.py文件,配置其运行参数,点击Apply > OK。
打开生成的mxbase_pred_result.acc.json文件查看推理精度
3.4 modelarts训练
3.4.1 创建训练作业
由于开发环境还没提供相关镜像,所以这里采用训练作业方式进行。
登陆华为云。
右上角点击控制台。
服务列表搜索modelarts并进入。
创建训练作业。
配置作业参数,其中名称可命名为自己模型的名字,算法来源选择自定义,从给出的镜像列表中选择相应的镜像,代码目录、数据来源、训练输出位置、作业日志路径均选择obs桶里的相应位置(前提是数据与代码已上传至桶里),最后可选择保存作业参数然后点击下一步。
确认参数没问题后点击提交。
3.4.2 执行训练
训练过程会在日志中展示。
训练结束后会在桶中的输出位置
obs://mindx-user/HRNet/output/中产生pth与onnx文件。
4 FAQ
CANN连接错误
Q:连接服务器SSH成功,但是连接CANN失败:
A:有可能是因为不是root用户,若是普通用户被赋予了和root相同的权限则可以连接成功。也有可能是服务器端内存不足,查看同步CANN时产生的日志可判断是否为该原因。
5 从昇腾社区获取更多帮助
开发者在使用 MindStudio 或进行算子开发过程中遇到任何问题,都可以来昇腾社区获 得更多的帮助。
昇腾官网:https://www.hiascend.com/
昇腾社区:https://bbs.huaweicloud.com/
昇腾论坛:https://bbs.huaweicloud.com/forum/forum-726-1.html |
|