You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看ONNX文件中各层的大小,分析文件体积构成因素?

分析ONNX文件各层大小及体积贡献因素的方法

一、用ONNX官方库直接统计参数大小

通过Python的onnx库可直接解析ONNX模型内部结构,统计各层(参数张量)的大小,步骤如下:

  1. 安装依赖:
pip install onnx
  1. 运行分析脚本:
import onnx
from onnx import numpy_helper
import os

# 加载目标ONNX模型
model = onnx.load("your_model.onnx")

# 遍历所有可训练参数(initializer)并统计大小
print("=== 各层参数大小统计 ===")
total_param_size = 0
for initializer in model.graph.initializer:
    param_name = initializer.name
    # 解析参数的形状和数据类型
    param_arr = numpy_helper.to_array(initializer)
    shape = param_arr.shape
    dtype = param_arr.dtype
    # 计算字节大小
    byte_size = param_arr.nbytes
    total_param_size += byte_size
    # 格式化输出(转MB)
    print(f"参数名称: {param_name}\t形状: {shape}\t大小: {byte_size / 1024 / 1024:.2f} MB")

# 统计模型文件总大小
file_total_size = os.path.getsize("your_model.onnx")
print(f"\n=== 模型整体信息 ===")
print(f"模型文件总大小: {file_total_size / 1024 / 1024:.2f} MB")
print(f"可训练参数总大小: {total_param_size / 1024 / 1024:.2f} MB")

这段代码会输出每个参数张量的名称、形状和大小,同时统计可训练参数的总占比——通常这部分是ONNX文件体积的核心来源。

二、用可视化工具直观查看

使用Netron工具可可视化ONNX模型结构,直接查看各层的参数大小:

  • 打开Netron后导入ONNX文件,点击任意层节点即可展开查看其参数的形状、数据类型和内存占用
  • 工具会自动计算并展示每个张量的大小,无需手动计算,适合快速定位大体积层

三、影响ONNX文件体积的核心因素

从统计结果可总结出主要贡献因素:

  • 可训练参数规模:卷积层的核参数、全连接层的权重矩阵是体积最大的部分,比如大尺寸卷积核、高维度全连接层会显著增加体积
  • 数据类型:float32类型参数每个占4字节,float16占2字节,int8仅占1字节,量化后的模型体积会大幅缩小
  • 静态常量/嵌入层:预训练词嵌入、固定常量张量(如归一化层的均值/方差)如果规模较大,也会占据不少体积
  • 冗余结构:未共享的重复参数、不必要的静态张量会额外增大体积

内容的提问来源于stack exchange,提问作者Franck Dernoncourt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:26:08