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

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

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

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

  1. Storage बकेट बनाएं: Firebase कंसोल में, डेटाबेस और स्टोरेज > Storage पर जाएं. अगर आपने पहले से कोई बकेट नहीं बनाई है, तो बकेट बनाने के लिए, शामिल होने के चरणों का पालन करें. ध्यान दें कि इसके लिए बिलिंग खाते की ज़रूरत होती है. ज़्यादा जानकारी के लिए, 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 CompiledModel API पर माइग्रेट करें

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