<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 內存占用與監控方式介紹

內存占用與監控方式介紹

發(fā)布人:地平線(xiàn)開(kāi)發(fā)者 時(shí)間:2025-02-08 來(lái)源:工程師 發(fā)布文章
1.內存占用

神經(jīng)網(wǎng)絡(luò )模型常見(jiàn)的內存占用可以分為以下幾個(gè)部分:

1.1 模型參數內存
  • 定義:神經(jīng)網(wǎng)絡(luò )的權重和偏置等參數會(huì )占用內存。

  • 計算方法:

    • 參數總量 = 各層參數數量的總和。

    • 每個(gè)參數的大小取決于數據類(lèi)型(如 float32 為 4 字節,float16 為 2 字節,int8 為 1 字節)。

  • 公式: 參數內存=參數總數×每個(gè)參數的字節數

  • 示例: 一個(gè)全連接層 輸入維度=1024,輸出維度=512,數據類(lèi)型為 float32,則: 參數量=1024×512+512 (偏置項)=524,800 參數內存: 524,800×4?Bytes≈2.1?MB

1.2 激活內存
  • 定義:網(wǎng)絡(luò )各層的中間結果(激活)占用內存。

  • 計算方法:

    • 激活值總量 = 每層輸出的維度之和。

    • 數據類(lèi)型通常與模型參數一致(如 float32)。

  • 公式: 激活內存=每層激活值數量×每個(gè)激活值的字節數

  • 示例: 卷積層:輸入特征圖大小為 64×64(寬 × 高),通道數為 128,輸出通道數為 256,假設數據類(lèi)型為 float32,則: 激活內存大小=64×64×256×4 (Bytes)=4MB

1.3 數據存儲內存
  • 輸入數據:

    • 輸入數據占用內存,根據輸入維度計算。

    • 示例:輸入大小為 32×3×224×224,數據類(lèi)型為 float32:32×(3×224×224)×4≈19MB

  • 輸出數據:

    • 模型輸出也需要占用內存,占用情況同輸入。

2.征程 6 模型推理內存分析

模型推理過(guò)程中的內存占用來(lái)自三個(gè)方面, input tensor memory + output tensor memory + model memoy,其中 model memory 主要是模型文件 size + 運行時(shí)指令運行時(shí)所需的內存(如從 SRAM 換出所需),可以等效理解為第一節介紹的模型參數內存+激活內存。

此外,模型加載過(guò)程中 runtime 將申請額外的內存用于模型的解析,該申請的內存在初始化完成后釋放。

3.征程 6 模型推理內存監控

OpenExplorer 中提供的 hrt_ucp_monitor 支持監控內存信息,下面我們來(lái)看一下 hrt_ucp_monitor 監控內存的用法示例。

工具準備:將工具鏈 OpenExplorer 開(kāi)發(fā)包中 hrt_ucp_monitor 傳到開(kāi)發(fā)板上即可。

工具使用:運行 hrt_ucp_monitor 時(shí),如果不指定參數,則使用默認參數運行。默認開(kāi)啟所有硬件 IP 監控,以交互模式運行, BPU 和 DSP 每秒采樣 500 次,硬件 IP 占用率每 1000ms 刷新一次。如果想要修改,可以參考工具鏈的用戶(hù)手冊,或運行 hrt_ucp_monitor -h 獲取工具的使用詳情。

3.1 無(wú)模型推理

在終端運行命令:hrt_ucp_monitor,可以看到板端預留 4.5G 內存。

圖片

有兩個(gè)地方需要專(zhuān)門(mén)解釋一下:

1.ION(Ion Memory Allocator)共享內存管理

ION 是 google 在 Android4.x 為了解決內存碎片化管理而引入的通用內存管理器,用來(lái)支持不同的內存分配機制,如 CARVOUT(PMEM),物理連續內存(kmalloc),虛擬地址連續但物理地址不連續內存(vmalloc),IOMMU 等。

ION Info 還包括一些系統以及核間通信的占用,并不是模型本身的占用

2.HBMEM(Hobot Memory Management)地平線(xiàn)內存管理模塊

HBMEM,是一個(gè)地平線(xiàn)自研的內存管理軟件,用于解決 Linux 內核無(wú)法很好的支持預留內存的管理,以及應用與驅動(dòng)之間的內存共享的問(wèn)題。

3.2 有模型推理

在 A 終端運行程序,在 B 終端運行命令:hrt_ucp_monitor,即可看到對應的監控信息:

圖片

可以看到,模型推理時(shí),主要是 carveout 的內存,也可以使用如下命令查看內存使用情況:

cat /sys/kernel/debug/ion/heaps/carveout

查看對應進(jìn)程的占用即可


圖片

*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。




相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>