如果您使用 Firebase Machine Learning 代管自訂模型,請務必在 2027 年 6 月 15 日 Firebase ML 代管服務停止運作前,改用其他解決方案。
您可以改用 Firebase 的 Cloud Storage 代管模型。請按照本指南,將模型從 Firebase ML 遷移至 Cloud Storage。
下載 TensorFlow Lite 模型
如果模型尚未儲存在本機,請從 Firebase 專案下載。方法有兩種:
從 Firebase 控制台逐一下載
大量下載所有代管模型
- 在 Firebase 控制台中開啟「Machine Learning」頁面。
- 按一下「取得大量下載的指令」按鈕,取得可下載專案中所有模型的
curl指令。這些網址會在 7 天後失效。 - 在本機終端機或 Cloud Shell 中執行指令。如果使用 Cloud Shell,請注意磁碟儲存空間上限為 5 GB。這項指令會將模型下載至名為
hosted_models的本機資料夾。
使用 Cloud Storage 託管模型
模型儲存在本機後,您需要將其上傳至 Cloud Storage bucket。
選擇符合需求的上傳方式:
一次上傳一個模型
- 建立 Storage bucket:在 Firebase 控制台中,依序前往「資料庫和儲存空間」>「儲存空間」,然後按照新手上路步驟建立 bucket (如果尚未建立)。請注意,這需要帳單帳戶;詳情請參閱 Firebase 定價。
- 在「Storage」部分中,將
.tflite模型檔案上傳至所需路徑。
大量上傳模型
- 建立 Storage bucket:在 Firebase 控制台中,依序前往「資料庫和儲存空間」>「儲存空間」,然後按照新手上路步驟建立 bucket (如果尚未建立)。請注意,這需要帳單帳戶;詳情請參閱 Firebase 定價。
使用下列
gcloud指令,上傳本機hosted_models資料夾中的所有模型:gcloud storage rsync --recursive ./hosted_models gs://<your-storage-bucket>/models/
設定安全機制和應用程式整合
請確認您的儲存空間安全性規則允許應用程式讀取模型檔案。舉例來說,您可以限制只有通過驗證的使用者才能存取。
更新應用程式程式碼,從新的 Storage bucket 下載
.tflite檔案。Android
modelRef = storage.getReferenceFromUrl("gs://YOUR_BUCKET/path/to/model.tflite") val localFile = File.createTempFile("models", "tflite") modelRef.getFile(localFile).addOnSuccessListener { // Local temp file has been created }.addOnFailureListener { // Handle any errors }Apple
let gsReference = storage.reference(forURL: "gs://YOUR_BUCKET/path/to/model.tflite") // Create local filesystem URL let localURL = URL(string: "path/to/model.tflite")! // Download to the local filesystem let downloadTask = gsReference.write(toFile: localURL) { url, error in if let error = error { // Uh-oh, an error occurred! } else { // Local file URL for "model.tflite" is returned } }Flutter
final modelRef = FirebaseStorage.instance.refFromURL("gs://YOUR_BUCKET/path/to/model.tflite"); final appDocDir = await getApplicationDocumentsDirectory(); final filePath = "${appDocDir.absolute}/models/model.tflite"; final file = File(filePath); final downloadTask = modelRef.writeToFile(file); downloadTask.snapshotEvents.listen((taskSnapshot) { switch (taskSnapshot.state) { case TaskState.running: // TODO: Handle this case. break; case TaskState.paused: // TODO: Handle this case. break; case TaskState.success: // TODO: Handle this case. break; case TaskState.canceled: // TODO: Handle this case. break; case TaskState.error: // TODO: Handle this case. break; } });模型下載完成後,您可以使用現有的 TensorFlow Lite 程式庫載入及使用模型。
(選用) 考慮使用 Firebase 遠端設定,在應用程式中動態更新模型路徑,不必發布新版本。
選用:遷移至 LiteRT CompiledModel API
如果應用程式仍使用舊版 TensorFlow Lite Interpreter API,建議遷移至 LiteRT CompiledModel API,因為相較於舊版 API,LiteRT CompiledModel API 可提供更完善的硬體加速支援和其他改良功能。