TensorFlow Lite-Modelle von Firebase ML zu Cloud Storage migrieren

Wenn Sie Firebase Machine Learning zum Hosten benutzerdefinierter Modelle verwenden, müssen Sie vor der Einstellung des Firebase ML-Hostingdienstes am 15. Juni 2027 zu einer anderen Lösung migrieren.

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 Sie Ihre Modelle noch nicht lokal gespeichert haben, laden Sie sie aus Ihrem Firebase-Projekt herunter. Dazu haben Sie zwei Möglichkeiten:

Laden Sie sie einzeln in 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. 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 Sie das noch nicht getan haben. Dazu ist ein Abrechnungskonto 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. 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 Sie das noch nicht getan haben. Dazu ist ein Abrechnungskonto 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 einbinden: 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.