【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

司马炎
• 阅读 288

MindStudio

MindStudio 提供一站式AI开发环境,依靠工具与性能调优,采用插件化扩展机制,打造高效、便捷的全流程开发工具链。目前最新版本是5.0.RC3,发布于2022年20月,对应的昇腾社区版本:6.0.RC1。新增众多特性,这里主要介绍两个我非常感兴趣的分析迁移和。

分析迁移

  • X2MindSpore工具新增已验证支持的PyTorch模型49个,TensorFlow 1.x模型20个,TensorFlow 2.x模型20个。

  • X2MindSpore工具中TensorFlow1.x新增支持混合精度迁移,TensorFlow2.x新增支持分布式迁移。

  • X2MindSpore工具初步支持动态图迁移至静态图模式(包括PyTorch框架下ResNet系列和BiT系列的模型)。

调试调优

Profiling性能分析

  • Profiling支持集群场景性能数据展示(Analysis Summary界面新增集群场景解析结果、新增Cluster Iteration Analysis和Data Preparation界面)。

  • Profiling性能分析Merge Reports支持指定输入目录的PROF_XXX目录的父目录为任意目录,以及输出目录为任意目录。

精度比对

  • 精度比对工具新增支持新增npy与npy文件之间的精度比对功能。

  • 精度比对工具新增支持dump数据文件转换为npy数据文件功能。

  • 精度比对工具整网比对结果新增Show Model功能、散点分布图字段说明增加点击联动高亮以及结果增加OpType字段。

专家系统工具

  • 专家系统工具soc_version新增支持Ascend310P1平台。

  • 专家系统工具新增性能调优一键式闭环功能。

  • 专家系统工具新增知识库模板功能。

  • 专家系统工具自有知识库配置新增支持Python App工程。

AI Core Error分析工具

  • AI Core Error分析工具增加remote run配置模式。

Beta特性AutoML工具

  • HPO任务支持fully_train,并在可视化任务界面查看fully_train结果。

  • HPO任务可视化任务界面新增展示已搜索到的超参值。

总的来说,MindStudio提供开发者在AI开发所需的一站式开发环境,支持模型开发应用开发以及算子开发三个主流程中的开发任务。依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助开发者在一个工具上就能高效便捷地完成AI应用开发。MindStudio功能框架如图下图所示。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

在异构计算架构中, 昇腾AI处理器与CPU通过PCIe总线连接在一起来协同工作:

Host:CPU所在位置称为主机端(Host),是指与昇腾AI处理器所在硬件设备相连接的x86_64服务器、aarch64服务器或者WindowsPC,利用昇腾AI处理器提供的NN(Neural-Network)计算能力完成业务。如上图中的开发平台层。

Device:是指安装了昇腾AI处理器的硬件设备,利用PCIe接口与服务器连接,为服务器提供NN计算能力。如上图中的芯片层。

对于Ascend RC产品形态,昇腾AI处理器所在硬件设备与之相连接的ARM服务器合设,统称为Host。

应用开发

一般来说,MindStudio支持AscendCLMindX SDK来进行应用开发。说到二者的区别,简单来讲,MindX SDK可以视为AscendCL的封装版,进一步简化开发。而AscendCL是对昇腾AI处理器通用的开发语言,更接近硬件底层。这里我们介绍MindX SDK

MindX SDK

前提说明

  • MindX SDK当前适用于UbuntuOS、CentOS、EulerOS、LinxOS、KylinOS等系统。

  • 目前MindStudio仅支持MindX SDK中的mxManufacture和mxVision,暂不支持mxIndex。

  • MindX SDK运行依赖Python 3.9,请在安装CANN前确保Python 3.9已安装,并完成Python 3.9的环境变量配置。

逻辑框架

MindX SDK致力于简化异腾 AI 处理器推理业务开发过程,降低使用异腾A处理器开发的门槛。

  • 插件化开发模式

  • 提供丰富的插件库

  • 支持自定义插件开发

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

开发方式

  • 通过Stream配置文件,Stream manager可识别需要构建的Element,及它们的连接关系,并启动业务流程。Stream manager对外提供接口,用于向Stream发送数据和获取结果,令用户实现业务对接。

  • Plugin表示业务流程的基础模块,通过Element的串接构建Stream。Buffer内部挂载解码后的视频/图像数据,是Element间传递的数据结构,也可挂载元数据(Metadata),存放结构化数据 (如目标检测结果) 或过程数据 (如缩放后的图像)。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

开发流程

我们先来看看AI应用开发的典型推理业务流程,如下图所示,先通过目标检测获取目标坐标,然后通过图像分类识别目标属性。流程中有两次图像缩放的操作,两者主要区别在于设置的缩放宽高参数不同。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

