0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用TPU-MLIR进行模型转换

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-08-21 10:41 次阅读

使用TPU-MLIR进行模型转换的时候我们会在各个阶段对比模型每一层输出的相似度,以确保模型转换的正确性,同时也能够在适配过程中更方便地定位问题来源。

但我们并不知道转换后的模型精度如何,特别是INT8量化后的模型输出,往往与原模型输出存在较大的区别(当然这个区别是在可接受的范围内的),光靠对比输出的相似度我们并不能看出INT8模型的表现究竟怎么样。所以,TPU-MLIR也提供了精度验证的接口,来检验转换后的模型表现。

在进行精度验证前,首先我们需要准备好用于验证的数据集,因为TPU-MLIR里没有自带完整的测试集,所以用于精度验证的数据集需要大家自行下载,对于分类网络主要使用的是IMAGENET2012的验证集,一共有5w张图片,而目标检测网络使用的是COCO2017的验证集,共5k张图。TPU-MLIR后续还会逐步支持更多类型,例如NLP领域的网络,未来也会开放。

另外,对于分类数据集的摆放方式,是将5w张图片分别放在1000个子目录中,对应imagenet里的1000个类别,每个类别下有50张属于该类别的图片,这类摆放方式自然就不再需要额外的标签文件;

对于COCO数据集的话相对比较简单,所有的图片都是放在一个目录下,每张图片的类别信息都会从对应的json文件中提取;

wKgaomTeyfWAJ1I5AAIyc10Ac1Y100.jpg

准备好数据集后,我们就可以直接使用model_eval这一接口对mlir模型进行精度验证,主要会用到这五个参数

model_file与dataset参数用于提供模型与数据集路径

count用于明确我们要用来验证精度的图片数量,默认情况下是使用整个目录下的数据集

dataset_type则是根据验证的模型类型用于指定对应数据集的加载方式

postprocess_type则是用来明确输出的后处理方式,然后用相应的metrics来计算精度

那这里不需要提供预处理信息吗?

其实在mlir模型的input_op里就已经包含了对数据的预处理信息,主要包括mean, scale, resize的尺寸与resize时是否保持高宽比, 输入图片数据的pixel_format等,其中Mean和scale用于对输入的pixel value进行线性变换,与大家常用的mean与std相似,只不过它把normalize的部分融合进了mean与std中。

而对于模型的评估方式,分类网络我们主要使用的是Top1与Top5 accuracy,也就是看模型输出的概率中排序最高与前五的类别里是否包含了正确的类别,而目标检测网络我们使用的则是COCO官方的12个评估指标,从不同方面去验证mlir模型的精度。

先将模型输出的检测框经过non-maximum suppression剔除掉重叠与概率较低的候选框后再用剩下的计算与ground truth bounding box的IoU,然后根据不同指标的计算规则计算出相应的average precision与average recall。比如第一个指标是指从IoU=0.5到0.95每间隔0.05计算一次模型针对单个类别的precision, 然后取平均数,再将所有类别的precision累加起来取平均数,这其实就是mAP的其中一种计算方式,而其它两个指标只采用了单个IoU threshold来计算AP。

COCO数据集还会按照物体所占的像素数量来区分大中小物体,TPU-MLIR也会分别对这些不同尺寸物体的检测结果计算AP与AR来验证mlir模型在检测大中小物体上的精度

至于这个AR max=1,10和100指的是分别限制每张图片只有1,10和100个概率最高的检测结果,然后与第一个AP的计算方式相似,按照IoU threshold从0.5到0.95,每隔0.05计算一次单个类别的AR,先取AR在不同IoU下的平均值,再取AR在不同类别下的平均值。

TPU-MLIR目前在github上发布了一系列待解决的问题,非常欢迎对AI编译器感兴趣且想要在空闲时间丰富自己开源项目经历的朋友们来参与,与我们一起完善TPU-MLIR这个新一代的AI编译器。

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 网络
    +关注

    关注

    14

    文章

    7557

    浏览量

    88737
  • 数据集
    +关注

    关注

    4

    文章

    1208

    浏览量

    24690
  • 模型转换
    +关注

    关注

    0

    文章

    3

    浏览量

    5192
  • nlp
    nlp
    +关注

    关注

    1

    文章

    488

    浏览量

    22033
