LiteRT 與 TensorFlow 運算子相容性

在模型中使用的機器學習 (ML) 運算子可能會影響 轉換程序 從 TensorFlow 模型轉換至 LiteRT 格式LiteRT 轉換工具 支援的 TensorFlow 運算數量有限 推論模型,也就是說並非所有模型都能直接轉換。 你可以使用轉換工具加入其他運算子,同時轉換運算子 您也需要修改 LiteRT 執行階段 執行模型所需的環境,這可能會限制 可使用標準執行階段部署選項,例如 Google Play 服務

LiteRT Converter 的用途是分析模型 並套用最佳化功能 才能與 直接支援的運算子舉例來說,視機器學習運算子 轉換器可能會 自殺或保險絲 運算子,以便將這些物件對應到 LiteRT 的對應項目。

即使是支援的作業,有時也會有特定的使用模式 然後根據效能考量因素瞭解如何建構 TensorFlow 的最佳方式 如何搭配使用 LiteRT 會仔細考量 以及這個程序施加的限制。

支援的運算子

LiteRT 內建運算子是運算子的子集 先前為 TensorFlow 核心程式庫的一部分你的 TensorFlow 模型 包含以複合運算子的形式自訂運算子 或您定義的新運算子下圖顯示了 。

TensorFlow 運算子

這個領域的機器學習模型運算子有 3 種 轉換程序支援的模式:

  1. 僅使用 LiteRT 內建運算子的模型。(建議採用)
  2. 內建運算子的模型並選取「TensorFlow」 核心運算子
  3. 使用內建運算子、TensorFlow 核心運算子和/或 自訂運算子

如果您的模型只包含 LiteRT 則不需要其他旗標即可轉換。這個 是建議路徑,因為這類模型 且較容易使用預設的 LiteRT 執行階段進行最佳化和執行。 除此之外,還有更多部署選項供模型使用,例如 Google Play 服務。 如要開始使用 LiteRT 轉換工具指南。詳情請見 LiteRT Ops 頁面: 內建運算子清單

如果您需要納入核心程式庫中的特定 TensorFlow 運算, 您必須在轉換時指定這個類別,並確保執行階段 作業。請參閱「選取 TensorFlow 運算子」主題,瞭解詳細資訊 詳細的步驟

請盡量避免在 轉換後的模型自訂運算子 是結合運用 或定義全新的 TensorFlow 核心運算子。 在轉換自訂運算子之後,這類運算子會增加 產生內建 LiteRT 程式庫外的依附元件 針對行動裝置或裝置部署專用的自訂作業 如果將叢集部署至 與伺服器環境相比,資源受限的裝置。 最後,就像加入特定 TensorFlow 核心運算子、自訂運算子一樣 要求你 修改模型執行階段環境 讓您不再使用標準的執行階段服務,例如 Google Play 服務

支援的類型

大多數的 LiteRT 作業都會指定浮點 (float32) 和 量化 (uint8int8) 推論,但許多作業尚未支援其他類型 例如 tf.float16 和字串

除了使用不同版本的作業外 浮點數和量化模型之間的差異就是轉換的方式。 量化轉換需要張量的動態範圍資訊。這個 需要「假量化」預測模型訓練期間 或是透過校正資料集,或「即時」進行範圍估算。詳情請見 量化

直接轉換、不間斷與融合的轉換

LiteRT 也可以處理許多 TensorFlow 作業 但沒有直接對等的項目在這種情況下, 只是從圖表中移除 (tf.identity),並以張量取代 (tf.placeholder) 或融入更複雜的作業 (tf.nn.bias_add)。 部分支援的作業有時可透過其中一種方式移除 作業。

下方僅列出部分經常移除的 TensorFlow 運算 從圖表中

  • tf.add
  • tf.debugging.check_numerics
  • tf.constant
  • tf.div
  • tf.divide
  • tf.fake_quant_with_min_max_args
  • tf.fake_quant_with_min_max_vars
  • tf.identity
  • tf.maximum
  • tf.minimum
  • tf.multiply
  • tf.no_op
  • tf.placeholder
  • tf.placeholder_with_default
  • tf.realdiv
  • tf.reduce_max
  • tf.reduce_min
  • tf.reduce_sum
  • tf.rsqrt
  • tf.shape
  • tf.sqrt
  • tf.square
  • tf.subtract
  • tf.tile
  • tf.nn.batch_norm_with_global_normalization
  • tf.nn.bias_add
  • tf.nn.fused_batch_norm
  • tf.nn.relu
  • tf.nn.relu6
,瞭解如何調查及移除這項存取權。

實驗性作業

下列 LiteRT 作業已存在,但還無法自訂 模型:

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF