TNN icon indicating copy to clipboard operation
TNN copied to clipboard

Dev transformer

Open ZaoZhe6666 opened this issue 2 years ago • 2 comments

您好,为支持业务端 Transformer 模型,因此在您的项目中添加了包括 ARM 端 Where、Cast、Unsqueeze、Shape、Not、Equal、Greater 算子的支持。同时添加了 ARM 端计算 INT32 类型的支持:先原地转换为 FLOAT,计算后再转回。更详细的说明可以参看 commit 信息中的 README_EVA 文件,以及提及的 iwiki 链接。谢谢。

ZaoZhe6666 avatar Jul 12 '22 02:07 ZaoZhe6666

Binary file is not recommended to be includeds. Please resubmit a PR without source/tnn/tnn.zip

bluaxe avatar Aug 02 '22 06:08 bluaxe

改为使用 Optimizer 来支持INT类型计算,改动包括:

  1. Optimizer 中添加优化器,筛选计算中使用了 INT32 / 输出为 INT8 类型的算子,在算子前后合适位置分别添加 CAST 算子
  2. 删去原有的 TransDataType 函数,不再使用原地交换
  3. 删去部分算子内部逻辑中的 INT32 计算,仅保留原有的 FLOAT 计算逻辑(INT 数据会被 CAST 转为 FLOAT 参与计算)
  4. 添加 FLOAT_TO_INT8 INT32_TO_INT8 的 CAST 支持逻辑
  5. 由于部分 Constant 类型的 Initial 数据,会添加 CAST 算子转换为 FLOAT 类型数据,这类新增算子不应该被默认为 Constant(否则将不会做地址变换),在 base_layer 与 optimizer/layout_reformat 中添加相应的筛选逻辑
  6. equal/greater 算子复用 Binary 的 Float 计算逻辑,在输出后再通过 Cast 算子转为 INT8 类型

ZaoZhe6666 avatar Aug 29 '22 09:08 ZaoZhe6666