TensorFlow Lite मॉडल को Firebase ML से Cloud Storage पर माइग्रेट करना

अगर आपने अपने हिसाब से बनाए गए मॉडल को होस्ट करने के लिए, Firebase Machine Learning का इस्तेमाल किया है, तो आपको किसी दूसरे प्लैटफ़ॉर्म पर माइग्रेट करना होगा. ऐसा इसलिए, क्योंकि Firebase ML की होस्टिंग सेवा 15 जून, 2027 को बंद हो जाएगी.

एक विकल्प यह है कि मॉडल को होस्ट करने के लिए, Cloud Storage for Firebase का इस्तेमाल किया जाए. Firebase ML से Cloud Storage पर अपने मॉडल माइग्रेट करने के लिए, यह गाइड पढ़ें.

अपने TensorFlow लाइट मॉडल डाउनलोड करना

अगर आपके मॉडल, डिवाइस पर सेव नहीं हैं, तो उन्हें अपने Firebase प्रोजेक्ट से डाउनलोड करें. इसके लिए, आपके पास दो विकल्प हैं:

Firebase कंसोल से, एक-एक करके मॉडल डाउनलोड करना

  1. Firebase कंसोल में, मशीन लर्निंग पेज सेक्शन खोलें.
  2. माइग्रेट करने के लिए, हर मॉडल के तीन बिंदु वाले ओवरफ़्लो मेन्यू पर क्लिक करें. इसके बाद, मॉडल डाउनलोड करें पर क्लिक करें.

होस्ट किए गए सभी मॉडल एक साथ डाउनलोड करना

  1. Firebase कंसोल में, मशीन लर्निंग पेज खोलें.
  2. प्रोजेक्ट में मौजूद सभी मॉडल डाउनलोड करने के लिए, curl कमांड पाने के लिए, एक साथ डाउनलोड करने के लिए कमांड पाएं बटन पर क्लिक करें. ये यूआरएल, सात दिनों में काम करना बंद कर देंगे.
  3. कमांड को अपने लोकल टर्मिनल या Cloud Shell में चलाएं. अगर Cloud Shell का इस्तेमाल किया जा रहा है, तो ध्यान दें कि इसमें डिस्क स्टोरेज की सीमा 5 जीबी है. कमांड, आपके मॉडल को hosted_models नाम के लोकल फ़ोल्डर में डाउनलोड करेगी.

Cloud Storage का इस्तेमाल करके, अपने मॉडल होस्ट करना

मॉडल को लोकल तौर पर सेव करने के बाद, आपको उन्हें Cloud Storage बकेट में अपलोड करना होगा.

अपलोड करने का ऐसा तरीका चुनें जो आपकी ज़रूरत के हिसाब से सही हो:

एक-एक करके मॉडल अपलोड करना

  1. स्टोरेज बकेट बनाना: Firebase कंसोल में, डेटाबेस और स्टोरेज > स्टोरेज पर जाएं. अगर आपने पहले से कोई बकेट नहीं बनाई है, तो बकेट बनाने के लिए, ऑनबोर्डिंग के चरणों का पालन करें. ध्यान दें कि इसके लिए, बिलिंग खाता होना ज़रूरी है. ज़्यादा जानकारी के लिए, Firebase की कीमत देखें.
  2. स्टोरेज सेक्शन में रहते हुए, .tflite मॉडल फ़ाइलों को अपनी पसंद के पाथ पर अपलोड करें.

एक साथ कई मॉडल अपलोड करना

  1. स्टोरेज बकेट बनाना: Firebase कंसोल में, डेटाबेस और स्टोरेज > स्टोरेज पर जाएं. अगर आपने पहले से कोई बकेट नहीं बनाई है, तो बकेट बनाने के लिए, ऑनबोर्डिंग के चरणों का पालन करें. ध्यान दें कि इसके लिए, बिलिंग खाता होना ज़रूरी है. ज़्यादा जानकारी के लिए, Firebase की कीमत देखें.
  2. अपने लोकल hosted_models फ़ोल्डर से सभी मॉडल अपलोड करने के लिए, यह gcloud कमांड इस्तेमाल करें:

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

सुरक्षा और ऐप्लिकेशन इंटिग्रेशन कॉन्फ़िगर करना

  1. पक्का करें कि स्टोरेज के सुरक्षा नियमों के तहत, आपका ऐप्लिकेशन मॉडल फ़ाइलें पढ़ सके. उदाहरण के लिए, पुष्टि किए गए उपयोगकर्ताओं के लिए ऐक्सेस सीमित किया जा सकता है.

  2. अपने ऐप्लिकेशन में स्टोरेज जोड़ना: Android, Apple, या Flutter के लिए सेटअप गाइड का पालन करें.

  3. अपने नए स्टोरेज बकेट से .tflite फ़ाइलें डाउनलोड करने के लिए, अपने ऐप्लिकेशन का कोड अपडेट करें.

    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 के कंपाइल किए गए मॉडल के API पर माइग्रेट करना

अगर आपका ऐप्लिकेशन अब भी पुराने TensorFlow Lite Interpreter API का इस्तेमाल करता है, तो LiteRT CompiledModel API पर माइग्रेट करें. इससे, पुराने API के मुकाबले बेहतर हार्डवेयर ऐक्सेलरेशन सपोर्ट और अन्य सुधार मिलते हैं.