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 mit Cloud Storage for Firebase zu hosten. In dieser Anleitung erfahren Sie, wie Sie Ihre Modelle von Firebase ML zu Cloud Storage 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:

Laden Sie sie einzeln aus der Firebase Console herunter.

  1. Öffnen Sie in der Firebase Console den Seitenbereich 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 per Bulk-Verfahren 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 in 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 mit dem Namen 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. Storage-Bucket erstellen: Rufen Sie in der Firebase Console Datenbanken & Speicher > Storage auf und folgen Sie der Anleitung, um ein Bucket zu erstellen, falls Sie das noch nicht getan haben. Dazu ist ein Rechnungskonto erforderlich. Weitere Informationen finden Sie unter Firebase-Preise.
  2. Laden Sie im Abschnitt Speicher Ihre .tflite-Modelldateien in den gewünschten Pfad hoch.

Modelle im Bulk hochladen

  1. Storage-Bucket erstellen: Rufen Sie in der Firebase Console Datenbanken & Speicher > Storage auf und folgen Sie der Anleitung, um ein Bucket zu erstellen, falls Sie das noch nicht getan haben. Dazu ist ein Rechnungskonto erforderlich. Weitere Informationen finden Sie unter Firebase-Preise.
  2. Verwenden Sie den folgenden gcloud-Befehl, um alle Modelle aus dem 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 beispielsweise den Zugriff auf authentifizierte Nutzer beschränken.

  2. Speicher in Ihre App einfügen: Folgen Sie der Einrichtungsanleitung für Android, Apple oder Flutter.

  3. Aktualisieren Sie den Anwendungscode, damit die .tflite-Dateien aus dem neuen Storage-Bucket heruntergeladen werden.

    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 Ihre vorhandene TensorFlow Lite-Bibliothek verwenden, um das Modell zu laden und zu verwenden.

  4. Optional: Verwenden Sie Firebase Remote Config, 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 alte TensorFlow Lite-API Interpreter verwendet, sollten Sie zur LiteRT-API CompiledModel migrieren. Diese bietet eine verbesserte Unterstützung für Hardwarebeschleunigung und andere Verbesserungen gegenüber der alten API.