"); //-->
神经网络模型常见的内存占用可以分为以下几个部分:
1.1 模型参数内存定义:神经网络的权重和偏置等参数会占用内存。
计算方法:
参数总量 = 各层参数数量的总和。
每个参数的大小取决于数据类型(如 float32 为 4 字节,float16 为 2 字节,int8 为 1 字节)。
公式: 参数内存=参数总数×每个参数的字节数
示例: 一个全连接层 输入维度=1024,输出维度=512,数据类型为 float32,则: 参数量=1024×512+512 (偏置项)=524,800 参数内存: 524,800×4 Bytes≈2.1 MB
定义:网络各层的中间结果(激活)占用内存。
计算方法:
激活值总量 = 每层输出的维度之和。
数据类型通常与模型参数一致(如 float32)。
公式: 激活内存=每层激活值数量×每个激活值的字节数
示例: 卷积层:输入特征图大小为 64×64(宽 × 高),通道数为 128,输出通道数为 256,假设数据类型为 float32,则: 激活内存大小=64×64×256×4 (Bytes)=4MB
输入数据:
输入数据占用内存,根据输入维度计算。
示例:输入大小为 32×3×224×224,数据类型为 float32:32×(3×224×224)×4≈19MB
输出数据:
模型输出也需要占用内存,占用情况同输入。
模型推理过程中的内存占用来自三个方面, input tensor memory + output tensor memory + model memoy,其中 model memory 主要是模型文件 size + 运行时指令运行时所需的内存(如从 SRAM 换出所需),可以等效理解为第一节介绍的模型参数内存+激活内存。
此外,模型加载过程中 runtime 将申请额外的内存用于模型的解析,该申请的内存在初始化完成后释放。
3.征程 6 模型推理内存监控OpenExplorer 中提供的 hrt_ucp_monitor 支持监控内存信息,下面我们来看一下 hrt_ucp_monitor 监控内存的用法示例。
工具准备:将工具链 OpenExplorer 开发包中 hrt_ucp_monitor 传到开发板上即可。
工具使用:运行 hrt_ucp_monitor 时,如果不指定参数,则使用默认参数运行。默认开启所有硬件 IP 监控,以交互模式运行, BPU 和 DSP 每秒采样 500 次,硬件 IP 占用率每 1000ms 刷新一次。如果想要修改,可以参考工具链的用户手册,或运行 hrt_ucp_monitor -h 获取工具的使用详情。
3.1 无模型推理在终端运行命令:hrt_ucp_monitor,可以看到板端预留 4.5G 内存。
有两个地方需要专门解释一下:
1.ION(Ion Memory Allocator)共享内存管理
ION 是 google 在 Android4.x 为了解决内存碎片化管理而引入的通用内存管理器,用来支持不同的内存分配机制,如 CARVOUT(PMEM),物理连续内存(kmalloc),虚拟地址连续但物理地址不连续内存(vmalloc),IOMMU 等。
ION Info 还包括一些系统以及核间通信的占用,并不是模型本身的占用
2.HBMEM(Hobot Memory Management)地平线内存管理模块
HBMEM,是一个地平线自研的内存管理软件,用于解决 Linux 内核无法很好的支持预留内存的管理,以及应用与驱动之间的内存共享的问题。
3.2 有模型推理在 A 终端运行程序,在 B 终端运行命令:hrt_ucp_monitor,即可看到对应的监控信息:
可以看到,模型推理时,主要是 carveout 的内存,也可以使用如下命令查看内存使用情况:
cat /sys/kernel/debug/ion/heaps/carveout
查看对应进程的占用即可
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
简单实用的单片机CRC 快速算法
加密算法之MD5算法
自动驾驶正推动汽车行业加速布局人形机器人
实时训练驾驶人工智能
携手ADI赢得未来
曲面显示屏取代传统汽车挡风玻璃
目标跟踪算法在红外热成像跟踪技术上的应用
ADI:传感技术助力未来自动驾驶的发展
76-81GHz自动驾驶CMOS RADAR
采用Mean-Shift和Camshift算法相结合的火焰视频图像跟踪设计
有关指纹算法
高阶智驾要落地,线控底盘为什么必须执行得准
PID算法
数字PID控制算法之一
CRC算法原理及C语言实现
数字PID控制及其改进算法的应用
基于LPC2138的血压测量算法开发平台电路图
地平线征程 6 系列集成 Cadence Tensilica Vision DSP,实现规模化量产,合作加速智能驾驶解决方案部署
自动驾驶的现状与未来(节选)
掘金自动驾驶,不要把大坑当机会
无线传感器网络低功耗分簇路由算法设计
2035年自动驾驶出租车市场规模将达1680亿美元
vxwokrs下静态图像压缩算法(上)
[转帖]us/os就绪表的维护算法分析
计算机科学与技术反思录(2)
Ouster推出 Rev8 OS 激光雷达系列 原生彩色激光雷达正式落地
面向算法硬件加速的FPGA实现方法
加快实现自动驾驶(完整小组讨论)
求FSK信号的解调算法,主要是铁路上的移频信号!
特斯拉监督版FSD加入中国市场