为什么要使用delegate
- delegate是什么意思?
性能优化的方法:
- 量化
- 剪枝
- 权重聚集
- 利用硬件加速器
其中,当我们使用硬件加速器的时候,可以获得相应硬件的特性,提高性能,降低功耗。但是硬件加速器有很多种,究竟该用哪一种,这么多种该如何管理。
怀揣着管理和维护加速委托的目的,这个时候delegate就应运而生。 本质是一种OP的实现管理机制。
如果说GPU的kenel, CPU的kenel,DSP的kenerl都实现了ADD这个OP,但是真正运行的实际,到底采用哪个硬件的的OP呢?
delegate就可以进行选择,在一个比如我有一个新硬件NPU,哪NPU实现的OP又该如何注册呢?这个时候还是delegate。
如何使用delegate
说到这里的话,其实直接看官网的文档是最好的,这里列举二个官网源代码中的例子来说明。
TfLiteContext 一个接口,连接tflit delegate运行时的。
- 简单举例说明delegate工作原理
假设delegate 仅支持add op,在运行该模型的时候,run time的分割算法,会将node拆分成二个集合。一个是delegate,另一个则不是delegate。
- 理由1:deletae
- 理由2:
之后:
目前官网都有哪些delegate
硬件加速器的抽象层:NNAPI(Android)
如何决定是否使用delegate
参考资料
【GITHUB】TensorFlow Lite C++ image classification demo
【DOC】TFLITE Delegate document
【DOC】TensorFlow Lite 委托
Delefate YouTobe
YouTube TFLITE delegate