proto合并原理
合并原理如图1所示,其中:
- AMCT(Ascend Model Compression Toolkit):AMCT。
- ATC(Ascend Tensor Compiler):昇腾张量编译器,即模型转换工具。
各proto文件说明:
- custom.proto:用户自行准备的自定义文件。
- amct_custom.proto:AMCT提供的文件,包括AMCT自定义层以及caffe-master相较与Caffe1.0的更新层。
- caffe.proto:ATC软件包中内置的文件,该文件相较于Caffe1.0版本的caffe.proto,增加了ATC自定义层及调整了编号顺序。该文件同步合入AMCT软件包。
合并流程以及原则:
- 用户准备自定义的custom.proto,执行AMCT提供的install.py脚本,该脚本会将用户的custom.proto与AMCT提供的amct_custom.proto进行合并,生成中间文件custom.proto。
- 如果custom.proto和amct_custom.proto存在算子编号冲突的场景,则报错,提示用户修改custom.proto的算子编号。
- 如果custom.proto和amct_custom.proto存在算子名相同的场景,则报错,提示用户修改custom.proto的算子名。
- 将生成的中间文件custom.proto与ATC软件包中的caffe.proto进行合并,生成最终的caffe.proto。
- 如果custom.proto和caffe.proto存在算子编号冲突的场景,则报错,提示用户修改custom.proto的算子编号。
- 如果custom.proto和caffe.proto存在算子名相同的场景,做去重处理,以custom.proto为准。
- 最后会根据用户指定的caffe_dir路径,找到用户Caffe工程下的caffe.proto文件,对其进行备份后替换。
- amct_custom.proto中的编号从200000开始(包括200000)。
- caffe.proto中ATC自定义层的编号区间段为:[5000,200000)。
- custom.proto中用户自定义层编号建议区间段小于5000,并且不与ATC提供的caffe.proto中的内置编号冲突。
父主题: 附录