rockchip-linux / rknn-toolkit

BSD 3-Clause "New" or "Revised" License
771 stars 175 forks source link

混合精度量化指定网络无法使用float32 #423

Closed nobody-cheng closed 6 months ago

nobody-cheng commented 6 months ago

rv1126,1.7.1,lprnet模型 在 step1.py 生成的 *.quantization.cfg中添加了 customized_quantize_layers 对应网络层为 float32,执行完后 运行 python step2.py 导出rk模型 运行 python step3.py 输出的信息显示还是 fp16 ` %SC}2NH$GZXH(_7N7OGQO

%YAML 1.2
---
# add layer name and corresponding quantized_dtype to customized_quantize_layers, e.g conv2_3: float32
customized_quantize_layers: 
    "Conv_/newCnn/Conv_3": float32
    "Squeeze_/Squeeze_2_acuity_mark_perm_29": float32
    "Squeeze_/Squeeze_2": float32
    "Transpose_/Transpose_1": float32
    "attach_Transpose_/Transpose/out0_0": float32

quantize_parameters:
    '@attach_Transpose_/Transpose/out0_0:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   75.39134979248047
        min_value:
        -   -233.46035766601562
        zero_point:
        -   193
        scale:
        -   1.2111831903457642
        qtype: fp32
    '@Transpose_/Transpose_1:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   75.39134979248047
        min_value:
        -   -233.46035766601562
        zero_point:
        -   193
        scale:
        -   1.2111831903457642
        qtype: fp32
    '@Squeeze_/Squeeze_2:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   75.39134979248047
        min_value:
        -   -233.46035766601562
        zero_point:
        -   193
        scale:
        -   1.2111831903457642
        qtype: fp32
    '@Squeeze_/Squeeze_2_acuity_mark_perm_29:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   75.39134979248047
        min_value:
        -   -233.46035766601562
        zero_point:
        -   193
        scale:
        -   1.2111831903457642
        qtype: fp32
    '@Conv_/newCnn/Conv_3:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   75.39134979248047
        min_value:
        -   -233.46035766601562
        zero_point:
        -   193
        scale:
        -   1.2111831903457642
        qtype: fp32
    '@Conv_/newCnn/Conv_3:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   1.0758877992630005
        min_value:
        -   -3.549304723739624
        zero_point:
        -   196
        scale:
        -   0.018138010054826736
        qtype: u8
    '@Conv_/newCnn/Conv_3:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   0.0008600142900831997
        qtype: i32
    '@MaxPool_/loc/MaxPool_4:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   12.090832710266113
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.047415029257535934
        qtype: u8
    '@Relu_/feature/feature.32/Relu_5:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   12.090832710266113
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.047415029257535934
        qtype: u8
    '@Conv_/feature/feature.30/Conv_6:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   12.090832710266113
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.047415029257535934
        qtype: u8
    '@Conv_/feature/feature.30/Conv_6:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.3620900809764862
        min_value:
        -   -0.296086847782135
        zero_point:
        -   115
        scale:
        -   0.002581085776910186
        qtype: u8
    '@Conv_/feature/feature.30/Conv_6:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   6.264217518037185e-05
        qtype: i32
    '@Relu_/feature/feature.29/Relu_7:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   6.1887736320495605
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.024269700050354004
        qtype: u8
    '@Conv_/feature/feature.27/Conv_8:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   6.1887736320495605
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.024269700050354004
        qtype: u8
    '@Conv_/feature/feature.27/Conv_8:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.13028395175933838
        min_value:
        -   -0.14586803317070007
        zero_point:
        -   135
        scale:
        -   0.0010829489910975099
        qtype: u8
    '@Conv_/feature/feature.27/Conv_8:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   2.349575333937534e-05
        qtype: i32
    '@MaxPool_/feature/feature.26/MaxPool_9:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   5.532501697540283
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.02169608511030674
        qtype: u8
    '@Relu_/feature/feature.25/Relu_10:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   5.532501697540283
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.02169608511030674
        qtype: u8
    '@Conv_/feature/feature.23/Conv_11:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   5.532501697540283
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.02169608511030674
        qtype: u8
    '@Conv_/feature/feature.23/Conv_11:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.13794973492622375
        min_value:
        -   -0.17427408695220947
        zero_point:
        -   142
        scale:
        -   0.0012244071112945676
        qtype: u8
    '@Conv_/feature/feature.23/Conv_11:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   2.753519220277667e-05
        qtype: i32
    '@Relu_/feature/feature.22/Relu_12:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   5.734591007232666
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.022488592192530632
        qtype: u8
    '@Conv_/feature/feature.20/Conv_13:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   5.734591007232666
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.022488592192530632
        qtype: u8
    '@Conv_/feature/feature.20/Conv_13:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.1067364513874054
        min_value:
        -   -0.1074455976486206
        zero_point:
        -   128
        scale:
        -   0.000839929620269686
        qtype: u8
    '@Conv_/feature/feature.20/Conv_13:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   2.1135847418918274e-05
        qtype: i32
    '@MaxPool_/feature/feature.19/MaxPool_14:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   6.41677713394165
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.025163831189274788
        qtype: u8
    '@Relu_/feature/feature.18/Relu_15:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   6.41677713394165
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.025163831189274788
        qtype: u8
    '@Conv_/feature/feature.16/Conv_16:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   6.41677713394165
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.025163831189274788
        qtype: u8
    '@Conv_/feature/feature.16/Conv_16:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.10809722542762756
        min_value:
        -   -0.14054328203201294
        zero_point:
        -   144
        scale:
        -   0.0009750608005560935
        qtype: u8
    '@Conv_/feature/feature.16/Conv_16:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   2.601372034405358e-05
        qtype: i32
    '@Relu_/feature/feature.15/Relu_17:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   6.803164005279541
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.02667907439172268
        qtype: u8
    '@Conv_/feature/feature.13/Conv_18:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   6.803164005279541
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.02667907439172268
        qtype: u8
    '@Conv_/feature/feature.13/Conv_18:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.11719323694705963
        min_value:
        -   -0.1224261149764061
        zero_point:
        -   130
        scale:
        -   0.0009396836976520717
        qtype: u8
    '@Conv_/feature/feature.13/Conv_18:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   2.5858187655103392e-05
        qtype: i32
    '@MaxPool_/feature/feature.12/MaxPool_19:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   7.017082691192627
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.02751797065138817
        qtype: u8
    '@Relu_/feature/feature.11/Relu_20:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   7.017082691192627
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.02751797065138817
        qtype: u8
    '@Conv_/feature/feature.9/Conv_21:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   7.017082691192627
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.02751797065138817
        qtype: u8
    '@Conv_/feature/feature.9/Conv_21:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.10176920890808105
        min_value:
        -   -0.11293911188840866
        zero_point:
        -   134
        scale:
        -   0.0008419934310950339
        qtype: u8
    '@Conv_/feature/feature.9/Conv_21:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   2.7376239813747815e-05
        qtype: i32
    '@Relu_/feature/feature.8/Relu_22:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   8.290968894958496
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.03251360356807709
        qtype: u8
    '@Conv_/feature/feature.6/Conv_23:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   8.290968894958496
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.03251360356807709
        qtype: u8
    '@Conv_/feature/feature.6/Conv_23:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.19608229398727417
        min_value:
        -   -0.23170341551303864
        zero_point:
        -   138
        scale:
        -   0.001677591004408896
        qtype: u8
    '@Conv_/feature/feature.6/Conv_23:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   5.767133552581071e-05
        qtype: i32
    '@Relu_/feature/feature.5/Relu_24:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   8.766255378723145
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.03437747061252594
        qtype: u8
    '@Conv_/feature/feature.3/Conv_25:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   8.766255378723145
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.03437747061252594
        qtype: u8
    '@Conv_/feature/feature.3/Conv_25:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.16565731167793274
        min_value:
        -   -0.17376145720481873
        zero_point:
        -   131
        scale:
        -   0.0013310540234670043
        qtype: u8
    '@Conv_/feature/feature.3/Conv_25:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   7.101894152583554e-05
        qtype: i32
    '@Relu_/feature/feature.2/Relu_26:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   13.605630874633789
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.05335541442036629
        qtype: u8
    '@Conv_/feature/feature.0/Conv_27:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   13.605630874633789
        min_value:
        -   0.0
        zero_point:
        -   0
        scale:
        -   0.05335541442036629
        qtype: u8
    '@Conv_/feature/feature.0/Conv_27:weight':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   0.5109612941741943
        min_value:
        -   -0.7914353013038635
        zero_point:
        -   155
        scale:
        -   0.005107437260448933
        qtype: u8
    '@Conv_/feature/feature.0/Conv_27:bias':
        dtype: asymmetric_affine
        method: layer
        max_value:
        min_value:
        zero_point:
        -   0
        scale:
        -   0.00010377806756878272
        qtype: i32
    '@images_28:out0':
        dtype: asymmetric_affine
        method: layer
        max_value:
        -   2.1347150802612305
        min_value:
        -   -3.0466322898864746
        zero_point:
        -   150
        scale:
        -   0.020319009199738503
        qtype: u8
eRaul commented 6 months ago

npu实际只支持float16,这个日志是正常的。在混合量化配置中指定float32表示的是该层不量化。