8. Lowering
Lowering将Top层OP下沉到Tpu层OP,它支持的类型有F32/F16/BF16/INT8对称/INT8非对称。
当转换INT8时,它涉及到量化算法;针对不同的芯片,量化算法是不一样的,比如有的支持perchannel,有的不支持;
有的支持32位Multiplier,有的只支持8位,等等。
所以Lowering将算子从芯片无关层(TOP),转换到了芯片相关层(TPU)。
8.1. 基本过程

图 8.1 Lowering过程
Lowering的过程,如图所示(Lowering过程)
Top算子可以分f32和int8两种,前者是大多数网络的情况;后者是如tflite等量化过的网络的情况
f32算子可以直接转换成f32/f16/bf16的tpu层算子,如果要转int8,则需要类型是calibrated_type
int8算子只能直接转换成tpu层int8算子
8.2. 混合精度

图 8.2 混合精度
当OP之间的类型不一致时,则插入CastOp,如图所示(混合精度)。
这里假定输出的类型与输入的类型相同,如果不同则需要特殊处理,比如embedding无论输出是什么类型,输入都是uint类型。