【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

目录
相关文章
|
2月前
|
人工智能 JSON 自然语言处理
基于阿里云通义千问的AI模型应用开发指南
阿里云通义千问是阿里巴巴集团推出的多模态大语言模型平台,提供了丰富的API和接口,支持多种AI应用场景,如文本生成、图像生成和对话交互等。本文将详细介绍阿里云通义千问的产品功能,并展示如何使用其API来构建一个简单的AI应用,包括程序代码和具体操作流程,以帮助开发者快速上手。
745 3
|
16天前
|
人工智能 数据管理 API
阿里云百炼又获大奖!阿里云百炼入选 2024 最受开发者欢迎的 AI 应用开发平台榜15强
2024年最受开发者欢迎的AI应用开发平台榜单发布,阿里云百炼入选15强。持续推动AI开发者生态建设,提供开放平台、培训支持、行业解决方案,注重数据安全与合规,致力于生态合作与共赢,加速企业数智化转型。
|
4天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营
12月14日,由中国软件行业校园招聘与实习公共服务平台携手魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·湖南大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营
|
2月前
|
存储 人工智能 uml
介绍一款好用的开源画图神器-draw.io | AI应用开发
draw.io 是一款基于浏览器的开源绘图工具,无需安装即可使用,支持多种操作系统和设备。其简洁的界面、丰富的形状库、智能对齐功能和强大的云端协作能力,使其成为专业人士和创意爱好者的首选。无论是产品设计、流程图绘制还是思维导图构建,draw.io 都能满足你的多样化需求。【10月更文挑战第7天】
263 0
|
2月前
|
人工智能 Python
读取excel工具:openpyxl | AI应用开发
`openpyxl` 是一个 Python 库,专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。它是处理 Excel 文件的强大工具,可以让你在不需要安装 Excel 软件的情况下,对 Excel 文件进行创建、修改、读取和写入操作【10月更文挑战第3天】
98 0
|
1天前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
50 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
2月前
|
存储 人工智能 分布式计算
Parquet 文件格式详解与实战 | AI应用开发
Parquet 是一种列式存储文件格式,专为大规模数据处理设计,广泛应用于 Hadoop 生态系统及其他大数据平台。本文介绍 Parquet 的特点和作用,并演示如何在 Python 中使用 Pandas 库生成和读取 Parquet 文件,包括环境准备、生成和读取文件的具体步骤。【10月更文挑战第13天】
453 60
|
1月前
|
人工智能 数据可视化 API
AI Agents Loop异步执行可视化Tutorial 借助AgentBoard工具可视化工作流
本文介绍了AI Agent的异步执行循环(Agent Loop),并展示了如何利用开源框架agentboard可视化这一过程。通过分析不同框架(如AutoGen、LangGraph、AutoAgent)对Agent Loop的抽象,文章详细说明了从简单的功能调用到复杂的多阶段执行流程的设计。此外,还提供了使用agentboard进行日志记录与流程可视化的具体示例,包括安装步骤、代码实现及运行方法,帮助开发者更高效地调试和优化AI Agent的应用。
AI Agents Loop异步执行可视化Tutorial 借助AgentBoard工具可视化工作流
|
3天前
|
人工智能 运维 Devops
CAP:Serverless + AI 让应用开发更简单
对于众多开发者而言,Serverless 架构的核心优势在于其能够无缝集成多种云产品与组件,从而使得开发者可以更加专注于核心业务逻辑和创新。此外,Serverless 架构还提供了按量付费的灵活计费模式,进一步降低了资源成本。使用云应用开发平台 CAP,在 AI 领域,企业就可以专注于模型训练、算法优化等关键任务,让 AI 应用的开发、部署以及全生命周期的管理更加简单。可以预见 Serverless 技术将催生一系列创新且有趣的应用,而这些应用将不断拓展 AI 技术的边界。
|
2月前
|
人工智能 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 应用的便利性。示例源
1406 12