ย้ายข้อมูลโมเดล TensorFlow Lite จาก Firebase ML ไปยัง Cloud Storage

หากคุณใช้ Firebase Machine Learning เพื่อโฮสต์ โมเดลที่กำหนดเอง, คุณต้องย้ายข้อมูลไปยังโซลูชันอื่นก่อนที่บริการโฮสติ้ง Firebase ML จะ ปิดตัวลงในวันที่ 15 มิถุนายน 2027

อีกทางเลือกหนึ่งที่คุณอาจใช้คือการโฮสต์โมเดลโดยใช้ Cloud Storage for Firebase แทน โปรดทำตามคู่มือนี้เพื่อย้ายข้อมูลโมเดลจาก Firebase ML ไปยัง Cloud Storage

ดาวน์โหลดโมเดล TensorFlow Lite

หากยังไม่ได้จัดเก็บโมเดลไว้ในเครื่อง ให้ดาวน์โหลดจากโปรเจ็กต์ Firebase โดยทำได้ 2 วิธีดังนี้

ดาวน์โหลดทีละรายการจากคอนโซล Firebase

  1. เปิดส่วนหน้าMachine Learning ในคอนโซล Firebase
  2. สำหรับแต่ละโมเดลที่ต้องการย้ายข้อมูล ให้คลิกเมนูรายการเพิ่มเติม 3 จุดของโมเดลนั้น แล้วคลิกดาวน์โหลดโมเดล

ดาวน์โหลดโมเดลที่โฮสต์ทั้งหมดพร้อมกัน

  1. เปิดหน้าMachine Learning ในคอนโซล Firebase
  2. คลิกปุ่มรับคำสั่งสำหรับการดาวน์โหลดจำนวนมาก เพื่อรับคำสั่ง curl ที่ดาวน์โหลดโมเดลทั้งหมดในโปรเจ็กต์ โดย URL เหล่านี้จะหมดอายุใน 7 วัน
  3. เรียกใช้คำสั่งในเทอร์มินัลในเครื่องหรือใน Cloud Shell หากใช้ Cloud Shell โปรดทราบว่ามีขีดจำกัดพื้นที่เก็บข้อมูลบนดิสก์ 5 GB คำสั่งจะดาวน์โหลดโมเดลไปยังโฟลเดอร์ในเครื่องชื่อ hosted_models

โฮสต์โมเดลโดยใช้ Cloud Storage

เมื่อมีโมเดลอยู่ในเครื่องแล้ว คุณต้องอัปโหลดโมเดลไปยัง Bucket ของ Cloud Storage

เลือกวิธีการอัปโหลดที่ตรงกับความต้องการของคุณ

อัปโหลดโมเดลทีละรายการ

  1. สร้าง Bucket ของ Storage: ในคอนโซล Firebase ให้ไปที่ ฐานข้อมูลและพื้นที่เก็บข้อมูล > พื้นที่เก็บข้อมูล แล้วทำตามขั้นตอนเริ่มต้นใช้งานเพื่อสร้าง Bucket หากยังไม่ได้สร้าง โปรดทราบว่าการดำเนินการนี้ต้องใช้บัญชีสำหรับการเรียกเก็บเงิน โปรดดูรายละเอียดที่ ราคา Firebase
  2. ในส่วนพื้นที่เก็บข้อมูล ให้อัปโหลดไฟล์โมเดล .tflite ไปยังเส้นทางที่ต้องการ

อัปโหลดโมเดลจำนวนมาก

  1. สร้าง Bucket ของ Storage: ในคอนโซล Firebase ให้ไปที่ ฐานข้อมูลและพื้นที่เก็บข้อมูล > พื้นที่เก็บข้อมูล แล้วทำตามขั้นตอนเริ่มต้นใช้งานเพื่อสร้าง Bucket หากยังไม่ได้สร้าง โปรดทราบว่าการดำเนินการนี้ต้องใช้บัญชีสำหรับการเรียกเก็บเงิน โปรดดูรายละเอียดที่ ราคา Firebase
  2. ใช้คำสั่ง gcloud ต่อไปนี้เพื่ออัปโหลดโมเดลทั้งหมดจากโฟลเดอร์ hosted_models ในเครื่อง

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

กำหนดค่าการรักษาความปลอดภัยและการผสานรวมแอป

  1. ตรวจสอบว่า กฎความปลอดภัยของ Storage อนุญาตให้แอปอ่านไฟล์โมเดลได้ ตัวอย่างเช่น คุณสามารถจำกัดการเข้าถึงไว้สำหรับผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์

  2. เพิ่ม Storage ลงในแอปโดยทำตามคู่มือการตั้งค่าสำหรับ Android, Apple, หรือ Flutter.

  3. อัปเดตโค้ดของแอปพลิเคชันเพื่อดาวน์โหลดไฟล์ .tflite จาก Bucket ของ Storage ใหม่

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

    เมื่อดาวน์โหลดโมเดลแล้ว คุณจะใช้ไลบรารี Tensorflow Lite ที่มีอยู่เพื่อโหลดและใช้โมเดลได้

  4. (ไม่บังคับ) ลองใช้ การกำหนดค่าระยะไกลของ Firebase เพื่ออัปเดตเส้นทางโมเดลในแอปแบบไดนามิกโดยไม่ต้องเผยแพร่เวอร์ชันใหม่

ไม่บังคับ: ย้ายข้อมูลไปยัง LiteRT CompiledModel API

หากแอปยังคงใช้ TensorFlow Lite Interpreter API แบบเดิมอยู่ ให้ลอง ย้ายข้อมูลไปยัง LiteRT CompiledModel API ซึ่งมีการรองรับการเร่งความเร็วด้วยฮาร์ดแวร์ที่ดีขึ้นและการปรับปรุงอื่นๆ มากกว่า API แบบเดิม