国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

TensorFlow Lite (TFLite) 在內存使用方面的改進

Tensorflowers ? 來源:TensorFlow ? 作者: Juhyun Lee 和 Yury ? 2020-10-21 10:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

文 /Juhyun Lee 和 Yury Pisarchyk,軟件工程師

由于資源限制嚴重,必須在苛刻的功耗要求下使用資源有限的硬件,因此在移動和嵌入式設備上進行推理頗有難度。在本文中,我們將展示 TensorFlow Lite (TFLite) 在內存使用方面的改進,更適合在邊緣設備上運行推理。

中間張量

一般而言,神經網絡可以視為一個由算子(例如 CONV_2D 或 FULLY_CONNECTED)和保存中間計算結果的張量(稱為中間張量)組成的計算圖。這些中間張量通常是預分配的,目的是減少推理延遲,但這樣做會增加內存用量。不過,如果只是以簡單的方式實現,那么在資源受限的環境下代價有可能很高,它會占用大量空間,有時甚至比模型本身高幾倍。例如,MobileNet v2 中的中間張量占用了 26MB 的內存(圖 1),大約是模型本身的兩倍。

圖 1. MobileNet v2 的中間張量(上圖)及其到二維內存空間大小的映射(下圖)。如果每個中間張量分別使用一個專用的內存緩沖區(用 65 種不同的顏色表示),它們將占用約 26MB 的運行時內存

好消息是,通過數據相關性分析,這些中間張量不必共存于內存中。如此一來,我們便可以重用中間張量的內存緩沖區,從而減少推理引擎占用的總內存。如果網絡呈簡單的鏈條形狀,則兩個大內存緩沖區即夠用,因為它們可以在整個網絡中來回互換。然而,對于形成復雜計算圖的任意網絡,這個NP 完備(NP-complete)資源分配問題需要一個良好的近似算法

我們針對此問題設計了許多不同的近似算法,這些算法的表現取決于神經網絡和內存緩沖區的屬性,但都通過張量使用記錄。中間張量的張量使用記錄是一種輔助數據結構,其中包含有關張量的大小以及在給定的網絡執行計劃中首次最后一次使用時間的信息。借助這些記錄,內存管理器能夠在網絡執行的任何時刻計算中間張量的使用情況,并優化其運行時內存以最大限度減少占用空間。

共享內存緩沖區對象

在 TFLite GPU OpenGL 后端中,我們為這些中間張量采用 GL 紋理。這種方式有幾個有趣的限制:(a) 紋理一經創建便無法修改大小,以及 (b) 在給定時間只有一個著色器程序可以獨占訪問紋理對象。在這種共享內存緩沖區對象模式的目標是最小化對象池中創建的所有共享內存緩沖區對象的大小總和。這種優化與眾所周知的寄存器分配問題類似,但每個對象的大小可變,因此優化起來要復雜得多。

根據前面提到的張量使用記錄,我們設計了 5 種不同的算法,如表 1 所示。除了“最小成本流”以外,它們都是貪心算法,每個算法使用不同的啟發式算法,但仍會達到或非常接近理論下限。根據網絡拓撲,某些算法的性能要優于其他算法,但總體來說,GREEDY_BY_SIZE_IMPROVED 和 GREEDY_BY_BREADTH 產生的對象分配占用內存最小。

理論下限
https://arxiv.org/abs/2001.03288

表 1. “共享對象”策略的內存占用量(以 MB 為單位;最佳結果以綠色突出顯示)。前 5 行是我們的策略,后 2 行用作基準(“下限”表示最佳數的近似值,該值可能無法實現,而“樸素”表示為每個中間張量分配專屬內存緩沖區的情況下可能的最差數)

回到我們的第一個示例,GREEDY_BY_BREADTH 在 MobileNet v2 上表現最佳,它利用了每個算子的寬度,即算子配置文件中所有張量的總和。圖 2,尤其是與圖 1 相比,突出了使用智能內存管理器的優勢。

圖 2. MobileNet v2 的中間張量(上圖)及其大小到二維內存空間的映射(下圖)。如果中間張量共享內存緩沖區(用 4 種不同的顏色表示),它們僅占用大約 7MB 的運行時內存

內存偏移量計算

對于在 CPU 上運行的 TFLite,適用于 GL 紋理的內存緩沖區屬性不適用。因此,更常見的做法是提前分配一個大內存空間,并通過給定偏移量訪問內存在所有不干擾其他讀取和寫入操作的讀取器和寫入器之間共享。這種內存偏移量計算法的目的是最大程度地減小內存空間的大小。

我們針對此優化問題設計了 3 種不同的算法,同時還分析了先前的研究工作(Sekiyama 等人于 2018 年提出的 Strip Packing)。與“共享對象”法類似,根據網絡的不同,一些算法的性能優于其他算法,如表 2 所示。這項研究的一個收獲是:“偏移量計算”法通常比“共享對象”法占用的空間更小。因此,如果適用,應該選擇前者而不是后者。

Strip Packing
https://arxiv.org/abs/1804.10001

表 2. “偏移量計算”策略的內存占用量(以 MB 為單位;最佳結果以綠色突出顯示)。前 3 行是我們的策略,接下來 1 行是先前的研究,后 2 行用作基準(“下限”表示最佳數的近似值,該值可能無法實現,而“樸素”表示為每個中間張量分配專屬內存緩沖區的情況下可能的最差數)

這些針對 CPU 和 GPU 的內存優化默認已隨過去幾個穩定的 TFLite 版本一起提供,并已證明在支持更苛刻的最新模型(如 MobileBERT)方面很有優勢。直接查看 GPU 實現和 CPU 實現,可以找到更多關于實現的細節。

MobileBERT
https://tfhub.dev/tensorflow/lite-model/mobilebert/1/default/1

GPU 實現
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/delegates/gpu/common/memory_management

CPU 實現
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/simple_memory_arena.h

致謝

感謝 Matthias Grundmann、Jared Duke 和 Sarah Sirajuddin,特別感謝 Andrei Kulik 參加了最開始的頭腦風暴,同時感謝 Terry Heo 完成 TFLite 的最終實現。

責任編輯:xj

原文標題:優化 TensorFlow Lite 推理運行環境內存占用

文章出處:【微信公眾號:TensorFlow】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4838

    瀏覽量

    107747
  • 張量
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2692
  • tensorflow
    +關注

    關注

    13

    文章

    334

    瀏覽量

    62173
  • TensorFlow Lite
    +關注

    關注

    0

    文章

    26

    瀏覽量

    828

