【MindStudio训练营第一季】Profiler
Profiling简介
Profiling性能分析工具用于采集和分析运行在昇腾AI处理器上的推理业务(应用或算子)各个运行阶段的关键性能指标,可根据输出的性能数据针对关键性能瓶颈做出优化以实现产品的极致性能。
Profiling性能分析工具针对APP工程运行过程中的硬件和软件以及Host侧性能数据进行采集、分析并汇总展示:
硬件的性能数据包括:AI Core等模块的PMU指标及系统硬件性能指标。
软件的性能数据包括:AscendCL、GE、RTS等模块的性能指标数据。
Host侧性能数据包括:CPU、Memory、Disk、Network、pthread和system call模块的性能指标数据。
Profiling还可以采集Host与Device之间、Device间的同步异步内存复制时延,在AscendCL和Runtime接口数据中体现。
Profiling的部分
调优步骤
调优主要分为三步
性能数据采集、解析、分析
性能问题定位,发现性能瓶颈点
采取性能优化措施
Profiling流程
推理
训练
数据采集方式
推理场景
msprof命令行方式
a ...
【MindStudio训练营第一季】精度比对
精度比对简介
原因
CANN自有实现的算子在昇腾AI处理器上的运算结果与业界标准算子(如Caffe、ONNX、TensorFlow、PyTorch)的运算结果可能存在差异:
在训练场景下,迁移原始网络用于NPU上执行训练,网络的迁移可能会造成自由算子运算结果与原生标准算子运算结果存在偏差;
在推理场景下,ATC在模型转换过程中对模型进行了优化,包括算子消除、算子融合、算子拆分,这些动作可能会造成自有实现的算子运算结果与业界标准算子(如Caffe、TensorFlow、ONNX)运算结果存在偏差。
解决方法
精度比对工具帮助开发人员定位本次任务两个网络间的精度差异,精度比对工具提供Tensor比对能力,包含余弦相似度、最大绝对误差、累积相对误差、欧氏相对距离、KL散度、标准差、平均绝对误差、均方根误差、最大相对误差、平均相对误差的算法比对维度。
精度比对流程
环境准备;
比对数据准备
推理场景:准备第三方框架原始模型的npy数据文件与离线模型的dump数据文件。
训练场景:准备基于GPU运行生成的第三方框架原始训练网络npy数据文件与基于昇腾AI处理器运行生成的训练网络dump ...
【MindStudio训练营第一季】MindStudio AscendCL开发
AscendCL简介
AscendCL 主要接口调用流程
使用MindStudio实现基于ResNet-50的分类应用
从gitee中下载工程文件,该样例基于Caffe ResNet-50网络(单输入、单Batch)实现图片分类的功能。
在该样例中:
先使用样例提供的脚本transferPic.py,将2张*.jpg图片都转换为*.bin格式,同时将图片从1024*683的分辨率缩放为224*224。
加载离线模型om文件,对2张图片进行同步推理,分别得到推理结果,再对推理结果进行处理,输出top5置信度的类别标识。
目录结构
12345678910111213141516171819202122├── data│ ├── dog1_1024_683.jpg //测试数据,需要从链接下载│ ├── dog2_1024_683.jpg //测试数据,需要从链接下载├── inc│ ├── model_process.h //声明模型处理相关函数的头文件│ ├── sample_process.h ...
【MindStudio训练营第一季】体验MindStudio应用开发
基本概念
MindStudio
MindStudio提供了AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务,依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio实现了在一个工具上高效便捷地开发AI应用。
MindX SDK
提供昇腾AI处理器加速的各类AI软件开发套件(SDK),提供极简易用的API,加速高性能AI应用的开发。核心组件包含制造质检 mxManufacture、视觉分析 mxVision、特征聚类 mxlndex和大模型微调套件 mxTuningKit。
环境配置
安装MindStudio
从MindStudio中下载MindStudio安装包,这里我下载的是5.0.RC3。
下载完成后按照安装引导进行安装。
安装完成后,进入界面,可以先使用空白项目,为了方便设置中文File->Settings->Editor->Natural Languages。
准备远程开发环境
利用华为云新建远程开发环境,这里使用官方提供的共享镜像,如使用全新环境,需要安装CANN和MindX SDK。
配置CAN ...
【CANN训练营第三季】实验三
实现了MobileNetV2的推理
应用分析
下载的模型为MobileNetv2,是一个图像分类模型。整体的开发流程为资源初始化->DVPP初始化和模型加载->数据预处理->模型推理->数据后处理->资源释放
输入输出数据
输入数据为224*224大小的图片,格式为NHWC(TF模型转换过来的);
输出为一千维的向量;
数据预处理和后处理
预处理需要色域转换、尺寸缩放、数据归一化;对于输出数据选择置信度最高的五个输出索引值。
模型转换
ATC转换代码
1atc --model=mobileNetv2.pb --framework=3 --output=mobilenet_v2_aipp --output_type=FP32 --soc_version=Ascend310 --input_shape="input:1,224,224,3" --log=info --insert_op_conf=mobilenet_v2_tf_aipp.cfg
framework=3指TensorFlow;
input_shape为 NHWC;
inse ...
【CANN训练营第三季】实验二
实验要求
JPEG图片解码+图片缩放 功能串联;
PNG图片解码+图片缩放 功能串联;
判断输入图片格式,自动选择解码分支;
内存复用。
代码框架
根据实验要求,需要实现的功能主要就是图片的读取,JPEG和PNG图片的解码,利用VPC实现图片缩放,缩放后图片的保存。
变量定义
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647typedef enum Result{ SUCCESS = 0, FAILED = 1} Result;typedef struct PicDesc{ std::string picName; uint32_t width; uint32_t height; uint32_t jpegDecodeSize;} PicDesc;static void *GetDeviceBufferOfPicture(const PicDesc &picDesc, uint3 ...
【CANN训练营第三季】实验一
获取实验环境
采用共享镜像,创建基于Ascend 310的环境,用户使用HwHiAiUser。
模型准备
格式转换
由于获取的StarGAN模型为PyTroch训练得到的ONNX格式,需要使用ATC转换为能适配昇腾的OM模型
模型测试
使用msame工具测试转换后的模型
编译代码
运行代码
实验结果
图片1
图片2
original
brownHair male young
blondHair female old
代码详解
代码结构
1234567891011121314151617181920212223242526272829.├── CMakeLists.txt // cmake file├── data // 原图像│ ├── input_1.jpg│ └── input_2.jpg├── inc // 头文件│ ├── dvpp_cropandpaste.h│ ├── dvpp_jp ...
【CANN训练营第三季】应用开发
应用开发流程
开发分析
应用开发分为七个流程,可以分为三个方面:初始化、模型相关、释放。
执行流程
模型
模型输入与输出
StatGAN的输入为128*128*3的图片和五个属性设置;输出为一张128*128*3的图片。
为了满足模型要求的输入,数据预处理中需要首先在图片中裁剪178*178大小的区域再Resize到128*128,之后作归一化操作。
输出中需要将数据范围由[-1,1]转换到[0,1]以及进行通道调整。
模型转换
需要将PyTorch模型转换为昇腾AI处理器支持的.om格式离线模型,使用的工具为ATC(Ascend Tensor Compiler)。
对于StarGAN而言,原始模型为onnx模型,转换之前需要进行转换分析,确定输入形状和格式,确定色域转换和归一化操作。
转换模型之后,可以利用msame工具进行测试以判断模型的性能及推理是否正常。
接口说明
内存管理
在Host、Device和DVPP上进行内存申请、初始化和释放。
数据传输
Host、Device、DVPP内存之间的数据传输
模型管理
从模型文件中加载模型由用户自行管理内存使 ...
【CANN训练营第三季】【预备2】StarGAN
背景
StarGAN是发表于CVPR 2018是的一个工作,主要解决多域图像转换的问题。
之前的Pix2Pix和CycleGAN解决了两个域之间基于匹配数据和非匹配数据的转换,但在实际应用中需要多个域之间的相互转换,这就需要训练多个生成器,而StarGAN使用一个生成器实现了多个域的转换。
创新点
在输入侧加入了域信息,可以只使用一个生成器和判别器来uexi多个域之间的映射,并从所有域的图像中进行训练。
通过加入掩码向量的方法实现了多个数据集之间的多域图像转换。
网络模型
处理流程为:
将图像与目标生成域输入到生成网络G中合成fake图片;
将fake图片和真实图片输入到判别器D中判断来自哪个域;
一致性约束,要求将生成的fake图片和原始图片的域信息通过生成器G输出重建的原始输入图片
网络结构
生成器网络结构
判别器网络结构,采用PatchGAN结构,对局部图像块进行真假分类
损失函数
对抗损失
判别器能否分类真实图像和生成图像
域分类损失
starGAN在判别器的顶部引入了一个复杂的辅助分类器。判别器的训练目标为将真实图像的域分类损失最小化,以学习真实图像的正确 ...
【CANN训练营第三季】数字视觉预处理文档篇
认识
图像数据预处理应用在将源图的格式与模型要求不一致时,需要将源图处理为符合模型的要求,典型应用场景有:
视频解码与缩放;
图片解码、缩放与格式转换;
抠图、缩放与格式转换。
CANN提供了两种处理图像/视频数据的方式:
AIPP(Artificial Intelligence Pre-Processing)
AIPP是指在AI Core上完成数据预处理。AIPP区分为静态AIPP和动态AIPP。
静态AIPP用于多Batch情况下共用同一份AIPP参数;
动态AIPP用于多Batch情况下使用不同的AIPP参数。
DVPP(Digital Vision Pre-Processing)
DVPP是昇腾AI处理器内置的图像处理单元,通过AscendCL媒体数据处理接口提供媒体处理硬加速能力。
AIPP、DVPP可以分开独立使用,也可以组合使用。组合使用场景下,一般先使用DVPP对图片/视频进行解码、抠图、缩放等基本处理,但由于DVPP硬件上的约束,DVPP处理后的图片格式、分辨率有可能不满足模型的要求,因此还需要再经过AIPP进一步做色域转换、抠图、填充等处理。
D ...