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