Migrare i modelli TensorFlow Lite da Firebase ML a Cloud Storage

Se utilizzi Firebase Machine Learning per ospitare modelli personalizzati, devi eseguire la migrazione a un'altra soluzione prima che il servizio di hosting di Firebase ML venga chiuso il 15 giugno 2027.

Un'alternativa che potresti utilizzare è ospitare i modelli utilizzando Cloud Storage for Firebase. Segui questa guida per eseguire la migrazione dei modelli da Firebase ML a Cloud Storage.

Scarica i modelli TensorFlow Lite

Se i modelli non sono già archiviati localmente, scaricali dal progetto Firebase. Hai due opzioni per farlo:

Scaricali uno alla volta dalla console Firebase

  1. Apri la sezione della pagina Machine Learning nella console Firebase.
  2. Per ogni modello di cui vuoi eseguire la migrazione, fai clic sul menu extra con tre puntini, quindi su Scarica modello.

Scarica tutti i modelli ospitati in blocco

  1. Apri la pagina Machine Learning nella console Firebase.
  2. Fai clic sul pulsante Richiedi il comando per il download collettivo per ottenere un comando curl che scarica tutti i modelli nel progetto. Questi URL scadranno tra 7 giorni.
  3. Esegui il comando nel terminale locale o in Cloud Shell. Se utilizzi Cloud Shell, tieni presente il limite di spazio di archiviazione su disco di 5 GB. Il comando scaricherà i modelli in una cartella locale denominata hosted_models.

Ospita i modelli utilizzando Cloud Storage

Una volta che i modelli sono disponibili localmente, devi caricarli in un bucket Cloud Storage.

Scegli il metodo di caricamento più adatto alle tue esigenze:

Carica i modelli uno alla volta

  1. Crea un bucket Storage: nella console Firebase, vai a Database e spazio di archiviazione > Storage e segui i passaggi di onboarding per creare un bucket, se non l'hai già fatto. Tieni presente che è necessario un account di fatturazione. Per maggiori dettagli, consulta i prezzi di Firebase.
  2. Nella sezione Storage, carica i file del modello .tflite nel percorso desiderato.

Carica i modelli in blocco

  1. Crea un bucket Storage: nella console Firebase, vai a Database e spazio di archiviazione > Storage e segui i passaggi di onboarding per creare un bucket, se non l'hai già fatto. Tieni presente che è necessario un account di fatturazione. Per maggiori dettagli, consulta i prezzi di Firebase.
  2. Utilizza il seguente comando gcloud per caricare tutti i modelli dalla cartella locale hosted_models:

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

Configura la sicurezza e l'integrazione dell'app

  1. Assicurati che le regole di sicurezza di Storage consentano all'app di leggere i file del modello. Ad esempio, puoi limitare l'accesso agli utenti autenticati.

  2. Aggiungi Storage alla tua app: segui le guide di configurazione per Android, Apple, o Flutter.

  3. Aggiorna il codice dell'applicazione per scaricare i file .tflite dal nuovo 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;
      }
    });
    

    Una volta scaricato il modello, puoi utilizzare la libreria Tensorflow Lite esistente per caricarlo e utilizzarlo.

  4. (Facoltativo) Valuta la possibilità di utilizzare Firebase Remote Config per aggiornare dinamicamente i percorsi dei modelli nella tua app senza richiedere una nuova uscita.

(Facoltativo) Esegui la migrazione all'API LiteRT CompiledModel

Se la tua app utilizza ancora l'API Interpreter TensorFlow Lite legacy, valuta la possibilità di eseguire la migrazione all'API LiteRT CompiledModel, che offre un supporto migliorato per l'accelerazione hardware e altri miglioramenti rispetto all'API legacy.