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 ditutup 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 Anda dari Firebase ML ke Cloud Storage.

Mendownload model TensorFlow Lite

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

Download 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 tambahan tiga titiknya, 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. Masa berlaku URL ini akan berakhir 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 Anda ke folder lokal bernama hosted_models.

Menghosting model menggunakan Cloud Storage

Setelah memiliki model secara lokal, Anda perlu 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 aktivasi untuk membuat bucket jika Anda belum melakukannya. Perhatikan bahwa hal 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 konsol Firebase, buka Databases & Storage > Storage dan ikuti langkah-langkah aktivasi 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 Anda:

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

Mengonfigurasi integrasi keamanan dan aplikasi

  1. Pastikan aturan keamanan Storage Anda mengizinkan aplikasi Anda 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 Anda untuk mendownload file .tflite dari bucket Storage baru Anda.

    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 dan menggunakan model.

  4. (Opsional) Pertimbangkan untuk menggunakan Firebase Remote Config untuk memperbarui jalur model secara dinamis di aplikasi Anda 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 lebih baik dan peningkatan lainnya dibandingkan dengan API lama.