前言
一、搭建开发环境
1.1、配置云服务器
1.2、安装本地MindStudio IDE
二、MindX SDK文本分类案例
2.1、案例查找
2.2、案例简介
三、配置MindStudio
3.1、案例载入及项目类型转换
3.2、SSH配置
3.3、Deployment配置
3.4、CANN配置
3.5、MindX SDK配置
3.6、项目SDK配置
3.7、Run配置
四、案例调试
4.1、模型下载及转换
4.2、数据下载及上传
4.3、推理结果
五、文本分类代码及pipeline解读
5.1 文本分类代码解读
5.2 pipeline流程编排解读
前言
华为昇腾(Ascend)提供了软硬一体的 AI 开发工具,从底层的 Atlas 系列 AI 硬件,到异构计算架构 CANN,到 AI 框架 MindSpore,再到顶层的应用使能等,基本涵盖了人工智能算法开发到部署的各个方面,如下图所示:

fig1. 昇腾系列
其中,MindStudio 提供了 AI 开发所需的一站式开发环境,也是本次主要使用的 IDE。
MindX SDK 是面向各行各业开发者的 AI 开发套件,旨在用封装的模块来降低代码量,提升 AI 应用的开发效率。可在 MindStudio IDE 上完成 MindX SDK 项目的开发。
一、搭建开发环境
开发环境选择“本地 MindStudio+云端 ECS“,需要在本地安装 MindStudio,通过 SSH 链接云端服务器,MindStudio 训练营免费提供了 AI 加速型弹性云服务器 ECS 的算力体验券,并提供了包含 CANN 和 MindX SDK 的镜像。算力体验券和镜像需要用自己的 华为云ID 和 项目ID 申请,链接如下:
https://www.hiascend.com/activities/cloud-resource/381876fdcaea4d23a9bfb1372d4ec250
1.1、配置云服务器
登录到华为云,先接收 ECS 云服务器镜像,再去部署,按照一下链接一步步操作即可:
https://www.hiascend.com/forum/thread-0215102218658824061-1-1.html
服务器运行 x86_64 架构的 Ubuntu 18.04.4 LTS 系统,镜像中已经安装好 CANN6.0.RC1 和 MindX SDK(mxManufacture/mxVision)3.0.RC3。
镜像中CANN包地址:/usr/local/Ascend/ascend-toolkit/6.0.RC1
镜像中MindX SDK地址:/usr/local/Ascend/mxManufacture-3.0.RC3
这两者位置需要记得,后续在 MindStudio 中配置 CANN 和 MindX SDK 中用到。
1.2、安装本地MindStudio IDE
本机操作系统为 Windows x86_64,按照安装指南一步步操作即可:
https://www.hiascend.com/document/detail/zh/mindstudio/50RC3/instg/instg_000009.html
二、MindX SDK文本分类案例
昇腾官网提供了丰富的 MindX SDK 应用案例,选取其中一个作为操作对象。
2.1、案例查找
进入昇腾官网,点击 开发者 > 资源 > 应用案例,如下:

fig2-1. 案例查找
下载完案例后,得到名为"mindxsdx-referenceapps-master"的压缩包,所有的项目案例位于二级目录"contrib"中,按照 gitee 上的名字,找到对应的即可。
2.2、案例简介
文本分类-昇腾社区 (hiascend.com)

fig2-2. 文本分类案例
本次用到了文本分类案例,基于 MindX SDK 的 mxVision 所做,实际用到了 mxVision 中的 mxBase 功能。
该案例主要用到了 Bert 模型,根据新闻标题去判断,该新闻的类别。
三、配置MindStudio
3.1、案例载入及项目类型转换
打开 MindStudio,再打开案例所在文件夹,即可进入:

fig3-1. 选择打开项目
新载入的项目需要转换为 MindX SDK 项目,点击 Ascend 进行转换,再进行对应的选择。

fig3-2. 项目类型转换
3.2、SSH配置

fig3-3. SSH配置
需要用云服务器的公网 IP 进行链接,公网 IP 才能访问网络。
mxVision 需要在云端卸载重装,否则 pipeline 文件会显示异常,即可视化 pipeline 中 plugin 显示灰色,且不显示 plugin 信息。
3.3、Deployment配置
Deployment 用来指定案例的本地路径和云端路径,为了便于管理,可以在云端自建文件夹作为案例的保存路径。

fig3-4. Deployment配置
3.4、CANN配置
设置完 SSH 后,打开 CANN 的配置界面,还需选择 CANN 的对应位置。

fig3-5. CANN配置
3.5、MindX SDK配置
点击 "Install SDK",设置对应的路径。

fig3-6. MindX SDK 配置
3.6、项目SDK配置
在”项目结构“中设置远端SDK

fig3-7. 项目SDK配置
3.7、Run配置
点击 Run,增加 Ascend Training 项,Executable 中定位到案例的 main.py。

