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

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

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

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

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

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

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

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

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

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

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

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

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

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

อัปโหลดโมเดลหลายรายการพร้อมกัน

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

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

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

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

  2. เพิ่มพื้นที่เก็บข้อมูลลงในแอปโดยทำตามคู่มือการตั้งค่าสำหรับ 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 รุ่นเดิม