Перенос моделей TensorFlow Lite из Firebase ML в облачное хранилище.

Если вы используете Firebase Machine Learning для размещения пользовательских моделей , вам необходимо перейти на другое решение до закрытия сервиса хостинга Firebase ML 15 июня 2027 года.

В качестве альтернативы вы можете использовать Cloud Storage for Firebase для размещения ваших моделей. Следуйте этому руководству, чтобы перенести ваши модели из Firebase ML в Cloud Storage.

Загрузите свои модели TensorFlow Lite

Если ваши модели еще не сохранены локально, загрузите их из вашего проекта Firebase. Для этого у вас есть два варианта:

Загружайте их по одному из консоли Firebase.

  1. Откройте раздел «Машинное обучение » в консоли Firebase.
  2. Для каждой модели, которую вы хотите перенести, щелкните по ее меню с тремя точками, а затем нажмите «Загрузить модель» .

Загрузите все размещенные вами модели сразу.

  1. Откройте страницу «Машинное обучение» в консоли Firebase.
  2. Нажмите кнопку «Получить команду для массовой загрузки» , чтобы получить команду curl , которая загрузит все модели проекта. Срок действия этих URL-адресов истечет через 7 дней.
  3. Выполните команду в локальном терминале или в Cloud Shell . При использовании Cloud Shell обратите внимание на ограничение дискового пространства в 5 ГБ . Команда загрузит ваши модели в локальную папку с именем hosted_models .

Размещайте свои модели в облачном хранилище.

После того как вы разместите свои модели локально, вам необходимо загрузить их в облачное хранилище.

Выберите способ загрузки, соответствующий вашим потребностям:

Загружайте модели по одной.

  1. Создание корзины хранения: в консоли Firebase перейдите в раздел «Базы данных и хранилище» > «Хранилище» и выполните шаги по настройке, чтобы создать корзину хранения, если вы еще этого не сделали. Обратите внимание, что для этого требуется учетная запись для выставления счетов; подробности см. в разделе «Цены на Firebase» .
  2. Оставаясь в разделе «Хранилище» , загрузите файлы моделей .tflite в указанный путь.

Загружайте свои модели сразу.

  1. Создание корзины хранения: в консоли Firebase перейдите в раздел «Базы данных и хранилище» > «Хранилище» и выполните шаги по настройке, чтобы создать корзину хранения, если вы еще этого не сделали. Обратите внимание, что для этого требуется учетная запись для выставления счетов; подробности см. в разделе «Цены на Firebase» .
  2. Используйте следующую команду gcloud для загрузки всех моделей из вашей локальной папки hosted_models :

    gcloud storage rsync --recursive ./hosted_models gs://<your-storage-bucket>/models/

Настройка безопасности и интеграции приложений.

  1. Убедитесь, что правила безопасности хранилища разрешают вашему приложению чтение файлов модели. Например, вы можете ограничить доступ только для авторизованных пользователей.

  2. Добавьте хранилище в свое приложение: следуйте инструкциям по настройке для Android , Apple или Flutter .

  3. Обновите код своего приложения, чтобы оно загружало файлы .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 для загрузки и использования модели.

  4. (Необязательно) Рекомендуется использовать Firebase Remote Config для динамического обновления путей к моделям в вашем приложении без необходимости выпуска новой версии.

Необязательно: перейдите на API компилируемой модели LiteRT.

Если ваше приложение по-прежнему использует устаревший API Interpreter TensorFlow Lite, рассмотрите возможность перехода на API CompiledModel LiteRT , который предлагает улучшенную поддержку аппаратного ускорения и другие улучшения по сравнению с устаревшим API.