Migrer des modèles TensorFlow Lite de Firebase ML vers Cloud Storage

Si vous utilisez Firebase Machine Learning pour héberger des modèles personnalisés, vous devez migrer vers une autre solution avant l'arrêt du service d'hébergement Firebase ML le 15 juin 2027.

Vous pouvez également héberger vos modèles à l'aide de Cloud Storage pour Firebase. Suivez ce guide pour migrer vos modèles de Firebase ML vers Cloud Storage.

Télécharger vos modèles TensorFlow Lite

Si vos modèles ne sont pas encore stockés localement, téléchargez-les depuis votre projet Firebase. Vous avez deux options pour ce faire :

Téléchargez-les un par un depuis la console Firebase.

  1. Ouvrez la section Machine Learning de la page dans la console Firebase.
  2. Pour chaque modèle que vous souhaitez migrer, cliquez sur son menu à trois points, puis sur Télécharger le modèle.

Télécharger tous vos modèles hébergés de manière groupée

  1. Ouvrez la page Machine Learning dans la console Firebase.
  2. Cliquez sur le bouton Obtenir la commande pour le téléchargement groupé pour obtenir une commande curl qui télécharge tous les modèles du projet. Ces URL expireront dans sept jours.
  3. Exécutez la commande dans votre terminal local ou dans Cloud Shell. Si vous utilisez Cloud Shell, notez sa limite de stockage sur disque de 5 Go. La commande téléchargera vos modèles dans un dossier local nommé hosted_models.

Héberger vos modèles à l'aide de Cloud Storage

Une fois que vous avez vos modèles en local, vous devez les importer dans un bucket Cloud Storage.

Choisissez la méthode d'importation qui correspond à vos besoins :

Importer vos modèles un par un

  1. Créez un bucket Storage : dans la console Firebase, accédez à Bases de données et stockage > Storage, puis suivez les étapes d'intégration pour créer un bucket si vous ne l'avez pas déjà fait. Notez que cela nécessite un compte de facturation. Pour en savoir plus, consultez la page Tarifs de Firebase.
  2. Toujours dans la section Storage (Stockage), importez vos fichiers de modèle .tflite vers le chemin d'accès souhaité.

Importer vos modèles de manière groupée

  1. Créez un bucket Storage : dans la console Firebase, accédez à Bases de données et stockage > Storage, puis suivez les étapes d'intégration pour créer un bucket si vous ne l'avez pas déjà fait. Notez que cela nécessite un compte de facturation. Pour en savoir plus, consultez la page Tarifs de Firebase.
  2. Utilisez la commande gcloud suivante pour importer tous les modèles depuis votre dossier hosted_models local :

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

Configurer la sécurité et l'intégration des applications

  1. Assurez-vous que vos règles de sécurité Storage permettent à votre application de lire les fichiers de modèle. Par exemple, vous pouvez limiter l'accès aux utilisateurs authentifiés.

  2. Ajoutez Storage à votre application : suivez les guides de configuration pour Android, Apple ou Flutter.

  3. Mettez à jour le code de votre application pour télécharger les fichiers .tflite depuis votre nouveau bucket Storage.

    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;
      }
    });
    

    Une fois le modèle téléchargé, vous pouvez utiliser votre bibliothèque TensorFlow Lite existante pour le charger et l'utiliser.

  4. (Facultatif) Envisagez d'utiliser Firebase Remote Config pour mettre à jour de manière dynamique les chemins de modèles dans votre application sans avoir à publier une nouvelle version.

Facultatif : Migrer vers l'API LiteRT CompiledModel

Si votre application utilise toujours l'ancienne API Interpreter de TensorFlow Lite, envisagez de migrer vers l'API CompiledModel de LiteRT, qui offre une meilleure prise en charge de l'accélération matérielle et d'autres améliorations par rapport à l'ancienne API.