随着transformer模型在各个领域大杀四方,包括我常接触的检测,追踪,语音识别等各种领域都取得了远超先辈的成就,因此,开始有越来越多的厂商讨论如何将transformer模型部署起来,但是我们都知道,由于transformer中有大量的matmul等操作,致使其计算量远超普通的cnn网络,给部署带来困难(这部分后面再说)。
综上考虑,我们大致介绍一下部署方面的点
Transformer模型部署方式
目前大家框架各种各样,据我了解总结下来大致分为这么几种:
1. mnn等
这种方式看到一篇写的不错也比较详细的文章:
记录使用 Swin Transformer主干网络去实现分类,并转化NCNN、TNN、MNN模型以及部署
但是这种方式更多的比较常用于手机等arm端,对于很多比如fpga,npu等嵌入式场景支持比较少(只是比较少,不是不支持奥)
2. TurboTransformers
同样是腾讯开源的一款非常不错的工具,本人已经亲测了,各方面都还不错。
怎么说呢,turbotransformers可以说是一个专为transformer定制化的工具,我们都知道mnn这些工具都是首先把encoder转成matmul,softmax等一个个算子的组合,然后再顺序执行。
而turbotransformers可以简单理解为把整个encoder或者decoder等看成一整个算子(你可以简单这么理解哈哈),内部使用指令集及存取优化等对这个算子进行优化,这样就消除了算子与算子之间的延迟

这篇博客探讨了Transformer模型在各领域的广泛应用及其部署挑战,主要介绍了四种模型部署方式:1) MNN,常见于手机端;2) TurboTransformers,提供专门的Transformer优化;3) TVM,通过指令集优化模型;4) ONNXRuntime,支持多种硬件并提供性能优化。文章强调了ONNXRuntime的广泛硬件支持和性能提升,并提到将进行不同框架的性能对比测试。
298

被折叠的 条评论
为什么被折叠?



