update netrans_py

This commit is contained in:
liangliangou 2024-12-04 08:50:40 +08:00
parent f7b0552329
commit f47488f5b3
1 changed files with 25 additions and 23 deletions

View File

@ -243,11 +243,11 @@ netrans_cli 脚本介绍
### 3.2 生成Inputmeta文件
在netrans_cli目录下使用inputmeta_gen.sh脚本生成inputmeta文件
- 用法: ./inputmeta_gen.sh 以模型文件名命名的模型数据文件夹,例如:
```shell
$ ./inputmeta_gen.sh lenet
... ...
I Namespace(generate='inputmeta', input_meta_output=None, model='lenet.json', separated_database=True, which='generate')
I Load model in lenet.json
```shell
$ ./inputmeta_gen.sh lenet
... ...
I Namespace(generate='inputmeta', input_meta_output=None, model='lenet.json', separated_database=True, which='generate')
I Load model in lenet.json
I Generate input meta lenet_inputmeta.yml
I ----------------Error(0),Warning(0)----------------
@ -260,6 +260,8 @@ total 3400
-rw-r--r-- 1 hope hope 5553 Jun 7 09:21 lenet.json
-rw-r--r-- 1 hope hope 1725178 Jun 7 09:21 lenet.data
-rw-r--r-- 1 hope hope 948 Jun 7 09:35 lenet_inputmeta.yml
```
```
可以看到,最终生成的是*.yml文件该文件用于为Netrans中间模型配置输入层数据集合。<b>Netrans中的量化、推理、导出和图片转dat的操作都需要用到这个文件。因此此步骤不可跳过。</b>
@ -447,13 +449,13 @@ ls -lrt lenet/wksp/asymmetric_affine/
请参照quick_start.md。
# 4 netrans_py
netrans_cli 脚本介绍
netrans_py 脚本介绍
|脚本|功能|使用|
|:---|---|---|
|import_model.py| 模型导入功能,将模型转换成 pnna 支持的格式| python import_model.py model_name|
|inputmeta_gen.py| 预处理模版生成功能,生成预处理模版,根据模型进行对于的修改| python inputmeta_gen.py model_name|
|quantize.py| 量化功能, 对模型进行量化生成量化参数文件| python quantize.sh model_name quantize_data_type|
|quantize_hb.py| 混合量化功能, 对模型进行量化生成量化参数文件| python quantize.py model_name quantize_data_type|
|quantize.py| 量化功能, 对模型进行量化生成量化参数文件| python quantize.py model_name quantize_data_type|
|quantize_hb.py| 混合量化功能, 对模型进行混合量化生成量化参数文件| python quantize_hb.py model_name quantize_data_type|
|infer.py| 推理保存输出的功能,对模型进行推理|python infer.py model_name quantize_data_type<br/>注意:该功能可用于测试模型精度,和开发板上推理结果大体一致|
|dump.py| 推理保存每一层结果的功能,对模型进行推理|python dump.py model_name quantize_data_type<br/>注意:该功能可用于测试模型精度,和开发板上推理结果大体一致|
|export.py|导出功能,将量化好的模型导出成 pnna 上可以运行的runtime| python export.py model_name quantize_data_type|
@ -466,7 +468,7 @@ netrans_cli 脚本介绍
### 4.1 导入模型
在netrans_py目录下使用import_model.py脚本进行导入
- 用法1import_model.py 以模型文件名命名的模型数据文件夹,例如:
- 用法1python import_model.py 以模型文件名命名的模型数据文件夹,例如:
```shell
$ python import_model.py lenet
```
@ -479,10 +481,10 @@ netrans_cli 脚本介绍
### 4.2 生成Inputmeta文件
在netrans_py目录下使用inputmeta_gen.sh脚本生成inputmeta文件
- 用法: ./inputmeta_gen.sh 以模型文件名命名的模型数据文件夹,例如:
在netrans_py目录下使用inputmeta_gen.py脚本生成inputmeta文件
- 用法: python inputmeta_gen.py 以模型文件名命名的模型数据文件夹,例如:
```shell
$ python inputmeta_gen.sh lenet
$ python inputmeta_gen.py lenet
```
可以看到,最终生成的是*.yml文件该文件用于为Netrans中间模型配置输入层数据集合。<b>Netrans中的量化、推理、导出和图片转dat的操作都需要用到这个文件。因此此步骤不可跳过。</b>
@ -569,20 +571,20 @@ input_meta:
可以根据实际情况对生成的inputmeta文件进行修改。
### 4.3 模型量化
如果我们训练好的模型的数据类型是float32的为了使模型以更高的效率在pnna上运行我们可以对模型进行量化操作量化操作可能会带来一定程度的精度损失。<
如果我们训练好的模型的数据类型是float32的为了使模型以更高的效率在pnna上运行我们可以对模型进行量化操作量化操作可能会带来一定程度的精度损失。
在netrans_py目录下使用quantize.py脚本进行量化操作。
用法1python quantize.sh 以模型文件名命名的模型数据文件夹 量化类型,例如:
用法1python quantize.py 以模型文件名命名的模型数据文件夹 量化类型,例如:
```shell
$ python quantize.sh lenet uint8
$ python quantize.py lenet uint8
```
支持的量化类型有uint8、int8、int16
用法2先执行python quantize.sh 以模型文件名命名的模型数据文件夹 量化类型;
用法2-混合量化先执行python quantize.py 以模型文件名命名的模型数据文件夹 量化类型;
```shell
$ python quantize.sh lenet uint8
$ python quantize.py lenet uint8
```
uint8执行成功会生成lenet_asymmetric_affine.quantize.打开.quantize文件
在最后一行加入需要混合量化的节点名字和类型,如下所示:
@ -591,22 +593,22 @@ $ customized_quantize_layers:
stage1/rebnconvin/conv_s1/Conv_output_0_39: dynamic_fixed_point-i16
input.1_378: dynamic_fixed_point-i16
```
最后执行python quantize_hb.sh 以模型文件名命名的模型数据文件夹 量化类型, 例如:
最后执行python quantize_hb.py 以模型文件名命名的模型数据文件夹 量化类型, 例如:
```shell
$ python quantize_hb.sh lenet uint8
$ python quantize_hb.py lenet uint8
```
混合量化支持的量化类型有uint8
混合量化支持的量化类型有uint8混合量化能提高uint8的模型精度减少量化损失。
### 4.4 模型推理
在netrans_py目录下使用infer.py、dump.py脚本进行推理
- 用法1python infer.sh 以模型文件名命名的模型数据文件夹 数据类型推理成功则会在inf目录下生成输入、
- 用法1python infer.py 以模型文件名命名的模型数据文件夹 数据类型推理成功则会在inf目录下生成输入、
输出的.tensor文件例如
```shell
$ python infer.sh lenet uint8
$ python infer.py lenet uint8
```
- 用法2python dump.py 以模型文件名命名的模型数据文件夹 数据类型推理成功则会在inf目录下生成输入、
每层的输出的.tensor文件例如
@ -618,7 +620,7 @@ $ python quantize_hb.sh lenet uint8
### 4.5 模型导出
在netrans_py目录下使用export.sh脚本进行推理。
在netrans_py目录下使用export.py脚本进行推理。
用法1python export.py 以模型文件名命名的模型数据文件夹 数据类型,例如:
```shell