FP32 Bmodel转化
Last updated
Last updated
BM1684平台同时兼容支持fp32模型,用户可以简化流程之间验证模型的可用性。基于BMNNSDK2提供的BMNet工具链可以很方便的转换。当前BMNet 已支持绝大部分开源的 Caffe,TensorFlow,MXNet 和 PyTorch 网络层,更多的网络层正在不断开发中,用户可使用这些网络层进行网络编译,生成 bmodel 文件。
BMNETC是针对caffe的模型编译器,可将某网络的caffemodel和prototxt编译 成BMRuntime所需要的文件。而且在编译的同时,支持每一层的NPU模型计算结 果都会和CPU的计算结果进行对比,保证正确性。 Caffe模型转换的主要操作工具介绍如下:
Command name: bmnetc - BMNet compiler command for Caffe model
以sdk中的SSD模型编译float32 bmodel为例:
脚本中的主要内容如下:
执行完脚本后正常的输出结果如下:
编译生成的模型存放在如下目录:
至此生成bmodel. 执行如下命令,检测模型的精度回归:
正常结束后提示如下:
有“+++ The network[ssd300-caffe] stage[0] cmp success +++”的提示,则模型编译流程正确,与原生模型的精度一致。
此外,BMNETC还有python版本支持,简单使用配置如下:
bmnetc成功后,将在指定的文件夹中生成一个compilation.bmodel的文件,该文件则是转换成功的bmodel,用户可以重命名。 若用户在bmnetc时使用了cmp=true模式,则会在指定的文件夹中生成一个input_ref_data.dat和一个output_ref_data.dat, 分别是Caffe产生的网络输入参考数据和网络输出参考数据,可用于bmrt_test验证生成的bmodel在芯片运行时结果是否正确。
fp32 bmodel BMNETT是针对tensorflow的模型编译器,在该device下创建graph,可以被编译成BMRuntime所需的文件。而且在编译graph的同时,可选择将每一个操作的NPU模型计算结果和CPU的计算结果进行对比,保证正确性。
通过BMNETT工具可以把TF一般模型进行编译成bmodel,同样支持shell cmd模式以及python模式:
Python模式下简单配置命令如下:
bmnett成功后,将在指定的文件夹中生成一个compilation.bmodel的文件,该文件则是转换成功的bmodel,用户可以重命名。
若用户在bmnett时使用了cmp=true模式,则会在指定的文件夹中生成一个input_ref_data.dat和一个output_ref_data.dat, 分别是Tensorflow产生的网络输入参考数据和网络输出参考数据,可用于bmrt_test验证生成的bmodel在芯片运行时结果是否正确。
对于复杂的tensorflow模型,例如fastrcnn等,目前版本的bmnett暂时不支持,后续会有bmnett_plus版本更新,效率会提升更好。
bmnett 安装
fp32 bmodel BMNETP是针对pytorch的模型编译器,可以把pytorch的model直接编译成BMRuntime所需的执行指令。支持python代码或已经保存的trace文件。在编译model的同时,可选择将每一个操作的NPU模型计算结果和CPU的计算结果进行对比,保证正确性。
通过bmnetp工具可以pytorch模型转换为Bmodel来运行,使用命令如下:
参数介绍:
Python模式下工具支持配置格式如下:
bmnetp成功后,将在指定的文件夹中生成一个compilation.bmodel的文件,该文件则是转换成功的bmodel,用户可以重命名。 若用户在bmnetp时使用了cmp=true模式,则会在指定的文件夹中生成一个input_ref_data.dat和一个output_ref_data.dat, 分别是Pytorch产生的网络输入参考数据和网络输出参考数据,可用于bmrt_test验证生成的bmodel在芯片运行时结果是否正确。
Bmnetp安装:
fp32 bmodel BMNETM是针对mxnet的模型编译器,可以将mxnet格式的模型结构文件和参数文件(比如:lenet-symbol.json和lenet-0100.params)在经过图编译优化后,转换成BMRuntime所需的文件。可选择将每一个操作的NPU模型计算结果和原始模型在mxnet框架上的计算结果进行对比,保证模型转换的正确性。
BMNETM命令可以把mxnet模型转换为bmodel,命令介绍如下:
参数介绍如下:
Python模式下配置接口参数如下:
bmnetm成功后,将在指定的文件夹中生成一个compilation.bmodel的文件,该文件则是转换成功的bmodel,用户可以重命名。 若用户在bmnetm时使用了cmp=true模式,则会在指定的文件夹中生成一个input_ref_data.dat和一个output_ref_data.dat, 分别是Mxnet产生的网络输入参考数据和网络输出参考数据,可用于bmrt_test验证生成的bmodel在芯片运行时结果是否正确。
bmnetm安装:
args
type
Description
model
String
Necessary. Caffe prototxt path
weight
string
Necessary. Caffemodel(weight) path
shapes
string
Optional. 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
net_name
string
Optional. Name of the network, default use the name in prototxt
opt
int
Optional. Optimization level. Option: 0, 1, 2, default 2.
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 bmnetc mode. Option: compile, GenUmodel. Default: compile.
enable_profile
bool
Optional. Enable profile log. Default: false
show_args
Optional. Display arguments passed to bmnetc compiler.
check_model
Optional. Check unsupported layer types from input model.
args
type
Description
model
String
Necessary. Caffe prototxt path
input_names
string
Necessary. Set name of all network inputs one by one in sequence. Format “name1,name2,name3”
shapes
string
Optional. 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
output_names
string
Necessary. Set name of all network outputs one by one in sequence. Format “name1,name2,name2”
net_name
string
Optional. Name of the network, default use the name in prototxt
opt
int
Optional. Optimization level. Option: 0, 1, 2, default 2.
dyn
bool
Optional. Use dynamic compilation, default false.
outdir
string
Necessary. Output directory
target
string
Necessary. Option: BM1684, BM1684; default: BM1684
cmp
bool
Optional.Check result during compilation. Default: true
mode
string
Optional. Set bmnetc mode. Option: compile, GenUmodel. Default: compile.
enable_profile
bool
Optional. Enable profile log. Default: false
args
type
Description
model
String
Necessary. Traced PyTorch model (.pt) path
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
net_name
string
Optional. Name of the network, default use the name in prototxt
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 bmnetc mode. Option: compile, GenUmodel. Default: compile.
enable_profile
bool
Optional. Enable profile log. Default: false
args
type
Description
model
String
Necessary. MxNet symbol .json path
weight
string
Necessary. MxNet weight .params path
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
input_names
string
Optional. Set input name according to .json. They correspond to shapes one by one. Default: “data”. Format “name1,name2,…”.
net_name
string
Optional. Name of the network, default use the name in prototxt
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 bmnetc mode. Option: compile, GenUmodel. Default: compile.
enable_profile
bool
Optional. Enable profile log. Default: false