3.2.7 编译Paddle模型
最后更新于
最后更新于
BMPADDLE是针对Paddle Paddle的模型编译器,可以将模型文件(inference.pdmodel,inference.pdiparams)编译成 BMRuntime 所需的文件。而且在编译的同时,可选择将每一个操作的NPU模型计算结果和CPU的计算结果进行对比,保证正确性。
命令行形式:
参数介绍:
Python模式:
注意:
--model 参数指定到模型所在文件夹那一级,但要特别注意,PaddlePaddle模型有2种:组合式(combined model)和非复合式(uncombined model);组合式就是model + 权重,__model__文件夹下有很多文件,每一个文件是一层,这种模型名称必须用__model__;如果是非组合式,一定要把模型名称修改为*.pdmodel和*.pdiparams
shapes和descs中的变量顺序、名称要和实际模型一致,不能写错
对于模型中带nms操作的,并且cmp==true时descs参数必填;对于int32类型,范围不能填重复的值,比如608*608的输入,要填608,609,但生效的就是608;对于float类型,则没有这个限制;对于不填的输入,其取值范围默认都是0-1。
若成功,输出的 log 最后会看到以下信息:
成功后,将在指定的文件夹中生成一个compilation.bmodel的文件,该文件则是转换成功的 bmodel,用户可以重命名。
args
type
Description
model
string
Necessary.paddlepaddle model directory
input_names
string
Necessary.Set name of all network inputs one by one in sequence. Format “name1,name2,name3”
shapes
string
Necessary. Shapes of all inputs, default use the shape in prototxt, format [[x,x,x,x],[x,x],…], these correspond to inputs one by one in sequence
descs
string
Optional. Descriptions of inputs, format "[serial number, data type, lower bound, upper bound]", e.g., "[0, uint8, 0, 256]", default "[x, float, 0, 1]"
output_names
string
Necessary. Set name of all network outputs one by one in sequence. Format “name1,name2,name3”
net_name
string
Necessary. Name of the network
opt
int
Optional. Optimization level. Option: 0, 1, 2, default 1.
dyn
bool
Optional. Use dynamic compilation, default false.
outdir
string
Necessary. Output directory
target
string
Necessary. Option: BM1682, BM1684; default: BM1682
cmp
bool
Optional.Check result during compilation. Default: true
mode
string
Optional. Set bmpaddle mode. Option: compile, GenUmodel,summary, show, check. Default: compile.
enable_profile
bool
Optional. Enable profile log. Default: false
list_ops
Optional. List supported ops.