下面,我们看看基于MindStudio完成上述流程是怎么做的。使用MindStudio开发和运行推理业务步骤如图所示,其中“深入开发”为SDK高级特性,用户可以视情况选择执行。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

  1. 确定业务流程。

根据业务的功能如目标检测、图像分类、属性识别等,将业务流程进行模块化。

  1. 寻找合适插件。

首先根据已有SDK插件的功能描述和规格限制来匹配业务功能。当SDK提供的插件无法满足功能需求时,用户可以开发自定义插件(可参见插件开发《mxManufacture 用户指南》《mxVision 用户指南》的“已有插件介绍”与“插件开发介绍”章节。)。

  1. 准备推理模型文件与数据集。

根据插件的实际应用场景,添加用于推理的模型文件和数据集。(加载的模型路径中不能有空格。)

(1) 转换模型。

在添加模型文件前,请参见模型转换将第三方模型转换为适配昇腾AI处理器的离线模型(*.om文件)。SDK样例工程的模型转换请参见SDK样例工程使用指导中的步骤4至6。模型转换具体指导与相关参数设置请参见《ATC工具使用指南》

(2) 添加模型文件。

请用户将准备好的模型文件上传到应用工程中用户自定义目录下。

(3) 准备推理数据。

准备推理所用数据,并上传到应用工程文件目录下。

  1. 流程编排。

请参见可视化流程编排《mxManufacture 用户指南》《mxVision 用户指南》的“流程编排介绍”与“数据流程介绍”章节。

  1. 业务集成。

编写C++程序或Python程序,调用业务流管理的API(MxStreamManager),先进行初始化,再加载业务流配置文件(*.pipeline),然后根据stream配置文件中的StreamName往指定Stream获取输出数据,最后销毁Stream。

可用API请参见《mxManufacture 用户指南》《mxVision 用户指南》的“API参考(C++)”章节与“API参考(Python)”章节。

  1. 编译与运行应用。

请参见编译与运行应用工程

说明

MindX SDK昇腾应用工程支持Profiling功能,具体可参见性能分析

基于MIndX SDK开发应用

1. 创建代码目录

在开发应用前,先创建目录存放代码文件、编译脚本测试图片数据、模型文件等。

Mindstudio提供工程模板,包含推荐的工程目录结构,Cmake工程模板等。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

2. 确定业务流程&寻找合适插件

根据业务的功能如目标检测、图像分类、属性识别等,将业务流程进行模块化。

首先根据已有插件功能描述和规格限制来匹配业务功能,当已有插件无法满足功能需求时,用户可以开发自定义插件。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

3. 准备推理模型

对于开源框架的网络模型,不能直接在异腾AI处理器上做推理,需要先使用ATC (Ascend TensorCompiler)工具将开源框架的网络模型转换为适配异腾AI处理器的离线模型 (*.om文件)。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

Mindstudio提供图形化界面,引导用户快速完成模型转换。同时提供模型可视化能力,帮助用户了解模型内部结构。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

4. 插件开发(可选)

当现有插件无法满足需求时,开发人员还可以自定义插件,灵活扩展原生MindX SDK的能力。

MindStudio提供MindX SDK插件模板,开发者可聚焦于业务逻辑实现,同时支持动态插件扫描功能新增插件直接加入插件库中用于流程编排。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

5. 流程编排

不同于传统代码流程式开发模式MindX SDK应用开发,采用模块化设计理念,将业务流程中的各个功能单元封装成独立插件,通过插件串接和参数配置,形成流程编排Pipeline配置文件,可快速构建推理业务。

MindStudio提供可视化流程编排通过“拖拉拽”和界面配置即可完成主体业务流程开发,配合少量的代码,拉起流管理器,加载上述配置文件,完成业务执行。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

6. 业务集成

对于开源框架的网络模型,不能直接在异腾A处理器上做推理,需要先使用ATC (Ascend Tensor Compiler) 工具将开源框架的网络模型转换为适配异腾AI处理器的离线模型 (*.om文件)。

7. 编译运行调试

MindStudio支持C/C++、Python语言,除基础的语法高亮、自动补产外Mindstudio支持编译、本地/远程 运行/调试能力。

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

案例实践

1. 基于Yolov4和SCN的情绪识别应用

功能描述: 该样例主要是使用MindX SDK实现现实场景下的情绪识别功能。

https://www.hiascend.com/zh/developer/mindx-sdk/case-studies/35480513-5d01-4531-ad83-a51ee10309c8

2. 基于face mask detection的目标检测应用

