Deit(Data-efficient image Transformers)是由Facebook与索邦大学的Matthieu Cord教授合作开发的图像分类模型。作为一种基于Transformer架构的深度学习模型,DeiT在保持高性能的同时,能够大大提高数据效率,为图像识别领域带来了颠覆性的变化。
与传统的CNN不同,DeiT模型采用了Transformer的自注意力机制,将图像分割成若干个固定大小的块,并对每个块进行编码,捕捉图像中的长程依赖关系。
本文将为大家介绍如何将DeiT移植到算能BM1684X平台上。
DeiT目前有3个版本的模型(tiny, small, base),均由12个Attention结构组成,模型区别在于输入的header个数及embed_dim不同。
Attention结构如下图所示:
attention
不同版本的模型具体参数区别如下表:
version
以下部分介绍如何将DeiT移植到算能BM1684X平台上。
原始DeiT模型基于Pytorch框架训练及推理。算能TPU-MLIR工具链可以编译通过jit trace过的静态模型。
首先进行模型trace,命令如下,需要修改原推理代码。
trace
以下介绍如何使用算能TPU-MLIR工具链将上一步trace过的模型编译成可以在算能BM1684X上推理的bmodel。在模型移植过程中遇到一些算子边界的处理问题,均已修复。
transformdeploy
DeiT为分类模型,精度测试采用topk来进行。
精度测试及性能测试结果如下:
precision
总体看移植过程相对顺利,在解决了部分算子边界问题之后可以成功编译出bmodel。F32精度基本可与原始框架对齐。由于第一个Conv stride > 15,在进行F16/BF16转换时遇到比对问题,这部分代码目前仍在重构,生成bmodel过程中这部分采用F32混精度处理。
全部0条评论
快来发表一下你的评论吧 !