Memigrasikan model TensorFlow Lite dari Firebase ML ke Cloud Storage

Jika Anda menggunakan Firebase Machine Learning untuk menghosting model kustom, Anda harus bermigrasi ke solusi lain sebelum layanan hosting Firebase ML dihentikan pada 15 Juni 2027.

Salah satu alternatif yang dapat Anda gunakan adalah menghosting model menggunakan Cloud Storage for Firebase. Ikuti panduan ini untuk memigrasikan model dari Firebase ML ke Cloud Storage.

Mendownload model TensorFlow Lite

Jika Anda belum menyimpan model secara lokal, download model dari project Firebase. Anda memiliki dua opsi untuk melakukannya:

Mendownload model satu per satu dari Firebase console

  1. Buka bagian halaman Machine Learning di Firebase console.
  2. Untuk setiap model yang ingin Anda migrasikan, klik menu overflow tiga titik, lalu klik Download model.

Mendownload semua model yang dihosting secara massal

  1. Buka halaman Machine Learning di Firebase console.
  2. Klik tombol Get command for bulk download untuk mendapatkan perintah curl yang mendownload semua model dalam project. URL ini akan berakhir masa berlakunya dalam 7 hari.
  3. Jalankan perintah di terminal lokal atau di Cloud Shell. Jika menggunakan Cloud Shell, perhatikan batas penyimpanan disk 5 GB. Perintah ini akan mendownload model ke folder lokal bernama hosted_models.

Menghosting model menggunakan Cloud Storage

Setelah memiliki model secara lokal, Anda harus menguploadnya ke bucket Cloud Storage.

Pilih metode upload yang sesuai dengan kebutuhan Anda:

Mengupload model satu per satu

  1. Buat bucket Storage: di Firebase console, buka Databases & Storage > Storage dan ikuti langkah-langkah orientasi untuk membuat bucket jika Anda belum melakukannya. Perhatikan bahwa tindakan ini memerlukan akun penagihan; lihat harga Firebase untuk mengetahui detailnya.
  2. Masih di bagian Storage, upload file model .tflite ke jalur yang diinginkan.

Mengupload model secara massal

  1. Buat bucket Storage: di Firebase console, buka Databases & Storage > Storage dan ikuti langkah-langkah orientasi untuk membuat bucket jika Anda belum melakukannya. Perhatikan bahwa tindakan ini memerlukan akun penagihan; lihat harga Firebase untuk mengetahui detailnya.
  2. Gunakan perintah gcloud berikut untuk mengupload semua model dari folder hosted_models lokal:

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

Mengonfigurasi keamanan dan integrasi aplikasi

  1. Pastikan aturan keamanan Storage Anda mengizinkan aplikasi membaca file model. Misalnya, Anda dapat membatasi akses ke pengguna yang diautentikasi.

  2. Tambahkan Storage ke aplikasi Anda: ikuti panduan penyiapan untuk Android, Apple, atau Flutter.

  3. Perbarui kode aplikasi untuk mendownload file .tflite dari bucket Storage baru.

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

    Setelah model didownload, Anda dapat menggunakan library Tensorflow Lite yang ada untuk memuat model dan menggunakannya.

  4. (Opsional) Pertimbangkan untuk menggunakan Firebase Remote Config untuk memperbarui jalur model secara dinamis di aplikasi tanpa memerlukan rilis baru.

Opsional: Bermigrasi ke LiteRT CompiledModel API

Jika aplikasi Anda masih menggunakan TensorFlow Lite Interpreter API lama, pertimbangkan untuk bermigrasi ke LiteRT CompiledModel API, yang menawarkan dukungan akselerasi hardware yang ditingkatkan dan peningkatan lainnya dibandingkan API lama.