Skip to content

Conversation

@tpoisonooo
Copy link
Contributor

@tpoisonooo tpoisonooo commented Jun 13, 2022

背景

refactor 量化表结构成 .ini 格式,上个版本的量化表没法再加新的 opr

修改前:https://github.com/tpoisonooo/cpp-syntactic-sugar/blob/master/ini-config/ncnn.txt
修改后:https://github.com/tpoisonooo/cpp-syntactic-sugar/blob/master/ini-config/ncnn.ini

修改内容

  • 新增一个 ini_config 读写工具,200 行。
  • ncnn2table 命令新增选项: format=ini
    • 选 ini 就是 .ini 可读结构
    • 默认还是以前的
  • ncnn2int8 增加对 .ini 解析
  • 把 model_writer 和 net_quantizer 的声明和实现拆开了,避免动一行都要重编所有

测试方法

测试了 sqznet 分别用 .ini/.txt 跑 ncnn2tablencnn2int8,对比最终 .bin 和 .param 文件的 md5 值相同。

@nihui
Copy link
Member

nihui commented Jun 13, 2022

type = "Add" 这种ncnn没有的op type是怎么来的

,] 结尾不好看

zero_point ncnn没有非对称量化实现

LayerNorm scale系数看上去很重复,需要quantize axis?

weight = input_scale = zero_point = 顺序不符合人类阅读思路,应该总是 input_scale/zero_point 排在前面,weight 排在后面

改动大,新建工具,而不是在老工具上堆特性

格式看起来就是个 ini,读写 ini 直接写一个就行,没必要搞第三方toml代码

@tpoisonooo
Copy link
Contributor Author

type = "Add" 这种ncnn没有的op type是怎么来的

,] 结尾不好看

zero_point ncnn没有非对称量化实现

LayerNorm scale系数看上去很重复,需要quantize axis?

weight = input_scale = zero_point = 顺序不符合人类阅读思路,应该总是 input_scale/zero_point 排在前面,weight 排在后面

改动大,新建工具,而不是在老工具上堆特性

格式看起来就是个 ini,读写 ini 直接写一个就行,没必要搞第三方toml代码

嗯,所以先发 PR 看看让不让用 toml 。

都是 part1 了,所以 add/zeropoint 这些不支持的, part2 才会发啊。

Layernorm 系数是 per-channel 的,偶尔有的系数不一样。transformer 里 layernorm inp 离心值需要保留才能不损失精度。

@tpoisonooo tpoisonooo mentioned this pull request Jun 14, 2022
@tpoisonooo tpoisonooo changed the title [WIP] feat(tools/quantize): support toml [WIP] feat(tools/quantize): refactor quant table Jun 16, 2022
@tpoisonooo tpoisonooo changed the title [WIP] feat(tools/quantize): refactor quant table refactor quant table Jun 16, 2022
@tpoisonooo tpoisonooo changed the title refactor quant table [WIP] refactor quant table Jun 16, 2022
@tpoisonooo tpoisonooo changed the title [WIP] refactor quant table refactor quant table Jun 16, 2022
@tpoisonooo
Copy link
Contributor Author

这个 PR 我没有要改的了,坐等 CI 。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants