专栏算法工具链导出hbm模型文件反而变大了

导出hbm模型文件反而变大了

解答中
默认103682026-04-07
68
7

原模型1.4G,但是使用hb_compile -c config.yaml导出的hbm文件反而增大到了3G,配置文件内容如下

calibration_parameters:

optimization: run_fast

compiler_parameters:

compile_mode: latency

core_num: 1

jobs: 6

max_time_per_fc: 0

optimize_level: O2

input_parameters:

input_layout_rt: NHWC

input_layout_train: NHWC

input_name: data

input_shape: 1x768x1280x3

input_space_and_range: ''

input_type_rt: nv12

input_type_train: bgr

norm_type: no_preprocess

model_parameters:

layer_out_dump: false

march: nash-m

onnx_model: /models/model_best_fixed.onnx

output_model_file_prefix: model_best_fixed

remove_node_type: Quantize;Transpose;Dequantize;Cast;Reshape;Softmax

working_dir: /open_explorer/model_output

算法工具链
技术深度解析征程6
评论2
0/1000
  • YCJ
    Lv.4

    是否方便提供一下onnx模型文件 ,几张校准数据 和 使用的yaml配置?

    17小时前
    0
    1
    • 默认10368回复YCJ:
      onnx模型不太方便提供kuxiao_org.svg,运行的日志可以吗。hb_compile.log+config.yaml
      11小时前
      0
  • Luomantiker
    Lv.5

    您好,感谢反馈!

    原始 ONNX 模型约 1.4G,经 hb_compile 编译后生成的 .hbm 文件增大至 3G,这种情况在特定配置下确实可能发生的。

    1. 模型结构调整:工具链考虑推理性能,会尽可能将算子调度到 BPU 上执行,这可能引入额外的内存对齐、中间 buffer 或 layout 转换节点,导致模型体积膨胀;

    2. 平台的内存对齐机制:所有张量按硬件要求的字节对齐,小张量或非对齐结构会被填充,累积后显著增加模型描述信息大小;

    3. 删除算子等引入:如删除 TransposeReshape 后,若后续算子不兼容 NHWC 布局,编译器可能自动插入新的转换节点,反而增加图复杂度;

    4. 引入隐式转换层:比如模型内部色彩空间转换等,编译阶段可能自动添加相关算子,和权重参数等。

    建议尝试:

    1. 移除 optimization: run_fast等,用标准编译流程;
    2. 仅保留删除 Quantize 和 Dequantize**,避免误删关键结构算子;
    3. input_type_rt使用featuremap编译,排除 nv12 预处理引入的额外节点;
    4. 编译后使用 hb_model_info your_model.hbm 查看内存占用明细,确认是否为静态内存(权重)膨胀还是中间 buffer 增加。

    若调整后问题仍存在,建议提供:模型文件 ,几张校准数据 和 使用的yaml配置。

    我们将进一步协助分析是否为模型结构或量化策略导致的异常膨胀。

    感谢支持!

    2026-04-08
    0
    4
    • 默认10368回复Luomantiker:

      请问正常导出的hbm文件是会比原模型要小一些吗,还是通常都会比原模型大

      2026-04-08
      0
    • Luomantiker回复默认10368:

      如下为googlenet编译户的信息供参考:编译后比原来的模型是小一些的,但整个与模型本身的结构,layer/block的设计以及相互间流转的tensor的shape等优化,如果与硬件契合度比较好不需要进行大的改动,先对来说会较小一谢。

      2026-04-08
      0
    • 默认10368回复Luomantiker:

      能提供个标准的config。yaml文件参考吗,有些参数或者什么要加现在有些拿捏不准

      17小时前
      0
    • 默认10368回复默认10368:

      我目前使用--fast-perf这种来转换模型,生成的是3G左右的hbm,但是如果换成其他配置。比如:

      calibration_parameters:

      calibration_type: 'default'

      compiler_parameters:

      compile_mode: latency

      core_num: 1

      jobs: 16

      max_time_per_fc: 0

      optimize_level: O2

      debug: False

      input_parameters:

      input_layout_rt: featuremap

      input_layout_train: NHWC

      input_name: data

      input_shape: 1x768x1280x3

      input_space_and_range: ''

      input_type_rt: nv12

      input_type_train: bgr

      norm_type: no_preprocess

      model_parameters:

      layer_out_dump: false

      march: nash-m

      onnx_model: /models/model_best_fixed.onnx

      output_model_file_prefix: model_best_fixed

      remove_node_type: Quantize;Dequantize

      working_dir: /model_close_debug

      这种配置生成的反而更大了,能到达3.6G

      17小时前
      0