proto合并原理

合并原理如图1所示,其中:

各proto文件说明:

图1 proto合并原理

合并流程以及原则:

  1. 用户准备自定义的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的算子名。
  2. 将生成的中间文件custom.proto与ATC软件包中的caffe.proto进行合并,生成最终的caffe.proto。
    • 如果custom.proto和caffe.proto存在算子编号冲突的场景,则报错,提示用户修改custom.proto的算子编号。
    • 如果custom.proto和caffe.proto存在算子名相同的场景,做去重处理,以custom.proto为准。
  3. 最后会根据用户指定的caffe_dir路径,找到用户Caffe工程下的caffe.proto文件,对其进行备份后替换。
  • amct_custom.proto中的编号从200000开始(包括200000)。
  • caffe.proto中ATC自定义层的编号区间段为:[5000,200000)。
  • custom.proto中用户自定义层编号建议区间段小于5000,并且不与ATC提供的caffe.proto中的内置编号冲突。