功能描述: 该样例主要是使用MindX SDK实现识别图片中的人是否佩戴口罩的功能。

https://www.hiascend.com/zh/developer/mindx-sdk/case-studies/b6eea89b-971a-40f3-b0f7-3ad11c40959a

点赞
收藏
评论区
推荐文章
艾木酱 艾木酱
1年前
超轻量级的VSCode插件,数据库想用就用~
MemFireCloud是一个便捷、灵活、高效的云服务平台,依托于分布式数据库MemFireDB的云原生和线性扩展能力,为互联网用户提供一站式数据库自助服务。介绍MemFireCloud推出VSCode的可视化数据库管理插件,提供操作数据库的图形界面,帮助开发人员轻松简单的写代码,边操作数据库。其主要功能包括:连接管理:统一管理所有的数据库连接;
GoCoding GoCoding
2年前
昇腾 CANN 开发环境
昇腾CANN是华为开发的AI场景的异构计算架构,支持用户快速构建基于昇腾平台的AI应用和业务。本文为Ubuntu上手动部署开发环境(与运行环境分离),安装MindStudio的过程。注:也可通过工具自动安装。只是本文实践时,安装服务遇到了中断问题。故给出了手动安装的方式。基础说明要求:Ubuntux8618.04非昇腾设备
雷厉风行 雷厉风行
1年前
Mac用户必备的Ruby开发工具,RubyMine 2023新版 永久激活码
RubyMine2023forMac是JetBrains公司开发的一款Ruby编程语言开发工具,支持多种Ruby开发环境,包括Rails、Sinatra等。该软件为Ruby开发人员提供了一站式的集成开发环境(IDE),可帮助他们更快地、更高效地开发代码。
Stella981 Stella981
2年前
HugeGraph发布可视化平台Hubble首个版本
近日,大规模图数据库HugeGraph宣布,正式发布图可视化分析平台HugeGraphHubblev1.5版本。该版本全面升级平台可视化工具,打造一站式图服务,从数据建模,到数据快速导入,再到数据的在线、离线分析,以及图的统一管理,实现了图应用全流程的向导式操作,旨在提升社区用户的使用顺畅度,降低使用门槛,提供更为高效易用的使用体验。HugeGr
Wesley13 Wesley13
2年前
QQ玩一玩好友排行榜与世界排行榜
QQ玩一玩好友排行榜与世界排行榜1、开发环境CocosCreatorV2.0.5手Q版本V7.9.0.3820(目前市场中最新版本)qqPlayCore.jsbuildTime:'FriNov09201813:20:45GMT0800(GMT08:00)'上出现,
Stella981 Stella981
2年前
Duang,HUAWEI DevEco IDE全面升级啦
想感受全新UI带来的视觉及交互体验、HiKey970开发板调测、HiAIAPI推荐和收藏、深度AI模型分析等新功能,体验高清晰度和流畅度的远程AI真机调测吗?!(https://oscimg.oschina.net/oscnet/f4e1bb24ff00b8c6ea27f75370a53bfbacd.jpg)全新的UI设计
京东云开发者 京东云开发者
2个月前
【京东云新品发布月刊】2024年3月产品动态
1.【言犀模型服务】新品上线言犀模型服务平台致力于为开发者提供AI原生应用开发的全链路服务,内置丰富的应用插件,提供便捷的集成方式,结合企业专属数据和API,助力企业高效完成大模型应用构建。2.【数据库管理服务DMS】新品上线数据库管理服务DMS(Data
司马炎 司马炎
1年前
【MindStudio训练营第一季】MindStudio 高精度对比随笔
MindStudio精度对比简介原因:训练场景下,迁移原始网络(如TensorFlow、PyTorch),用于NPU上执行训练,网络迁移可能会造成自有实现的算子运算结果与用原生标准算子运算结果存在偏差。推理场景下,ATC模型转换过
司马炎 司马炎
1年前
【MindStudio训练营第一季】MindStudio Profiling随笔
MindStudioProfiler简介AscendAI处理器是一款面向AI业务应用的高性能集成芯片,包含AICPU、ACore、AIVectorCore等计算单元来提升AI任务的运算性能。基于AscendAI处理器,Mindst
司马炎 司马炎
1年前
【MindStudio训练营第一季】MindStudio 专家系统随笔
简介专家系统(MindstudioAdvisor)是用于聚焦模型和算子的性能调优Top问题,识别性能瓶颈,重点构建瓶颈分析、优化推荐模型,支撑开发效率提升的工具。专家系统当前已经支持针对推理、训练、算子场景的瓶颈分析模型,包括内部团队开发的模型&