Если вы используете Firebase Machine Learning для размещения пользовательских моделей , вам необходимо перейти на другое решение до закрытия сервиса хостинга Firebase ML 15 июня 2027 года.
В качестве альтернативы вы можете использовать Cloud Storage for Firebase для размещения ваших моделей. Следуйте этому руководству, чтобы перенести ваши модели из Firebase ML в Cloud Storage.
Загрузите свои модели TensorFlow Lite
Если ваши модели еще не сохранены локально, загрузите их из вашего проекта Firebase. Для этого у вас есть два варианта:
Загружайте их по одному из консоли Firebase.
- Откройте раздел «Машинное обучение » в консоли Firebase.
- Для каждой модели, которую вы хотите перенести, щелкните по ее меню с тремя точками, а затем нажмите «Загрузить модель» .
Загрузите все размещенные вами модели сразу.
- Откройте страницу «Машинное обучение» в консоли Firebase.
- Нажмите кнопку «Получить команду для массовой загрузки» , чтобы получить команду
curl, которая загрузит все модели проекта. Срок действия этих URL-адресов истечет через 7 дней. - Выполните команду в локальном терминале или в Cloud Shell . При использовании Cloud Shell обратите внимание на ограничение дискового пространства в 5 ГБ . Команда загрузит ваши модели в локальную папку с именем
hosted_models.
Размещайте свои модели в облачном хранилище.
После того как вы разместите свои модели локально, вам необходимо загрузить их в облачное хранилище.
Выберите способ загрузки, соответствующий вашим потребностям:
Загружайте модели по одной.
- Создание корзины хранения: в консоли Firebase перейдите в раздел «Базы данных и хранилище» > «Хранилище» и выполните шаги по настройке, чтобы создать корзину хранения, если вы еще этого не сделали. Обратите внимание, что для этого требуется учетная запись для выставления счетов; подробности см. в разделе «Цены на Firebase» .
- Оставаясь в разделе «Хранилище» , загрузите файлы моделей
.tfliteв указанный путь.
Загружайте свои модели сразу.
- Создание корзины хранения: в консоли Firebase перейдите в раздел «Базы данных и хранилище» > «Хранилище» и выполните шаги по настройке, чтобы создать корзину хранения, если вы еще этого не сделали. Обратите внимание, что для этого требуется учетная запись для выставления счетов; подробности см. в разделе «Цены на Firebase» .
Используйте следующую команду
gcloudдля загрузки всех моделей из вашей локальной папкиhosted_models:gcloud storage rsync --recursive ./hosted_models gs://<your-storage-bucket>/models/
Настройка безопасности и интеграции приложений.
Убедитесь, что правила безопасности хранилища разрешают вашему приложению чтение файлов модели. Например, вы можете ограничить доступ только для авторизованных пользователей.
Добавьте хранилище в свое приложение: следуйте инструкциям по настройке для Android , Apple или Flutter .
Обновите код своего приложения, чтобы оно загружало файлы
.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 }Яблоко
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 } }Порхание
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 для динамического обновления путей к моделям в вашем приложении без необходимости выпуска новой версии.
Необязательно: перейдите на API компилируемой модели LiteRT.
Если ваше приложение по-прежнему использует устаревший API Interpreter TensorFlow Lite, рассмотрите возможность перехода на API CompiledModel LiteRT , который предлагает улучшенную поддержку аппаратного ускорения и другие улучшения по сравнению с устаревшим API.