INT8 Umodel转换INT8 Bmodel
(在最终生成部署文件bmodel之前,可以参考#5精度测试,检查量化精度是否正常,或者使用bmodel查看最终的推理结果) Int8umodel作为一个临时中间存在形式,需要进一步转换为可以在bitmain AI平台执行的bmodel,可以看作int8umodel的部署操作。
此流程会使用SDK提供的BMNETU工具,使用步骤2中的输出作为输入,方便快捷转换,具体使用命令介绍: BMNETU是针对BM1684的UFW(Unified Framework)模型编译器,可将某网络的umodel(Unified Model)和 prototxt编译成BMRuntime所需要的文件。而且在编译的同时,支持每一层的NPU模型计算结 果和CPU的计算结果进行对比,保证正确性。
Command name: bmnetu - BMNet compiler command for UFW model
通过shell脚本方式可以运行,参数介绍:
args
type
Description
model
String
Necessary. UFW prototxt path
weight
string
Necessary. Umodel(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
prec
string
Optional. Data type of Umodel. Option: FP32, INT8. default FP32.
cmp
bool
Optional.Check result during compilation. Default: true
mode
string
Optional. Set bmnetc mode. Option: compile, GenUmodel. Default: compile.
在SDK中的SSD示例中,具体转换指令如下:
最终会在较长运行时间后生成目标bmodel:
可以基于此bmodel在soc/cmodel下做推理。
精度测试
在生成新的int8 bmodel后,网络可能需要验证精度损失,SDK提供不同类型网络的精度比对方式。 1.通过图形界面检查精度差异,参考view_demo. 2.分类网络,通过修改网络输出层添加top-k,参考classify_demo. 3.检测网络,通过ufw测试特定图片,与fp32网络比对,参考detect_demo.
Last updated