模型轉換總覽

您與 TensorFlow Lite 搭配使用的機器學習 (ML) 模型,最初是使用 TensorFlow 核心程式庫和工具建構及訓練的。使用 TensorFlow 核心建構模型後,您可以將其轉換為更小、更有效率的 ML 模型格式,稱為 TensorFlow Lite 模型。本節提供將 TensorFlow 模型轉換為 TensorFlow Lite 模型格式的指南。

轉換工作流程

將 TensorFlow 模型轉換為 TensorFlow Lite 格式,可能會根據 ML 模型的內容而採取幾種路徑。在該流程的第一步,您應該評估模型,以判斷模型是否可以直接轉換。此評估會根據模型使用的 TensorFlow 運算,判斷模型的內容是否受標準 TensorFlow Lite 執行階段環境支援。如果您的模型使用的運算超出支援的集合範圍,您可以選擇重構模型或使用進階轉換技術。

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

TFLite conversion workflow

圖 1. TensorFlow Lite 轉換工作流程。

以下章節概述評估和轉換模型以搭配 TensorFlow Lite 使用的流程。

輸入模型格式

您可以將轉換器與下列輸入模型格式搭配使用

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

如果您有 Jax 模型,可以使用 TFLiteConverter.experimental_from_jax API 將其轉換為 TensorFlow Lite 格式。請注意,此 API 在實驗模式中可能會有所變更。

轉換評估

評估模型是在嘗試轉換模型之前的重要步驟。評估時,您需要判斷模型的內容是否與 TensorFlow Lite 格式相容。您也應該判斷模型是否適合在行動裝置和邊緣裝置上使用,考量因素包括模型使用資料的大小、硬體處理需求,以及模型的整體大小和複雜度。

對於許多模型而言,轉換器應該可直接運作。但是,TensorFlow Lite 內建運算子程式庫支援 TensorFlow 核心運算子的子集,這表示某些模型在轉換為 TensorFlow Lite 之前可能需要額外步驟。此外,TensorFlow Lite 支援的某些運算基於效能考量而有受限的使用需求。請參閱運算子相容性指南,以判斷您的模型是否需要重構以進行轉換。

模型轉換

TensorFlow Lite 轉換器會採用 TensorFlow 模型,並產生 TensorFlow Lite 模型 (一種最佳化的 FlatBuffer 格式,由 .tflite 副檔名識別)。您可以載入 SavedModel,或直接轉換您在程式碼中建立的模型。

轉換器採用 3 個主要標記 (或選項),可自訂模型的轉換

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

您可以使用 Python API命令列工具轉換模型。請參閱轉換 TF 模型指南,取得在模型上執行轉換器的逐步操作說明。

通常,您會將模型轉換為標準 TensorFlow Lite 執行階段環境 或 TensorFlow Lite 的 Google Play 服務執行階段環境 (Beta 版)。有些進階使用案例需要自訂模型執行階段環境,這需要在轉換流程中執行額外步驟。請參閱 Android 總覽的進階執行階段環境章節,以取得更多指南。

進階轉換

如果您在模型上執行轉換器時遇到錯誤,最有可能的原因是您有運算子相容性問題。並非所有 TensorFlow 運算都受到 TensorFlow Lite 支援。您可以透過重構模型,或使用進階轉換選項來解決這些問題,進階轉換選項可讓您建立修改後的 TensorFlow Lite 格式模型,以及該模型的自訂執行階段環境。

後續步驟

  • 請參閱轉換 TF 模型指南,快速開始轉換模型。
  • 請參閱最佳化總覽,以取得關於如何使用訓練後量化等技術來最佳化轉換後模型的指南。
  • 請參閱新增中繼資料總覽,瞭解如何將中繼資料新增至模型。中繼資料會向其他使用者提供模型的說明,以及程式碼產生器可以運用的資訊。