fig3-8. Run配置
四、案例调试
4.1、模型下载及转换
- 本地创建 models 文件夹
- 下载 bert_text_classification.pb 模型,存入 models
- 上传项目至云端

- fig4-1. 上传云端
- 开启 Remote Terminal,进如 .pb 模型所在目录

- fig4-2. 云端连接

- fig4-3. 打开模型所在目录
- 执行 atc 模型转换命令,得到 bert_text_classification.om 模型
- atc --model=bert_text_classification.pb --framework=3 --input_format="ND" --output=bert_text_classification --input_shape="input_1:1,300;input_2:1,300" --out_nodes=dense_1/Softmax:0 --soc_version=Ascend310 --op_select_implmode="high_precision"
- 将 .om 分别移动到/sdk/model 和 mxBase/model 下面
4.2、数据下载及上传
数据集下载地址:
Gitee.com
下载数据集后解压,将解压后的test.csv文件分别放在sdk/data目录和mxBase/data目录,并将数据上传至云端。
4.3、推理结果
执行 main.py 得到推理结果 prediction_label.txt,如下:

fig4-4. 模型推理结果
五、文本分类代码及pipeline解读
5.1 文本分类代码解读
(1)初始化 stream manager,stream manager 用来管理 element。
if __name__ == '__main__':
streamManagerApi = StreamManagerApi()
# init StreamManager
ret = streamManagerApi.InitManager()
(2)读取 pipeline 文件,并创建 streams。
# creat streams by pipeline file
if os.path.exists("pipeline/BertTextClassification.pipeline") != True:
print("The BertTextClassification.pipeline does not exist, please input the right path!")
exit()
with open("pipeline/BertTextClassification.pipeline", 'rb') as f:
pipelineStr = f.read()
ret = streamManagerApi.CreateMultipleStreams(pipelineStr)
if ret != 0:
print("Failed to create Stream, ret=%s" % str(ret))
exit()
(3)读取词表
with codecs.open("data/vocab.txt", 'r', 'utf-8') as reader:
for line in reader:
token = line.strip()
token_dict[token] = len(token_dict)
(4)读取输入
(5)获取 plugin 的输出
infer_result = streamManagerApi.GetProtobuf(streamName, inPluginId, keyVec)
(6)获取模型推理结果
result = MxpiDataType.MxpiClassList()
result.ParseFromString(infer_result[0].messageBuf)
label = result.classVec[0].className
5.2 pipeline流程编排解读

fig5-1. 文本分类pipeline
(1)appsrc0
实现输入读取,完成文本词向量化的功能。
(2)test_mxpi_tensorinfer
对编码后的文本进行模型推理

