如果您使用 Firebase Machine Learning 托管自定义模型,则必须在 Firebase ML 托管服务于 2027 年 6 月 15 日关停之前迁移到其他解决方案。
您还可以选择使用 Cloud Storage for Firebase 托管模型。请按照本指南将模型从 Firebase ML 迁移到 Cloud Storage。
下载 TensorFlow Lite 模型
如果您尚未在本地存储模型,请从 Firebase 项目中下载模型。您可以通过以下两种方式下载:
从 Firebase 控制台逐个下载
- 在 Firebase 控制台中打开机器学习页面部分。
- 对于要迁移的每个模型,点击其三点状溢出菜单,然后点击下载模型。
批量下载所有托管模型
- 在 Firebase 控制台中打开机器学习页面。
- 点击获取批量下载命令按钮,获取用于下载项目中的所有模型的
curl命令。这些网址将在 7 天后失效。 - 在本地终端或 Cloud Shell 中运行该命令。如果使用 Cloud Shell,请注意其磁盘存储空间上限为 5 GB。该命令会将您的模型下载到名为
hosted_models的本地文件夹中。
使用 Cloud Storage 托管模型
将模型下载到本地后,您需要将其上传到 Cloud Storage 存储分区。
选择符合您需求的上传方法:
一次上传一个模型
- 创建存储分区:在 Firebase 控制台中,依次前往数据库和存储 > 存储,然后按照初始配置步骤创建存储分区(如果尚未创建)。请注意,这需要结算账号;如需了解详情,请参阅 Firebase 定价。
- 在存储空间部分中,将
.tflite模型文件上传到所需路径。
批量上传模型
- 创建存储分区:在 Firebase 控制台中,依次前往数据库和存储 > 存储,然后按照初始配置步骤创建存储分区(如果尚未创建)。请注意,这需要结算账号;如需了解详情,请参阅 Firebase 定价。
使用以下
gcloud命令上传本地hosted_models文件夹中的所有模型:gcloud storage rsync --recursive ./hosted_models gs://<your-storage-bucket>/models/
配置安全性和应用集成
确保您的 Storage 安全规则允许您的应用读取模型文件。例如,您可以限制只有经过身份验证的用户才能访问。
更新应用代码,以便从新的存储分区下载
.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 Remote Config 动态更新应用中的模型路径,而无需发布新版本。
可选:迁移到 LiteRT CompiledModel API
如果您的应用仍在使用旧版 TensorFlow Lite Interpreter API,请考虑迁移到 LiteRT CompiledModel API,该 API 相比旧版 API 提供了更出色的硬件加速支持和其他改进。