1. 功能与代码文件说明
hb_compile是算法工具链PTQ量化流程所需使用的命令行工具,其实现过程通过Python脚本代码构建,通过以下命令我们可以定位查查看命令的实现过程。
用户侧接口命令文件
Python安装包位置
业务主流程代码(Python安装包文件/usr/local/lib/python3.10/dist-packages/horizon_tc_ui/hb_compile.py)
2. 使用方式
从上述代码,我们可以看出使用hb_compile工具对模型进行量化编译时有
两种模式:
- 快速性能评测模式:以参数 --fast-perf作为检查开启条件
- 传统模型转换编译模式:以参数 --config / -c 作为检查开启条件
注意:两种模式在编译时必须存其一,即:一个都没有是错误的,两个都有也是错误的。
四个处理方向
序号
判断条件
动作
说明
--config / -c
--model
--fast-perf
1 √ onnx_config_mode(config) 传统模型转换编译:根据配置文件进行onnx编译
2 √ √ fast_perf_mode(model, proto, march, input_shape) 快速性能评测:自动生成配置文件后进行onnx编译 3 √ √ bc_config_mode(config, model, march)
BC编译模式:对通过hbdk4.compiler修改后的bc模型进行后续的编译和节点移除
注:
1. 该方式需要--model为.bc结尾的模型文件
2. 该方式对--config中的模型文件不检查&不使用,但要保证yaml语法正确 4 √ check_mode(model, proto, march, input_shape) 模型可支持性检查
2 √ √ fast_perf_mode(model, proto, march, input_shape) 快速性能评测:自动生成配置文件后进行onnx编译 3 √ √ bc_config_mode(config, model, march)
BC编译模式:对通过hbdk4.compiler修改后的bc模型进行后续的编译和节点移除
注:
1. 该方式需要--model为.bc结尾的模型文件
2. 该方式对--config中的模型文件不检查&不使用,但要保证yaml语法正确 4 √ check_mode(model, proto, march, input_shape) 模型可支持性检查
3. 典型场景
> onnx_config_mode
传统模型转换编译,用于根据用户指定的配置文件进行onnx编译。
> fast_perf_mode
基于自动生成配置文件进行快速性能评测,可用于部分yaml文件构建困难的场景可以通过该模式生成的yaml进行微调后使用。
> bc_config_mode
BC模型修改再编译,可用于在编译前对bc模型进行多batch输入拆分、插入特性前处理算子等。
同一中间表示(bc模型)跳过耗时的校准和量化阶段,直接应用不同编译配置
> check_mode
模型可支持性检查,对指定模型进行检查以判断工具链对齐支持能力。
