迈向更高效的图像分类:解析DeiT模型的移植和适配

描述

1. DeiT概述

1.1 项目简介

Deit(Data-efficient image Transformers)是由Facebook与索邦大学的Matthieu Cord教授合作开发的图像分类模型。作为一种基于Transformer架构的深度学习模型,DeiT在保持高性能的同时,能够大大提高数据效率,为图像识别领域带来了颠覆性的变化。

与传统的CNN不同,DeiT模型采用了Transformer的自注意力机制,将图像分割成若干个固定大小的块,并对每个块进行编码,捕捉图像中的长程依赖关系。

本文将为大家介绍如何将DeiT移植到算能BM1684X平台上。

1.2 模型介绍

DeiT目前有3个版本的模型(tiny, small, base),均由12个Attention结构组成,模型区别在于输入的header个数及embed_dim不同。

Attention结构如下图所示:

深度学习attention

不同版本的模型具体参数区别如下表:

深度学习version

2. 模型移植

以下部分介绍如何将DeiT移植到算能BM1684X平台上。

2.1 模型trace

原始DeiT模型基于Pytorch框架训练及推理。算能TPU-MLIR工具链可以编译通过jit trace过的静态模型。

首先进行模型trace,命令如下,需要修改原推理代码。

深度学习trace

2.2 模型编译

以下介绍如何使用算能TPU-MLIR工具链将上一步trace过的模型编译成可以在算能BM1684X上推理的bmodel。在模型移植过程中遇到一些算子边界的处理问题,均已修复。

深度学习transform深度学习deploy

2.3 精度测试

DeiT为分类模型,精度测试采用topk来进行。

精度测试及性能测试结果如下:

深度学习precision

3 小结

总体看移植过程相对顺利,在解决了部分算子边界问题之后可以成功编译出bmodel。F32精度基本可与原始框架对齐。由于第一个Conv stride > 15,在进行F16/BF16转换时遇到比对问题,这部分代码目前仍在重构,生成bmodel过程中这部分采用F32混精度处理。

 

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分