fig5-2. 模型推理设置
(3)test_mxpi_classpostprocessor
模型后处理
(4)appsink0
输出
前言
一、搭建开发环境
1.1、配置云服务器
1.2、安装本地MindStudio IDE
二、MindX SDK文本分类案例
2.1、案例查找
2.2、案例简介
三、配置MindStudio
3.1、案例载入及项目类型转换
3.2、SSH配置
3.3、Deployment配置
3.4、CANN配置
3.5、MindX SDK配置
3.6、项目SDK配置
3.7、Run配置
四、案例调试
4.1、模型下载及转换
4.2、数据下载及上传
4.3、推理结果
五、文本分类代码及pipeline解读
5.1 文本分类代码解读
5.2 pipeline流程编排解读
前言
华为昇腾(Ascend)提供了软硬一体的 AI 开发工具,从底层的 Atlas 系列 AI 硬件,到异构计算架构 CANN,到 AI 框架 MindSpore,再到顶层的应用使能等,基本涵盖了人工智能算法开发到部署的各个方面,如下图所示:
fig1. 昇腾系列
其中,MindStudio 提供了 AI 开发所需的一站式开发环境,也是本次主要使用的 IDE。
MindX SDK 是面向各行各业开发者的 AI 开发套件,旨在用封装的模块来降低代码量,提升 AI 应用的开发效率。可在 MindStudio IDE 上完成 MindX SDK 项目的开发。
一、搭建开发环境
开发环境选择“本地 MindStudio+云端 ECS“,需要在本地安装 MindStudio,通过 SSH 链接云端服务器,MindStudio 训练营免费提供了 AI 加速型弹性云服务器 ECS 的算力体验券,并提供了包含 CANN 和 MindX SDK 的镜像。算力体验券和镜像需要用自己的 华为云ID 和 项目ID 申请,链接如下:
https://www.hiascend.com/activities/cloud-resource/381876fdcaea4d23a9bfb1372d4ec250
1.1、配置云服务器
登录到华为云,先接收 ECS 云服务器镜像,再去部署,按照一下链接一步步操作即可:
https://www.hiascend.com/forum/thread-0215102218658824061-1-1.html
服务器运行 x86_64 架构的 Ubuntu 18.04.4 LTS 系统,镜像中已经安装好 CANN6.0.RC1 和 MindX SDK(mxManufacture/mxVision)3.0.RC3。
镜像中CANN包地址:/usr/local/Ascend/ascend-toolkit/6.0.RC1
镜像中MindX SDK地址:/usr/local/Ascend/mxManufacture-3.0.RC3
这两者位置需要记得,后续在 MindStudio 中配置 CANN 和 MindX SDK 中用到。
1.2、安装本地MindStudio IDE
本机操作系统为 Windows x86_64,按照安装指南一步步操作即可:
https://www.hiascend.com/document/detail/zh/mindstudio/50RC3/instg/instg_000009.html
二、MindX SDK文本分类案例
昇腾官网提供了丰富的 MindX SDK 应用案例,选取其中一个作为操作对象。
2.1、案例查找
进入昇腾官网,点击 开发者 > 资源 > 应用案例,如下:
fig2-1. 案例查找
下载完案例后,得到名为"mindxsdx-referenceapps-master"的压缩包,所有的项目案例位于二级目录"contrib"中,按照 gitee 上的名字,找到对应的即可。
2.2、案例简介
文本分类-昇腾社区 (hiascend.com)
fig2-2. 文本分类案例
本次用到了文本分类案例,基于 MindX SDK 的 mxVision 所做,实际用到了 mxVision 中的 mxBase 功能。
该案例主要用到了 Bert 模型,根据新闻标题去判断,该新闻的类别。
三、配置MindStudio
3.1、案例载入及项目类型转换
打开 MindStudio,再打开案例所在文件夹,即可进入:
fig3-1. 选择打开项目
新载入的项目需要转换为 MindX SDK 项目,点击 Ascend 进行转换,再进行对应的选择。
fig3-2. 项目类型转换
3.2、SSH配置
fig3-3. SSH配置
需要用云服务器的公网 IP 进行链接,公网 IP 才能访问网络。
mxVision 需要在云端卸载重装,否则 pipeline 文件会显示异常,即可视化 pipeline 中 plugin 显示灰色,且不显示 plugin 信息。
3.3、Deployment配置
Deployment 用来指定案例的本地路径和云端路径,为了便于管理,可以在云端自建文件夹作为案例的保存路径。
fig3-4. Deployment配置
3.4、CANN配置
设置完 SSH 后,打开 CANN 的配置界面,还需选择 CANN 的对应位置。
fig3-5. CANN配置
3.5、MindX SDK配置
点击 "Install SDK",设置对应的路径。
fig3-6. MindX SDK 配置
3.6、项目SDK配置
在”项目结构“中设置远端SDK
fig3-7. 项目SDK配置
3.7、Run配置
点击 Run,增加 Ascend Training 项,Executable 中定位到案例的 main.py。
fig3-8. Run配置
四、案例调试
4.1、模型下载及转换
cp ./bert_text_classification.om $root/bertText/mxBase/model/
4.2、数据下载及上传
数据集下载地址:
Gitee.com
下载数据集后解压,将解压后的test.csv文件分别放在sdk/data目录和mxBase/data目录,并将数据上传至云端。
4.3、推理结果
执行 main.py 得到推理结果 prediction_label.txt,如下:
fig4-4. 模型推理结果
五、文本分类代码及pipeline解读
5.1 文本分类代码解读
(1)初始化 stream manager,stream manager 用来管理 element。
if __name__ == '__main__':
streamManagerApi = StreamManagerApi()
# init StreamManager
ret = streamManagerApi.InitManager()
(2)读取 pipeline 文件,并创建 streams。
# creat streams by pipeline file
if os.path.exists("pipeline/BertTextClassification.pipeline") != True:
print("The BertTextClassification.pipeline does not exist, please input the right path!")
exit()
with open("pipeline/BertTextClassification.pipeline", 'rb') as f:
pipelineStr = f.read()
ret = streamManagerApi.CreateMultipleStreams(pipelineStr)
if ret != 0:
print("Failed to create Stream, ret=%s" % str(ret))
exit()
(3)读取词表
with codecs.open("data/vocab.txt", 'r', 'utf-8') as reader:
for line in reader:
token = line.strip()
token_dict[token] = len(token_dict)
(4)读取输入
(5)获取 plugin 的输出
infer_result = streamManagerApi.GetProtobuf(streamName, inPluginId, keyVec)
(6)获取模型推理结果
result = MxpiDataType.MxpiClassList()
result.ParseFromString(infer_result[0].messageBuf)
label = result.classVec[0].className
5.2 pipeline流程编排解读
fig5-1. 文本分类pipeline
(1)appsrc0
实现输入读取,完成文本词向量化的功能。
(2)test_mxpi_tensorinfer
对编码后的文本进行模型推理
fig5-2. 模型推理设置
(3)test_mxpi_classpostprocessor
模型后处理
(4)appsink0
输出