您可以使用 LiteRT 在 Android 應用程式中執行 TensorFlow、PyTorch 和 JAX 模型。LiteRT 系統提供預先建構且可自訂的執行環境,可在 Android 上快速且有效率地執行模型,包括硬體加速選項。
例如使用 LiteRT 的 Android 應用程式,請參閱 LiteRT 範例存放區。
機器學習模型
LiteRT 會使用 TensorFlow、PyTorch 和 JAX 模型,並將這些模型轉換為更小、可攜帶且更有效率的機器學習模型格式。您可以在 Android 上使用預先建構的模型搭配 LiteRT,也可以自行建構模型並轉換為 LiteRT 格式。
本頁面將說明如何使用已建構的機器學習模型,但不會說明如何建構、訓練、測試或轉換模型。如要進一步瞭解如何為 LiteRT 挑選、修改、建構及轉換機器學習模型,請參閱「模型」頁面。
在 Android 上執行模型
在 Android 應用程式中執行的 LiteRT 模型會擷取資料、處理資料,並根據模型邏輯產生預測結果。LiteRT 模型需要特殊的執行階段環境才能執行,且傳入模型的資料必須採用特定的資料格式,稱為 張量。當模型處理資料時 (稱為執行推論),它會產生預測結果並以新張量形式傳遞,然後將結果傳遞給 Android 應用程式,以便採取行動,例如向使用者顯示結果或執行其他商業邏輯。
圖 1. Android 應用程式中 LiteRT 模型的功能執行流程。
在功能設計層級,Android 應用程式需要下列元素才能執行 LiteRT 模型:
- 用於執行模型的 LiteRT 執行階段環境
- 模型輸入處理程序,將資料轉換為張量
- 模型輸出處理常式:接收輸出結果張量,並將其解讀為預測結果
以下各節將說明 LiteRT 程式庫和工具如何提供這些功能元素。
使用 LiteRT 建構應用程式
本節將說明在 Android 應用程式中實作 LiteRT 的建議做法,以及最常見的做法。您應特別留意「執行階段環境」和「開發程式庫」部分。如果您已開發自訂模型,請務必參閱「進階開發路徑」一節。
執行階段環境選項
您可以透過多種方式啟用執行階段環境,在 Android 應用程式中執行模型。以下是建議的選項:
- 在 Google Play 服務執行階段環境中使用 LiteRT (建議)
- 獨立的 LiteRT 執行階段環境
一般來說,您應使用 Google Play 服務提供的執行階段環境,因為這類環境會動態載入,因此比標準環境更節省空間,也能讓應用程式保持較小的大小。Google Play 服務也會自動使用 LiteRT 執行階段的最新穩定版本,讓您享有更多功能,並隨著時間推移提升效能。如果您在未包含 Google Play 服務的裝置上提供應用程式,或是需要密切管理 ML 執行階段環境,則應使用標準 LiteRT 執行階段。這個選項會將額外的程式碼整合至應用程式,讓您更能控管應用程式中的機器學習執行階段,但會增加應用程式的下載大小。
您可以將 LiteRT 開發程式庫新增至應用程式開發環境,藉此在 Android 應用程式中存取這些執行階段環境。如要瞭解如何在應用程式中使用標準執行階段環境,請參閱下一節。
程式庫
您可以使用 Google Play 服務存取 Interpreter API。您可以在 Android 應用程式中使用 LiteRT 核心和支援程式庫。如要進一步瞭解如何使用 LiteRT 程式庫和執行階段環境,請參閱「Android 專用開發工具」。
取得模型
在 Android 應用程式中執行模型需要使用 LiteRT 格式模型。您可以使用預先建構的模型,也可以自行建構模型,然後轉換為 Lite 格式。如要進一步瞭解如何取得 Android 應用程式的模型,請參閱 LiteRT 的「模型」頁面。
處理輸入資料
您傳遞至 ML 模型的任何資料都必須是具有特定資料結構的張量,通常稱為張量的形狀。如要使用模型處理資料,應用程式程式碼必須將資料從原始格式 (例如圖片、文字或音訊資料) 轉換為模型所需形狀的張量。
執行推論
透過模型處理資料以產生預測結果的動作稱為執行推論。在 Android 應用程式中執行推論作業,需要 LiteRT 執行階段環境、模型和輸入資料。
模型在特定裝置上產生推論的速度,取決於所處理資料的大小、模型的複雜度,以及記憶體和 CPU 等可用的運算資源,或是稱為加速器的專用處理器。機器學習模型可使用 LiteRT 硬體驅動程式 (稱為委派程式),在圖形處理器 (GPU) 和張量處理器 (TPU) 等專用處理器上執行,以便加快執行速度。如要進一步瞭解模型處理作業的代理程式和硬體加速功能,請參閱「硬體加速功能總覽」。
處理輸出結果
模型會以張量產生預測結果,而您的 Android 應用程式必須透過採取動作或向使用者顯示結果,來處理這些結果。模型輸出的結果可以很簡單,例如與圖像分類單一結果相對應的數字 (0 = 狗、1 = 貓、2 = 鳥),也可以是更複雜的結果,例如圖像中多個已分類物件的多個定界框,以及介於 0 和 1 之間的預測信心等級。
進階開發路徑
使用更精密且自訂的 LiteRT 模型時,您可能需要使用較進階的開發方法,而非上述方法。以下各節將說明執行模型的進階技巧,以及在 Android 應用程式中為 LiteRT 開發模型。
進階執行階段環境
除了 LiteRT 的標準執行階段和 Google Play 服務執行階段環境外,您還可以使用其他執行階段環境搭配 Android 應用程式。如果您有使用機器學習作業的機器學習模型,而 LiteRT 的標準執行階段環境不支援這些作業,則最有可能使用這些環境。
- LiteRT 的彈性執行階段
- 自訂 LiteRT 執行階段
LiteRT Flex 執行階段可讓您加入模型所需的特定運算子。您可以為 Android 建構 LiteRT,這是執行模型的進階選項,可納入運行 TensorFlow 機器學習模型所需的運算子和其他功能。詳情請參閱「建構 Android 版 LiteRT」。
C 和 C++ API
LiteRT 也提供 API,可使用 C 和 C++ 執行模型。如果應用程式使用 Android NDK,建議您使用這個 API。如果您想在多個平台之間共用程式碼,也建議您考慮使用這個 API。如要進一步瞭解這個開發選項,請參閱「開發工具」頁面。
伺服器模型執行
一般來說,您應在 Android 裝置上執行應用程式中的模型,以便縮短延遲時間,並為使用者提供更完善的資料隱私權。不過,在某些情況下,在雲端伺服器上執行模型 (離線裝置) 會是較佳的解決方案。舉例來說,如果您有大型模型,但無法輕易壓縮至適合使用者 Android 裝置的大小,或是無法在這些裝置上以合理效能執行,如果您最重視在多種裝置上維持一致的模型效能,這個方法也許是您的首選解決方案。
Google Cloud 提供一系列完整的服務,可用於執行 AI 模型。詳情請參閱 Google Cloud 的 AI 和機器學習產品頁面。
自訂模型開發和最佳化
較進階的開發途徑可能會包括開發自訂機器學習模型,並將這些模型最佳化,以便在 Android 裝置上使用。如果您打算建構自訂模型,請務必考慮對模型套用量化技術,以降低記憶體和處理成本。如要進一步瞭解如何建構高效能模型,以便與 LiteRT 搭配使用,請參閱「模型」一節中的效能最佳做法。