日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

完善資料讓更多小伙伴認識你,還能領取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)和保存中間計算結果的張量(稱為中間張量)組成的計算圖。這些中間張量通常是預分配的,目的是減少推理延遲,但這樣做會增加內存用量。不過,如果只是以簡單的方式實現,那么在資源受限的環(huán)境下代價有可能很高,它會占用大量空間,有時甚至比模型本身高幾倍。例如,MobileNet v2 中的中間張量占用了 26MB 的內存(圖 1),大約是模型本身的兩倍。

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

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

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

共享內存緩沖區(qū)對象

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

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

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

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

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

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

內存偏移量計算

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

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

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

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

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

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

原文標題:優(yōu)化 TensorFlow Lite 推理運行環(huán)境內存占用

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

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

    關注

    42

    文章

    4844

    瀏覽量

    108206
  • 張量
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2696
  • tensorflow
    +關注

    關注

    13

    文章

    336

    瀏覽量

    62398
  • TensorFlow Lite
    +關注

    關注

    0

    文章

    26

    瀏覽量

    845

原文標題:優(yōu)化 TensorFlow Lite 推理運行環(huán)境內存占用

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    LuatOS的內存分配機制

    不同 LuatOS 硬件平臺在內存布局上存在差異,Lua 運行內存、系統(tǒng)內存與 PSRAM 擴展內存的分配方式各有區(qū)別。部分型號將系統(tǒng)與腳本內存
    的頭像 發(fā)表于 04-16 12:37 ?135次閱讀
    LuatOS的<b class='flag-5'>內存</b>分配機制

    將TensorFlowSavedModel轉換為支持imx8mpNPU的tflite模型,沒有成功是怎么回事?

    } box_predictor { convolutional_box_predictor { use_depthwise:true } } } tflite conversion script 將 TensorFlow
    發(fā)表于 04-16 06:09

    eiQ Toolkit TFLite 轉換器失敗問題可能出在什么地方

    I am trying to convert an object detection model from tensorflow to tflite with int8 quantization
    發(fā)表于 04-15 08:21

    在 NPU 上運行了 eIQ TensorFlow Lite 示例模型報錯

    我們已經在 NPU 上運行了 eIQ TensorFlow Lite 示例模型,但它們失敗并出現以下錯誤: 信息:加載的模型 mobilenet_v1_1.0_224_quant.tflite
    發(fā)表于 03-18 06:52

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    了解SOLIDWORKS202仿真方面的改進

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

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

    近日,《財富》雜志正式發(fā)布“中國科技50強”榜單,瀾 起科技憑借在內存接口和高速互連芯片領域的突破性創(chuàng)新與全球影響力成功入選,成為中國半導體行業(yè)中技術實力與國際化發(fā)展兼?zhèn)涞慕艹龃砥髽I(yè)之一。 據悉
    的頭像 發(fā)表于 08-25 10:03 ?2804次閱讀
    瀾起科技憑借<b class='flag-5'>在內存</b>接口和高速互連芯片領域的突破性創(chuàng)新榮膺《財富》中國科技50強

    如何進行tflite模型量化

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

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

    Tensorflow Lite 模型轉換為 OpenVINO? 格式。 遇到的錯誤: FrontEnd API failed with OpConversionFailure:No translator found for TFLi
    發(fā)表于 06-25 08:27
    得荣县| 青阳县| 宣武区| 五峰| 苍梧县| 资阳市| 安乡县| 平潭县| 迁西县| 沙坪坝区| 长武县| 定边县| 潢川县| 称多县| 灌云县| 巴塘县| 耿马| 南昌县| 香格里拉县| 海伦市| 临澧县| 日喀则市| 鹿泉市| 海林市| 岳普湖县| 长阳| 玛纳斯县| 会东县| 九龙县| 沐川县| 林芝县| 松潘县| 英山县| 前郭尔| 西吉县| 沅江市| 额尔古纳市| 镇宁| 岳西县| 卓资县| 阿坝县|