原文標題:優化 TensorFlow Lite 推理運行環境內存占用

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于芯科科技xG24開發套件實現語音控制燈光的簡易步驟

    本設計指南詳細介紹了在Silicon Labs(芯科科技)的EFR32xG24 開發套件上使用 TensorFlow Lite Micro(TFLM)創建語音控制燈光應用的過程。該示例使用keyword_spotting_on_off_v3.
    的頭像 發表于 03-04 15:50 ?541次閱讀

    Redis內存管理、持久化策略與慢查詢排查分析

    Redis 在生產環境中承擔著緩存、會話存儲、消息隊列、分布式鎖等多種角色。隨著數據量增長和并發壓力上升,內存碎片、持久化 I/O 抖動、慢查詢堆積這三類問題會逐漸顯現,直接影響服務延遲和穩定性。Redis 8.x 在內存管理和持久化機制上做了若干
    的頭像 發表于 02-27 11:00 ?126次閱讀

    IMX95 - NPU 不工作的原因?怎么解決?

    : Created TensorFlow Lite XNNPACK delegate for CPU. 我的問題是:哪個 SDK 版本真正正確支持 NPU?會升級到最新版本內核 6.12.34可能有幫助嗎?我寧愿不回滾到內核 6.6如果可能的話。謝謝。
    發表于 02-26 11:21

    借助谷歌LiteRT構建下一代高性能端側AI

    自 2024 年 LiteRT 問世以來,我們一直致力于將機器學習技術棧從其 TensorFlow Lite (TFLite) 基礎之上演進為一個現代化的端側 AI (On-Device AI
    的頭像 發表于 01-30 11:23 ?1644次閱讀
    借助谷歌LiteRT構建下一代高性能端側AI

    容易造成單片機內存溢出的幾個陷阱介紹

    關于程序變量和內存分配,都是需要我們時刻關注的問題。我相信有不少人在這塊犯過很多的錯誤,也可能說明我們基礎不夠扎實,編寫程序的習慣也不夠好。 總結一下關于程序的變量和內存方面的概念,雖然是屬于C語言
    發表于 01-23 07:25

    如何在TensorFlow Lite Micro中添加自定義操作符(1)

    相信大家在部署嵌入式端的AI應用時,一定使用過TensorFlow Lite Micro,以下簡稱TFLm。TFLm 是專為微控制器和嵌入式設備設計的輕量級機器學習推理框架,它通過模塊化的操作符系統
    的頭像 發表于 12-26 10:34 ?5300次閱讀

    【上海晶珩睿莓1開發板試用體驗】將TensorFlow-Lite物體歸類(classify)的輸出圖片移植到LVGL9.3界面中

    既然調通了TensorFlow-Lite物體歸類(classify)和LVGL9.3代碼,那么把這兩個東西結合起來也是沒問題的,需要注意的是,TensorFlow-Lite是C++代碼,而
    發表于 09-21 00:39

    【上海晶珩睿莓1開發板試用體驗】TensorFlow-Lite物體歸類(classify)

    庫,則編譯出來的OpenCV庫不可以給TensorFlow-Lite代碼使用,并且睿莓1開發板自帶的2G內存其實也無法支撐OpenCV的完整編譯過程,在編譯途中就會發生內存交換錯誤。要解決此問題,方法
    發表于 09-12 22:43

    了解SOLIDWORKS202仿真方面的改進

    和效率,從而幫助設計師更好地應對復雜的設計挑戰。本文將深入探討SOLIDWORKS 2025在仿真方面的改進,揭示這些改進如何助力設計師實現更有效、更準確的仿真分析。
    的頭像 發表于 09-04 10:36 ?677次閱讀
    了解SOLIDWORKS202仿真<b class='flag-5'>方面的</b><b class='flag-5'>改進</b>

    瀾起科技憑借在內存接口和高速互連芯片領域的突破性創新榮膺《財富》中國科技50強

    近日,《財富》雜志正式發布“中國科技50強”榜單,瀾 起科技憑借在內存接口和高速互連芯片領域的突破性創新與全球影響力成功入選,成為中國半導體行業中技術實力與國際化發展兼備的杰出代表企業之一。 據悉
    的頭像 發表于 08-25 10:03 ?2586次閱讀
    瀾起科技憑借<b class='flag-5'>在內存</b>接口和高速互連芯片領域的突破性創新榮膺《財富》中國科技50強

    如何進行tflite模型量化

    在windows上,如果我們按照上一期的方式安裝了tflite2pb,是不能直接運行的。因為命令行工具是為linux編譯的。
    的頭像 發表于 08-13 11:45 ?1660次閱讀
    如何進行<b class='flag-5'>tflite</b>模型量化

    無法將Tensorflow Lite模型轉換為OpenVINO?格式怎么處理?

    Tensorflow Lite 模型轉換為 OpenVINO? 格式。 遇到的錯誤: FrontEnd API failed with OpConversionFailure:No translator found for TFLi
    發表于 06-25 08:27

    通過什么方法能獲得關于Ethercat方面的設計方案和設計資料

    您好通過什么方法能獲得關于Ethercat方面的設計方案和設計資料,我們主要關于主站,從站IO和運動控制方面的資料,謝謝!!
    發表于 05-28 10:07

    FlexBuild構建Debian 12,在“tflite_ethosu_delegate”上構建失敗了怎么解決?

    /workspace/tn_debian_FlexBuild 構建/components_lsdk2412/apps/ml/tflite/tensorflow/lite/tools/cmake
    發表于 04-01 06:53

    用樹莓派搞深度學習?TensorFlow啟動!

    介紹本頁面將指導您在搭載64位Bullseye操作系統的RaspberryPi4上安裝TensorFlowTensorFlow是一個專為深度學習開發的大型軟件庫,它消耗大量資源。您可以在
    的頭像 發表于 03-25 09:33 ?1200次閱讀
    用樹莓派搞深度學習?<b class='flag-5'>TensorFlow</b>啟動!