行動裝置和嵌入式裝置的運算資源有限, 是保持應用程式資源效率的關鍵我們將清單整理成 最佳做法和策略,可用於改善 TensorFlow 精簡模型效能。
選擇最適合執行工作的模型
視工作而定,您必須在模型複雜度之間做出取捨 而且大小和大小如果您的工作需要高準確度,可能需要更大量的 複雜的模型若是需要較低精確度的工作,最好使用 不僅會佔用較少的磁碟空間和記憶體, 也整體而言速度更快,能源效率也更高例如,下方的圖表顯示 針對部分常見的圖片分類模型,在準確率與延遲方面做出取捨。
其中一個針對行動裝置最佳化的型號範例 MobileNets,適合行動裝置使用 視覺應用程式Kaggle 模型會列出 針對行動裝置和嵌入式裝置進行最佳化
您可以使用移轉,在自己的資料集中重新訓練列出的模型。 學習模式
剖析模型
選出適合任務的候選模型之後 剖析模型並進行基準測試的好方法LiteRT 基準測試 工具 內建分析器,可顯示每個運算子剖析統計資料。這可以 協助您瞭解效能瓶頸,以及哪些作業系統是 運算時間。
您也可以使用 LiteRT 追蹤 定義您的 Android 應用程式模型 並使用標準 Android 系統追蹤 並以 GUI 為基礎的剖析功能,將運算子叫用視覺化 工具。
剖析圖表及最佳化圖表運算子
如果特定運算子經常出現在模型中,且 就會發現運算子花費最多時間 這個運算子如同 TensorFlow Lite 已為大多數運算子提供最佳化的版本。不過,您或許可以 如果您知道 運算子。請參閱自訂運算子指南。
將模型最佳化
模型最佳化的目標是建立小型模型,速度通常更快,且 以便部署至行動裝置 LiteRT 支援多種最佳化技術,例如量化。
詳情請參閱模型最佳化文件。
調整執行緒數量
LiteRT 支援許多運算子的多執行緒核心。你可以 增加執行緒數量並加快運算子的執行速度。增加 不過,執行緒的數量會讓模型使用更多資源 電源。
對某些應用程式而言,延遲時間可能比能源效率更高。個人中心 只需設定解譯器數量 執行緒 不過,多執行緒執行會導致效能提升費用 則視同時執行的其他項目而定這是 特別是在行動應用程式中舉例來說,獨立測試可能會顯示 2 倍 速度與單一執行緒相比,但如果同時執行其他應用程式, 可能會導致效能比單一執行緒更理想。
刪除多餘副本
如未精心設計應用程式,便可能會出現備援副本
並讀取模型的輸出內容請務必
避免多餘的複本如果您使用 Java 等較高層級的 API
請務必仔細查看說明文件,瞭解效能注意事項。例如:
如果將 ByteBuffers
做為使用
輸入
使用平台專屬工具剖析應用程式
平台專屬工具,例如 Android Profiler 和 樂器可提供豐富財富 可用於對應用程式進行偵錯的分析資訊有時候, 應用程式程式碼中的某些部分可能沒有表現錯誤, 與模型互動請務必熟悉平台的使用方式 適用的剖析工具和最佳做法。
評估模型是否因使用裝置提供的硬體加速器而受惠
LiteRT 新增了一種方式,利用更快速的硬體加速模型 例如 GPU、DSP 和類神經加速器一般來說,這些加速器 從接收的委派子模組中公開 執行多個部分LiteRT 可透過以下方式使用委派項目:
- GPU 委派功能適用於 Android 和 iOS,使用 OpenGL/OpenCL 和 Metal。 。如要試用,請參閱 GPU 委派。
- 如果您具有存取權,就能自行建立委派代表 非標準硬體請參閱 LiteRT 委派代表等其他資訊。
請注意,部分加速器適用於不同類型的模型。只有部分通知 委派功能僅支援以特定方式最佳化的浮點模型或模型。是 重要的是,每個委派代表進行基準測試,看看這項做法是否奏效 為應用程式選擇最合適的選項舉例來說,如果模型非常小 不必將模型委派給 GPU相反地,加速器 非常適合算術強度較高的大型模型。