TensorFlow Lite-Modelle von Firebase ML zu Cloud Storage migrieren

Wenn Sie Firebase Machine Learning zum Hosten benutzerdefinierter Modelle, verwenden, müssen Sie zu einer anderen Lösung migrieren, bevor der Firebase ML-Hostingdienst am 15. Juni 2027 eingestellt wird.

Eine Alternative ist, Ihre Modelle stattdessen mit Cloud Storage for Firebase zu hosten. Folgen Sie dieser Anleitung, um Ihre Modelle von Firebase ML zu Cloud Storage zu migrieren.

TensorFlow Lite-Modelle herunterladen

Wenn Ihre Modelle noch nicht lokal gespeichert sind, laden Sie sie aus Ihrem Firebase-Projekt herunter. Dazu haben Sie zwei Möglichkeiten:

Modelle einzeln aus der Firebase Console herunterladen

  1. Öffnen Sie in der Firebase Console den Bereich Machine Learning.
  2. Klicken Sie für jedes Modell, das Sie migrieren möchten, auf das Dreipunkt-Menü und dann auf Modell herunterladen.

Alle gehosteten Modelle im Bulk herunterladen

  1. Öffnen Sie in der Firebase Console die Seite Machine Learning.
  2. Klicken Sie auf die Schaltfläche Befehl für Bulk-Download abrufen , um einen curl-Befehl zu erhalten, mit dem alle Modelle im Projekt heruntergeladen werden. Diese URLs laufen nach 7 Tagen ab.
  3. Führen Sie den Befehl in Ihrem lokalen Terminal oder in Cloud Shell aus. Wenn Sie Cloud Shell verwenden, beachten Sie das Speicherlimit von 5 GB. Mit dem Befehl werden Ihre Modelle in einen lokalen Ordner namens hosted_models heruntergeladen.

Modelle mit Cloud Storage hosten

Sobald Sie Ihre Modelle lokal haben, müssen Sie sie in einen Cloud Storage-Bucket hochladen.

Wählen Sie die Upload-Methode aus, die Ihren Anforderungen entspricht:

Modelle einzeln hochladen

  1. Erstellen Sie einen Storage-Bucket: Rufen Sie in der Firebase Console Datenbanken & Speicher > Storage auf und folgen Sie der Anleitung, um einen Bucket zu erstellen, falls noch nicht geschehen. Dazu ist ein Abrechnungskonto erforderlich. Weitere Informationen finden Sie unter Firebase-Preise.
  2. Laden Sie im Bereich Storage Ihre .tflite-Modelldateien in den gewünschten Pfad hoch.

Modelle im Bulk hochladen

  1. Erstellen Sie einen Storage-Bucket: Rufen Sie in der Firebase Console Datenbanken & Speicher > Storage auf und folgen Sie der Anleitung, um einen Bucket zu erstellen, falls noch nicht geschehen. Dazu ist ein Abrechnungskonto erforderlich. Weitere Informationen finden Sie unter Firebase-Preise.
  2. Verwenden Sie den folgenden gcloud-Befehl, um alle Modelle aus Ihrem lokalen Ordner hosted_models hochzuladen:

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

Sicherheit und App-Integration konfigurieren

  1. Achten Sie darauf, dass Ihre Storage-Sicherheitsregeln Ihrer App das Lesen der Modelldateien erlauben. Sie können den Zugriff beispielsweise auf authentifizierte Nutzer beschränken.

  2. Fügen Sie Ihrer App Storage hinzu: Folgen Sie der Einrichtungsanleitung für Android, Apple, oder Flutter.

  3. Aktualisieren Sie Ihren Anwendungscode, um die .tflite-Dateien aus Ihrem neuen Storage-Bucket herunterzuladen.

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

    Sobald das Modell heruntergeladen wurde, können Sie es mit Ihrer vorhandenen TensorFlow Lite-Bibliothek laden und verwenden.

  4. Optional: Sie können Firebase Remote Config verwenden, um Modellpfade in Ihrer App dynamisch zu aktualisieren, ohne dass eine neue Version erforderlich ist.

Optional: Zur LiteRT CompiledModel API migrieren

Wenn Ihre App noch die Legacy-TensorFlow Lite Interpreter API verwendet, sollten Sie zur LiteRT CompiledModel API migrieren. Diese bietet eine verbesserte Hardwarebeschleunigung und andere Verbesserungen gegenüber der Legacy-API.