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

简介: Mind Studio 提供一站式AI开发环境,依靠工具与性能调优,采用插件化扩展机制,打造高效、便捷的全流程开发工具链。目前最新版本是5.0.RC3,发布于2022年20月,对应的昇腾社区版本:6.0.RC1,新增众多特性。

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功能框架如图下图所示。

image.png

在异构计算架构中, 昇腾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处理器开发的门槛。

  • 插件化开发模式
  • 提供丰富的插件库
  • 支持自定义插件开发

image.png

开发方式

  • 通过Stream配置文件,Stream manager可识别需要构建的Element,及它们的连接关系,并启动业务流程。Stream manager对外提供接口,用于向Stream发送数据和获取结果,令用户实现业务对接。
  • Plugin表示业务流程的基础模块,通过Element的串接构建Stream。Buffer内部挂载解码后的视频/图像数据,是Element间传递的数据结构,也可挂载元数据(Metadata),存放结构化数据 (如目标检测结果) 或过程数据 (如缩放后的图像)。

image.png

开发流程

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

image.png

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

image.png

  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工程模板等。

image.png

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

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

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

image.png

3. 准备推理模型

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

image.png

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

image.png

4. 插件开发(可选)

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

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

image.png

5. 流程编排

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

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

image.png

6. 业务集成

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

7. 编译运行调试

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

image.png

案例实践

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

目录
相关文章
|
27天前
|
人工智能 JSON 自然语言处理
基于阿里云通义千问的AI模型应用开发指南
阿里云通义千问是阿里巴巴集团推出的多模态大语言模型平台,提供了丰富的API和接口,支持多种AI应用场景,如文本生成、图像生成和对话交互等。本文将详细介绍阿里云通义千问的产品功能,并展示如何使用其API来构建一个简单的AI应用,包括程序代码和具体操作流程,以帮助开发者快速上手。
423 3
|
1月前
|
存储 人工智能 uml
介绍一款好用的开源画图神器-draw.io | AI应用开发
draw.io 是一款基于浏览器的开源绘图工具,无需安装即可使用,支持多种操作系统和设备。其简洁的界面、丰富的形状库、智能对齐功能和强大的云端协作能力,使其成为专业人士和创意爱好者的首选。无论是产品设计、流程图绘制还是思维导图构建,draw.io 都能满足你的多样化需求。【10月更文挑战第7天】
106 0
|
1月前
|
人工智能 Python
读取excel工具:openpyxl | AI应用开发
`openpyxl` 是一个 Python 库,专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。它是处理 Excel 文件的强大工具,可以让你在不需要安装 Excel 软件的情况下,对 Excel 文件进行创建、修改、读取和写入操作【10月更文挑战第3天】
66 0
|
25天前
|
存储 人工智能 分布式计算
Parquet 文件格式详解与实战 | AI应用开发
Parquet 是一种列式存储文件格式,专为大规模数据处理设计,广泛应用于 Hadoop 生态系统及其他大数据平台。本文介绍 Parquet 的特点和作用,并演示如何在 Python 中使用 Pandas 库生成和读取 Parquet 文件,包括环境准备、生成和读取文件的具体步骤。【10月更文挑战第13天】
195 60
|
22天前
|
人工智能 运维 Serverless
【CAP评测有奖】邀您共探 AI 应用开发新趋势,赢取多重好礼!
云应用开发平台 CAP(Cloud Application Platform)是阿里云推出的一站式应用开发和生命周期管理平台。是专为现代开发者打造的一站式解决方案,旨在简化应用开发流程,加速创新步伐。它集成了丰富的 Serverless + AI 应用模板、开源工具链与企业级应用管理功能,让无论是个人还是企业开发者,都能轻松构建云上应用,并实现持续迭代升级。
|
22天前
|
人工智能 API 决策智能
swarm Agent框架入门指南:构建与编排多智能体系统的利器 | AI应用开发
Swarm是OpenAI在2024年10月12日宣布开源的一个实验性质的多智能体编排框架。其核心目标是让智能体之间的协调和执行变得更轻量级、更容易控制和测试。Swarm框架的主要特性包括轻量化、易于使用和高度可定制性,非常适合处理大量独立的功能和指令。【10月更文挑战第15天】
157 6
|
23天前
|
存储 人工智能 Java
Neo4j从入门到精通:打造高效知识图谱数据库 | AI应用开发
在大数据和人工智能时代,知识图谱作为一种高效的数据表示和查询方式,逐渐受到广泛关注。本文从入门到精通,详细介绍知识图谱及其存储工具Neo4j,涵盖知识图谱的介绍、Neo4j的特点、安装步骤、使用方法(创建、查询)及Cypher查询语言的详细讲解。通过本文,读者将全面了解如何利用Neo4j处理复杂关系数据。【10月更文挑战第14天】
88 6
|
1月前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
|
24天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
1月前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
阿里云开源 Spring AI Alibaba,旨在帮助 Java 开发者快速构建 AI 应用,共同构建物理新世界。

热门文章

最新文章