收藏 人收藏

    评论

    相关推荐

    TPU-MLIR开发环境配置时出现的各种问题求解

    按照 TPU-MLIR 开发指南进行环境配置: 2.1. 代码下载 代码路径: https://github.com/sophgo/tpu-mlir 克隆该代码后, 需要在Docker中编译
    发表于 01-10 08:02

    FP16转换报错的原因?

    FP32转换正常,FP16转换报错(model_transform正常) 运行命令为: model_deploy.py--mlir
    发表于 01-10 08:01

    【算能RADXA微服务器试用体验】+ GPT语音与视觉交互:2,图像识别

    /download.sh 下载完成后,应该可以看到文件夹中出现以下模型: ./models ├── BM1684 │├── yolov8s_fp32_1b.bmodel# 使用TPU-MLIR编译,用于
    发表于 07-14 23:36

    在“model_transform.py”添加参数“--resize_dims 640,640”是否表示tpu会自动resize的?

    resize和letterbox的处理,在“TPU-MLIR入门快速指南.pdf”里的“使用TPU做前处理”里提到了“图像裁剪”,没看明白,能详细解释下的吗?
    发表于 09-18 07:56

    TPU和GPU的带宽模型

    带宽模型最大的限制就是这些计算是针对特定矩阵大小的,计算的难度在各种尺寸之间都不同。例如,如果你的batch size是128,那么GPU的速度会比TPU稍快一点。如果batch size小于128
    的头像 发表于 10-21 09:20 4341次阅读

    如何给TPU-MLIR添加新的算子

    如何给TPU-MLIR添加新的算子
    的头像 发表于 08-18 11:29 698次阅读
    如何给<b class='flag-5'>TPU-MLIR</b>添加新的算子

    TPU-MLIR中的融合处理

    TPU-MLIR中的融合处理
    的头像 发表于 08-18 11:29 491次阅读
    <b class='flag-5'>TPU-MLIR</b>中的融合处理

    基于STE的QAT算法

    TPU-MLIR之量化感知训练(下)
    的头像 发表于 08-21 10:46 650次阅读
    基于STE的QAT算法

    TPU-MLIR之量化感知训练

    TPU-MLIR之量化感知训练(上)
    的头像 发表于 08-21 10:47 797次阅读
    <b class='flag-5'>TPU-MLIR</b>之量化感知训练

    TPU-MLIR量化敏感层分析,提升模型推理精度

    背景介绍TPU-MLIR编译器可以将机器学习模型转换成算能芯片上运行的bmodel模型。由于浮点数的计算需要消耗更多的计算资源和存储空间,实际应用中往往采用量化后的
    的头像 发表于 10-10 10:17 1369次阅读
    <b class='flag-5'>TPU-MLIR</b>量化敏感层分析,提升<b class='flag-5'>模型</b>推理精度

    如何适配新架构?TPU-MLIR代码生成CodeGen全解析!

    背景介绍TPU-MLIR的CodeGen是BModel生成的最后一步,该过程目的是将MLIR文件转换成最终的Bmodel。本文介绍了CodeGen的基本原理和流程,并记录了针对BM1684X等新架构
    的头像 发表于 11-02 08:34 1695次阅读
    如何适配新架构?<b class='flag-5'>TPU-MLIR</b>代码生成CodeGen全解析!

    模糊图像变高清:TPU-MLIR引领EDSR向MDSR的智能转换

    模型介绍EDSR模型,全称为enhanceddeepsuper-resolutionnetwork(增强的深度学习超分辨率重建网络)。该模型可以对指定图片进行超分辨率操作,提高清晰度。
    的头像 发表于 12-11 17:51 1403次阅读
    模糊图像变高清:<b class='flag-5'>TPU-MLIR</b>引领EDSR向MDSR的智能<b class='flag-5'>转换</b>!

    深入学习和掌握TPU硬件架构有困难?TDB助力你快速上手!

    快速定位BModel与原始模型推理结果不一致的问题,进而修复TPU-MLIR的编译或模型出错点。下图是TDB工具集的框架。TDB主要是基于Python开发的,其核心功能
    的头像 发表于 12-22 08:33 710次阅读
    深入学习和掌握<b class='flag-5'>TPU</b>硬件架构有困难?TDB助力你快速上手!

    重塑翻译与识别技术:开源语音识别模型Whisper的编译优化与部署

    :通过修改TPU-MLIR编译器代码,可以对Whisper模型性能进行深度优化,使得模型在SOPHONBM1684X处理器上运行时间减少到原来的一半,本篇文章将带
    的头像 发表于 01-06 08:33 3649次阅读
    重塑翻译与识别技术:开源语音识别<b class='flag-5'>模型</b>Whisper的编译优化与部署

    如何高效处理LMEM中的数据?这篇文章带你学会!

    WeightReorder是TPU-MLIR的一个pass(参考TPU-MLIR编译流程图),其完成了对部分常量数据的Layout变化和合并。本文介绍其中ConvlotionKernel
    的头像 发表于 01-19 08:33 813次阅读
    如何高效处理LMEM中的数据?这篇文章带你学会!