TensorFlow 模型轉換總覽

您使用 LiteRT 的機器學習 (ML) 模型,原本是使用 TensorFlow 核心程式庫和工具建構及訓練。使用 TensorFlow Core 建構模型後,您可以將其轉換為更小、更有效率的 ML 模型格式,也就是 LiteRT 模型。本節提供指南,說明如何將 TensorFlow 模型轉換為 LiteRT 模型格式。

轉換工作流程

將 TensorFlow 模型轉換為 LiteRT 格式時,可採用的路徑會因機器學習模型的內容而異。首先,您應評估模型是否可直接轉換。這項評估會根據模型使用的 TensorFlow 運算,判斷標準 LiteRT 執行階段環境是否支援模型內容。如果模型使用的作業不在支援的作業集中,您可以重構模型或使用進階轉換技術。

下圖顯示轉換模型的高階步驟。

TFLite 轉換工作流程

圖 1. LiteRT 轉換工作流程。

以下各節將說明評估及轉換模型,以便搭配 LiteRT 使用的程序。

輸入模型格式

轉換工具支援下列輸入模型格式:

您可以將 Keras 和具體函式模型儲存為 SavedModel,並使用建議路徑進行轉換。

主題。

如果您有 Jax 模型,可以使用 TFLiteConverter.experimental_from_jax API 將其轉換為 LiteRT 格式。請注意,這個 API 處於實驗模式時,可能會有所變動。

轉換評估

評估模型是嘗試轉換模型前的重要步驟。評估時,請判斷模型內容是否與 LiteRT 格式相容。此外,您也應根據模型使用的資料大小、硬體處理需求,以及模型的整體大小和複雜度,判斷模型是否適合在行動裝置和邊緣裝置上使用。

對於許多模型,轉換器應該都能直接運作。不過,LiteRT 內建運算子程式庫僅支援部分 TensorFlow 核心運算子,因此部分模型可能需要額外步驟,才能轉換為 LiteRT。此外,基於效能考量,LiteRT 支援的部分作業設有使用限制。請參閱運算子相容性指南,判斷模型是否需要重構以進行轉換。

模型轉換

LiteRT 轉換工具可使用 TensorFlow 模型產生 LiteRT 模型 (副檔名為 .tflite 的最佳化 FlatBuffer 格式)。您可以載入 SavedModel,或直接轉換您在程式碼中建立的模型。

轉換工具會採用 3 個主要標記 (或選項),自訂模型的轉換作業:

  1. 相容性標記可讓您指定轉換是否應允許自訂運算子。
  2. 最佳化旗標可讓您指定要在轉換期間套用的最佳化類型。最常用的最佳化技術是訓練後量化
  3. 中繼資料標記可讓您在轉換後的模型中新增中繼資料,以便在裝置上部署模型時,更輕鬆地建立平台專屬的包裝函式程式碼。

你可以使用 Python API指令列工具轉換模型。如需在模型上執行轉換器的逐步操作說明,請參閱「轉換 TF 模型」指南。

通常您會將模型轉換為標準的 LiteRT 執行階段環境,或是 LiteRT (Beta 版) 的 Google Play 服務執行階段環境。部分進階用途需要自訂模型執行階段環境,因此轉換程序會增加額外步驟。如需更多指引,請參閱 Android 總覽的「進階執行階段環境」一節。

進階轉換

如果在模型上執行轉換器時遇到錯誤,很可能是運算子相容性問題。TensorFlow Lite 不支援所有 TensorFlow 運算。如要解決這些問題,可以重構模型,或使用進階轉換選項,為模型建立修改過的 LiteRT 格式,以及自訂執行階段環境。

  • 如要進一步瞭解 TensorFlow 和 LiteRT 模型相容性考量事項,請參閱「模型相容性總覽」。
  • 「模型相容性總覽」下的主題涵蓋模型重構的進階技術,例如「選取運算子」指南。
  • 如需作業和限制的完整清單,請參閱 LiteRT 作業頁面

後續步驟