国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

博客專欄

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

內(nèi)存占用與監(jiān)控方式介紹

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

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

1.1 模型參數(shù)內(nèi)存
  • 定義:神經(jīng)網(wǎng)絡的權(quán)重和偏置等參數(shù)會占用內(nèi)存。

  • 計算方法:

    • 參數(shù)總量 = 各層參數(shù)數(shù)量的總和。

    • 每個參數(shù)的大小取決于數(shù)據(jù)類型(如 float32 為 4 字節(jié),float16 為 2 字節(jié),int8 為 1 字節(jié))。

  • 公式: 參數(shù)內(nèi)存=參數(shù)總數(shù)×每個參數(shù)的字節(jié)數(shù)

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

1.2 激活內(nèi)存
  • 定義:網(wǎng)絡各層的中間結(jié)果(激活)占用內(nèi)存。

  • 計算方法:

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

    • 數(shù)據(jù)類型通常與模型參數(shù)一致(如 float32)。

  • 公式: 激活內(nèi)存=每層激活值數(shù)量×每個激活值的字節(jié)數(shù)

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

1.3 數(shù)據(jù)存儲內(nèi)存
  • 輸入數(shù)據(jù):

    • 輸入數(shù)據(jù)占用內(nèi)存,根據(jù)輸入維度計算。

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

  • 輸出數(shù)據(jù):

    • 模型輸出也需要占用內(nèi)存,占用情況同輸入。

2.征程 6 模型推理內(nèi)存分析

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

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

3.征程 6 模型推理內(nèi)存監(jiān)控

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

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

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

3.1 無模型推理

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

圖片

有兩個地方需要專門解釋一下:

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

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

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

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

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

3.2 有模型推理

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

圖片

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

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

查看對應進程的占用即可


圖片

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




相關推薦

技術專區(qū)

關閉