如果應用程式使用自訂 TensorFlow Lite 模型,可以透過 Firebase ML 部署模型。透過 Firebase 部署模型,您可以縮減應用程式的初始下載大小,並更新應用程式的 ML 模型,不必發布新版應用程式。此外,您也可以使用遠端設定和 A/B 測試,動態為不同使用者群組提供不同模型。
TensorFlow Lite 模型
TensorFlow Lite 模型是經過最佳化的機器學習模型,可在行動裝置上執行。如要取得 TensorFlow Lite 模型,請按照下列步驟操作:
請注意,由於 Dart 沒有維護的 TensorFlow Lite 程式庫,您需要與平台的原生 TensorFlow Lite 程式庫整合。本文未說明這項整合功能。
事前準備
如果尚未安裝並初始化 Flutter 適用的 Firebase SDK,請先完成這項操作。
在 Flutter 專案的根目錄中執行下列指令,安裝 ML 模型下載器外掛程式:
flutter pub add firebase_ml_model_downloader重建專案:
flutter run
1. 部署模型
使用 Firebase 控制台或 Firebase Admin Python 和 Node.js SDK,部署自訂 TensorFlow 模型。請參閱「部署及管理自訂模型」。
將自訂模型新增至 Firebase 專案後,您可以使用指定的名稱在應用程式中參照模型。您可以隨時部署新的 TensorFlow Lite 模型,並呼叫 getModel() (如下所示),將新模型下載到使用者的裝置。
2. 將模型下載至裝置,並初始化 TensorFlow Lite 解譯器
如要在應用程式中使用 TensorFlow Lite 模型,請先使用模型下載工具,將最新版本的模型下載至裝置。接著,使用模型例項化 TensorFlow Lite 解譯器。
如要開始下載模型,請呼叫模型下載器的 getModel() 方法,並指定您上傳模型時指派的名稱、是否要一律下載最新模型,以及允許下載的條件。
您可以選擇三種下載行為:
| 下載類型 | 說明 |
|---|---|
localModel
|
從裝置取得本機模型。
如果沒有可用的本機模型,這項功能的行為與 latestModel 類似。如果您不想檢查模型更新,請使用這個下載類型。舉例來說,您使用遠端設定擷取模型名稱,並一律以新名稱上傳模型 (建議做法)。 |
localModelUpdateInBackground
|
從裝置取得本機模型,並在背景開始更新模型。如果沒有可用的本機模型,這項功能的行為與 latestModel 類似。 |
latestModel
|
取得最新型號。如果本機模型是最新版本,則傳回本機模型。否則,請下載最新模型。這個行為會封鎖,直到下載最新版本為止 (不建議)。只有在明確需要最新版本時,才使用這項行為。 |
在確認模型已下載完畢前,您應停用模型相關功能,例如將部分 UI 設為灰色或隱藏。
FirebaseModelDownloader.instance
.getModel(
"yourModelName",
FirebaseModelDownloadType.localModel,
FirebaseModelDownloadConditions(
iosAllowsCellularAccess: true,
iosAllowsBackgroundDownloading: false,
androidChargingRequired: false,
androidWifiRequired: false,
androidDeviceIdleRequired: false,
)
)
.then((customModel) {
// Download complete. Depending on your app, you could enable the ML
// feature, or switch from the local model to the remote model, etc.
// The CustomModel object contains the local path of the model file,
// which you can use to instantiate a TensorFlow Lite interpreter.
final localModelPath = customModel.file;
// ...
});
許多應用程式會在初始化程式碼中啟動下載工作,但您可以在需要使用模型前的任何時間點執行這項操作。
3. 對輸入資料執行推論
現在裝置上已有模型檔案,您可以使用 TensorFlow Lite 解譯器執行推論。由於 Dart 沒有維護的 TensorFlow Lite 程式庫,您需要整合 iOS 和 Android 的原生 TensorFlow Lite 程式庫。
附錄:模型安全性
無論您如何將 TensorFlow Lite 模型提供給 Firebase ML,Firebase ML 都會以標準序列化 protobuf 格式將模型儲存在本機儲存空間。
從理論上來說,這表示任何人都能複製您的模型。不過,實際上大多數模型都經過最佳化,因此會針對特定應用程式進行混淆處理,風險與競爭對手拆解及重複使用您程式碼的風險類似。不過,在應用程式中使用自訂模型前,請務必瞭解這項風險。