अपने TFLite-संचालित Android ऐप में Firebase जोड़ें

1 अवलोकन

cd824ecfd05a2822.png

फायरबेस एमएल आपको अपने मॉडल को ओवर-द-एयर तैनात करने में सक्षम बनाता है। यह आपको ऐप का आकार छोटा रखने और जरूरत पड़ने पर ही एमएल मॉडल डाउनलोड करने, कई मॉडलों के साथ प्रयोग करने या पूरे ऐप को दोबारा प्रकाशित किए बिना अपने एमएल मॉडल को अपडेट करने की अनुमति देता है।

इस कोडलैब में आप एक स्थिर टीएफलाइट मॉडल का उपयोग करके एक एंड्रॉइड ऐप को फायरबेस से गतिशील रूप से पेश किए गए मॉडल का उपयोग करके एक ऐप में परिवर्तित करेंगे।

आप क्या सीखेंगे

  • टीएफलाइट मॉडल को फायरबेस एमएल पर तैनात करें और उन्हें अपने ऐप से एक्सेस करें
  • फायरबेस एनालिटिक्स के साथ मॉडल सटीकता को मापने के लिए उपयोगकर्ता प्रतिक्रिया को ट्रैक करें
  • फायरबेस प्रदर्शन के माध्यम से प्रोफ़ाइल मॉडल प्रदर्शन
  • चुनें कि एकाधिक तैनात मॉडलों में से कौन सा रिमोट कॉन्फ़िगरेशन के माध्यम से लोड किया गया है
  • फायरबेस ए/बी परीक्षण के माध्यम से विभिन्न मॉडलों के साथ प्रयोग

आपको किस चीज़ की ज़रूरत पड़ेगी

  • नवीनतम एंड्रॉइड स्टूडियो संस्करण।
  • नमूना कोड।
  • Android 5.0+ और Google Play सेवाओं 9.8 या बाद के संस्करण वाला एक परीक्षण उपकरण, या Google Play सेवाओं 9.8 या बाद के संस्करण वाला एक एमुलेटर
  • यदि किसी उपकरण का उपयोग कर रहे हैं, तो एक कनेक्शन केबल।

आप इस ट्यूटोरियल का उपयोग कैसे करेंगे?

इसे केवल पूरा पढ़ें इसे पढ़ें और अभ्यास पूरा करें

एंड्रॉइड ऐप्स बनाने में आपके अनुभव का मूल्यांकन कैसे करेंगे?

नौसिखिए मध्यवर्ती प्रवीण

2. नमूना कोड प्राप्त करें

कमांड लाइन से GitHub रिपॉजिटरी को क्लोन करें।

$ git clone https://github.com/FirebaseExtended/codelab-digitclassifier-android.git

यदि आपके पास git स्थापित नहीं है, तो आप नमूना प्रोजेक्ट को इसके GitHub पेज से या इस लिंक पर क्लिक करके भी डाउनलोड कर सकते हैं।

3. स्टार्टर ऐप आयात करें

एंड्रॉइड स्टूडियो से, codelab-digitclassifier-android निर्देशिका का चयन करें ( android_studio_folder.png ) नमूना कोड डाउनलोड से ( फ़ाइल > ओपन > .../कोडलैब-डिजिटक्लासिफायर-एंड्रॉइड/स्टार्ट)।

अब आपके पास एंड्रॉइड स्टूडियो में स्टार्ट प्रोजेक्ट खुला होना चाहिए।

4. स्टार्टर ऐप चलाएँ

अब जब आपने प्रोजेक्ट को एंड्रॉइड स्टूडियो में आयात कर लिया है, तो आप पहली बार ऐप चलाने के लिए तैयार हैं। अपने एंड्रॉइड डिवाइस को कनेक्ट करें, और रन पर क्लिक करें ( निष्पादित.png )एंड्रॉइड स्टूडियो टूलबार में।

ऐप आपके डिवाइस पर लॉन्च होना चाहिए. इस बिंदु पर, यदि आप कोई अंक बनाने का प्रयास करते हैं, तो ऐप उसे पहचानने में सक्षम होना चाहिए।

6e36e1b947b395f2.png

5. फायरबेस कंसोल प्रोजेक्ट बनाएं

प्रोजेक्ट में फायरबेस जोड़ें

  1. फायरबेस कंसोल पर जाएं।
  2. प्रोजेक्ट जोड़ें चुनें.
  3. प्रोजेक्ट का नाम चुनें या दर्ज करें.
  4. फायरबेस कंसोल में शेष सेटअप चरणों का पालन करें, फिर प्रोजेक्ट बनाएं पर क्लिक करें (या यदि आप मौजूदा Google प्रोजेक्ट का उपयोग कर रहे हैं तो फायरबेस जोड़ें)।

6. फायरबेस जोड़ें

  1. अपने नए प्रोजेक्ट की अवलोकन स्क्रीन से, सेटअप वर्कफ़्लो लॉन्च करने के लिए एंड्रॉइड आइकन पर क्लिक करें।
  2. कोडलैब का पैकेज नाम दर्ज करें: org.tensorflow.lite.examples.digitclassifier

अपने ऐप में google-services.json फ़ाइल जोड़ें

पैकेज का नाम पंजीकृत करने और अगला चुनने के बाद, अपनी फायरबेस एंड्रॉइड कॉन्फ़िगरेशन फ़ाइल प्राप्त करने के लिए google-services.json डाउनलोड करें पर क्लिक करें, फिर google-services.json फ़ाइल को अपने प्रोजेक्ट में app निर्देशिका में कॉपी करें। फ़ाइल डाउनलोड होने के बाद आप कंसोल में दिखाए गए अगले चरणों को छोड़ सकते हैं (वे बिल्ड-एंड्रॉइड-स्टार्ट प्रोजेक्ट में आपके लिए पहले ही किए जा चुके हैं)।

अपने ऐप में google-services प्लगइन जोड़ें

Google-services प्लगइन आपके एप्लिकेशन को Firebase का उपयोग करने के लिए कॉन्फ़िगर करने के लिए google-services.json फ़ाइल का उपयोग करता है। अपने प्रोजेक्ट की app निर्देशिका में build.gradle.kts फ़ाइल के शीर्ष पर plugins ब्लॉक में निम्नलिखित पंक्ति जोड़ें:

ऐप/बिल्ड.ग्रेडल.kts

id("com.google.gms.google-services")

फिर प्रोजेक्ट में अपनी build.gradle.kts फ़ाइल के plugins ब्लॉक में निम्नलिखित पंक्ति जोड़ें:

प्रोजेक्ट/बिल्ड.ग्रेडल.kts

id("com.google.gms.google-services") version "4.3.15" apply false

अपने प्रोजेक्ट को ग्रेडेल फ़ाइलों के साथ सिंक करें

यह सुनिश्चित करने के लिए कि सभी निर्भरताएँ आपके ऐप के लिए उपलब्ध हैं, आपको इस बिंदु पर अपने प्रोजेक्ट को ग्रेडेल फ़ाइलों के साथ सिंक करना चाहिए। एंड्रॉइड स्टूडियो टूलबार से फ़ाइल > ग्रैडल फ़ाइलों के साथ सिंक प्रोजेक्ट चुनें।

7. ऐप को फायरबेस से चलाएं

अब जब आपने अपनी JSON फ़ाइल के साथ google-services प्लगइन कॉन्फ़िगर कर लिया है, तो आप Firebase के साथ ऐप चलाने के लिए तैयार हैं। अपने एंड्रॉइड डिवाइस को कनेक्ट करें, और रन पर क्लिक करें ( निष्पादित.png )एंड्रॉइड स्टूडियो टूलबार में।

ऐप आपके डिवाइस पर लॉन्च होना चाहिए. इस बिंदु पर, आपका ऐप अभी भी सफलतापूर्वक निर्मित होना चाहिए।

8. फायरबेस एमएल में एक मॉडल तैनात करें

फायरबेस एमएल में एक मॉडल तैनात करना दो मुख्य कारणों से उपयोगी है:

  1. हम ऐप इंस्टॉल का आकार छोटा रख सकते हैं और जरूरत पड़ने पर ही मॉडल डाउनलोड कर सकते हैं
  2. मॉडल को नियमित रूप से और संपूर्ण ऐप की तुलना में भिन्न रिलीज़ चक्र के साथ अपडेट किया जा सकता है

इससे पहले कि हम अपने ऐप में स्थिर मॉडल को फायरबेस से गतिशील रूप से डाउनलोड किए गए मॉडल से बदल सकें, हमें इसे फायरबेस एमएल पर तैनात करना होगा। मॉडल को फायरबेस एडमिन एसडीके का उपयोग करके या तो कंसोल के माध्यम से या प्रोग्रामेटिक रूप से तैनात किया जा सकता है। इस चरण में हम कंसोल के माध्यम से तैनात करेंगे।

चीजों को सरल रखने के लिए, हम TensorFlow Lite मॉडल का उपयोग करेंगे जो पहले से ही हमारे ऐप में है। सबसे पहले, फायरबेस कंसोल खोलें और बाएं नेविगेशन पैनल में मशीन लर्निंग पर क्लिक करें। यदि आप इसे पहली बार खोल रहे हैं तो 'आरंभ करें' पर क्लिक करें। फिर "कस्टम" पर जाएँ और "कस्टम मॉडल जोड़ें" बटन पर क्लिक करें।

संकेत मिलने पर, मॉडल को mnist_v1 जैसा एक वर्णनात्मक नाम दें और फ़ाइल को start/app/src/main/assets/mnist.tflite अंतर्गत कोडलैब प्रोजेक्ट निर्देशिका से अपलोड करें। फिर आप इस टीएफ लाइट मॉडल फ़ाइल को एंड्रॉइड प्रोजेक्ट से हटा सकते हैं।

3c3c50e6ef12b3b.png

9. फायरबेस एमएल से मॉडल डाउनलोड करें

फायरबेस से रिमोट मॉडल को अपने ऐप में कब डाउनलोड करना है यह चुनना मुश्किल हो सकता है क्योंकि टीएफलाइट मॉडल अपेक्षाकृत बड़े हो सकते हैं। आदर्श रूप से हम ऐप लॉन्च होने पर मॉडल को तुरंत लोड करने से बचना चाहते हैं, क्योंकि यदि हमारा मॉडल केवल एक सुविधा के लिए उपयोग किया जाता है और उपयोगकर्ता कभी भी उस सुविधा का उपयोग नहीं करता है, तो हमने बिना किसी कारण के महत्वपूर्ण मात्रा में डेटा डाउनलोड किया होगा। हम डाउनलोड विकल्प भी सेट कर सकते हैं जैसे कि वाईफाई से कनेक्ट होने पर केवल मॉडल लाना। यदि आप यह सुनिश्चित करना चाहते हैं कि मॉडल नेटवर्क कनेक्शन के बिना भी उपलब्ध है, तो इसे ऐप के बिना बैकअप के रूप में बंडल करना भी महत्वपूर्ण है।

सरलता के लिए, हम डिफ़ॉल्ट बंडल मॉडल को हटा देंगे और ऐप शुरू होने पर हमेशा फायरबेस से एक मॉडल डाउनलोड करेंगे। इस तरह अंक पहचान चलाते समय आप यह सुनिश्चित कर सकते हैं कि अनुमान फायरबेस से प्रदान किए गए मॉडल के साथ चल रहा है।

ऐप/बिल्ड.ग्रेडल.kts फ़ाइल में, फ़ायरबेस मशीन लर्निंग निर्भरता जोड़ें

ऐप/बिल्ड.ग्रेडल.kts

implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

फिर फायरबेस से मॉडल डाउनलोड करने के लिए तर्क जोड़ें।

हम digitClassifier.initialize(loadModelFile()) downloadModel("mnist_v1") से बदल देंगे और इस विधि को लागू करेंगे।

MainActivity.kt

  private fun downloadModel(modelName: String): Task<CustomModel> {
    val conditions = CustomModelDownloadConditions.Builder()
    .requireWifi()
    .build()
    return FirebaseModelDownloader.getInstance()
        .getModel(modelName, DownloadType.LOCAL_MODEL, conditions)
        .addOnCompleteListener {
          val model = it.result
          if (model == null) {
            showToast("Failed to get model file.")
          } else {
            showToast("Downloaded remote model: $modelName")
            digitClassifier.initialize(model)
          }
        }
      .addOnFailureListener {
        showToast("Model download failed for $modelName, please check your connection.")
      }
  }

अपने ऐप को दोबारा चलाएं और अंक क्लासिफायरियर में एक अंक बनाएं। एक बार डाउनलोड समाप्त हो जाने पर, आपको एक टोस्ट संदेश देखना चाहिए कि रिमोट मॉडल डाउनलोड हो गया है और एक लॉग यह दर्शाता है कि आपके नए मॉडल का उपयोग किया जा रहा है।

10. मॉडल सटीकता को मापने के लिए उपयोगकर्ता प्रतिक्रिया और रूपांतरण को ट्रैक करें

फायरबेस के लिए Google Analytics आपको यह समझने का एक तरीका प्रदान करता है कि उपयोगकर्ता आपके एप्लिकेशन के माध्यम से कैसे आगे बढ़ते हैं, वे कहां सफल होते हैं और कहां फंस जाते हैं और वापस लौट आते हैं। इसका उपयोग आपके एप्लिकेशन के सबसे अधिक उपयोग किए जाने वाले हिस्सों को समझने के लिए भी किया जा सकता है।

हम मॉडल भविष्यवाणियों पर उपयोगकर्ता की प्रतिक्रिया को ट्रैक करके मॉडल की सटीकता को मापेंगे। यदि कोई उपयोगकर्ता "हाँ" पर क्लिक करता है, तो यह इंगित करेगा कि भविष्यवाणी सटीक थी।

हम अपने मॉडल की सटीकता को ट्रैक करने के लिए एक एनालिटिक्स इवेंट लॉग कर सकते हैं। सबसे पहले, हमें एनालिटिक्स को प्रोजेक्ट में उपयोग करने से पहले निर्भरता में जोड़ना होगा:

फायरबेस एनालिटिक्स निर्भरता जोड़ें

ऐप/बिल्ड.ग्रेडल.kts

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-analytics-ktx")

इवेंट लॉग करें

फिर onCreate फ़ंक्शन पर हम ऑनक्लिक श्रोता को फ़ायरबेस पर correct_inference इवेंट लॉग करने के लिए सेट करेंगे।

MainActivity.kt (ऑनक्रिएट)

// Setup YES button
yesButton?.setOnClickListener {
  Firebase.analytics.logEvent("correct_inference", null)
}

ऐप को दोबारा चलाएं और एक अंक बनाएं। यह फीडबैक भेजने के लिए कि अनुमान सटीक था, "हाँ" बटन को कुछ बार दबाएँ।

डिबग एनालिटिक्स

आम तौर पर, आपके ऐप द्वारा लॉग किए गए ईवेंट को लगभग एक घंटे की अवधि में एक साथ बैच किया जाता है और एक साथ अपलोड किया जाता है। यह दृष्टिकोण अंतिम उपयोगकर्ताओं के उपकरणों पर बैटरी बचाता है और नेटवर्क डेटा उपयोग को कम करता है। हालाँकि, अपने एनालिटिक्स कार्यान्वयन को मान्य करने के उद्देश्य से (और, डिबगव्यू रिपोर्ट में अपने एनालिटिक्स को देखने के लिए), आप न्यूनतम देरी के साथ ईवेंट अपलोड करने के लिए अपने विकास डिवाइस पर डिबग मोड को सक्षम कर सकते हैं।

एंड्रॉइड डिवाइस पर एनालिटिक्स डिबग मोड सक्षम करने के लिए, निम्नलिखित कमांड निष्पादित करें:

adb shell setprop debug.firebase.analytics.app org.tensorflow.lite.examples.digitclassifier

ऐप को दोबारा चलाएं और एक अंक बनाएं। यह फीडबैक भेजने के लिए कि अनुमान सटीक था, "हाँ" बटन को कुछ बार दबाएँ। अब आप फायरबेस कंसोल में डिबग व्यू के माध्यम से लॉग इवेंट को वास्तविक समय में देख सकते हैं। बाएं नेविगेशन बार से Analytics > DebugView पर क्लिक करें।

5276199a086721fd.png

11. मॉडल के प्रदर्शन का विश्लेषण करें

फायरबेस परफॉर्मेंस मॉनिटरिंग एक ऐसी सेवा है जो आपके आईओएस, एंड्रॉइड और वेब ऐप्स की प्रदर्शन विशेषताओं के बारे में जानकारी हासिल करने में आपकी मदद करती है।

आप अपने ऐप से प्रदर्शन डेटा एकत्र करने के लिए प्रदर्शन मॉनिटरिंग एसडीके का उपयोग करते हैं, फिर फायरबेस कंसोल में उस डेटा की समीक्षा और विश्लेषण करते हैं। प्रदर्शन मॉनिटरिंग आपको यह समझने में मदद करती है कि आपके ऐप के प्रदर्शन में कहां और कब सुधार किया जा सकता है ताकि आप उस जानकारी का उपयोग प्रदर्शन समस्याओं को ठीक करने के लिए कर सकें।

यहां हम अनुमान और डाउनलोड के आसपास पूर्ण निशान जोड़ते हैं

यह महत्वपूर्ण है क्योंकि गहन-शिक्षण में उपयोग किए जाने वाले बड़े मॉडल अधिक सटीक होने की क्षमता रखते हैं, लेकिन उन्हें प्रतिक्रिया देने में अधिक समय भी लग सकता है। अपने प्रयोग में हम सटीकता और गति के बीच सही संतुलन खोजने का प्रयास कर रहे हैं।

फायरबेस प्रदर्शन निर्भरता जोड़ें

प्रोजेक्ट/बिल्ड.ग्रेडल.kts

plugins {
  // ...

  // Add the dependency for the Performance Monitoring plugin
  id("com.google.firebase.firebase-perf") version "1.4.2" apply false
}

ऐप/बिल्ड.ग्रेडल.kts

plugins {
  // ...

  // Add the Performance Monitoring plugin
  id("com.google.firebase.firebase-perf")
}

// ...

dependencies {
  // ...

  // Add the dependency for the Performance Monitoring library
  implementation("com.google.firebase:firebase-perf")
}

कस्टम निशान जोड़ें

setupDigitClassifier() फ़ंक्शन में एक नया डाउनलोडट्रेस बनाएं, और मॉडल डाउनलोड करने से ठीक पहले इसे शुरू करें। फिर ट्रेस को रोकते हुए एक असफल श्रोता जोड़ें।

classifyDrawing() फ़ंक्शन में एक नया classifyTrace बनाएं, और इसे वर्गीकरण से ठीक पहले शुरू करें। फिर ऑनसक्सेस श्रोता में ट्रेस बंद करें।

MainActivity.kt

class MainActivity : AppCompatActivity() {
  // ...
  
  private val firebasePerformance = FirebasePerformance.getInstance()
  
  // ...

  private fun setupDigitClassifier() {
    // Add these lines to create and start the trace
    val downloadTrace = firebasePerformance.newTrace("download_model")
    downloadTrace.start()
    downloadModel("mnist_v1")
      // Add these lines to stop the trace on success
      .addOnSuccessListener {
        downloadTrace.stop()
      }
  }

// ...

  private fun classifyDrawing() {
    val bitmap = drawView?.getBitmap()

    if ((bitmap != null) && (digitClassifier.isInitialized)) {
      // Add these lines to create and start the trace
      val classifyTrace = firebasePerformance.newTrace("classify")
      classifyTrace.start()
      digitClassifier
        .classifyAsync(bitmap)
        .addOnSuccessListener { resultText -> 
          // Add this line to stop the trace on success
          classifyTrace.stop()
          predictedTextView?.text = resultText
        }
        .addOnFailureListener { e ->
          predictedTextView?.text = getString(
            R.string.tfe_dc_classification_error_message,
            e.localizedMessage
          )
          Log.e(TAG, "Error classifying drawing.", e)
        }
    }
  }

प्रदर्शन इवेंट के लिए लॉग संदेश देखें

  1. अपने ऐप की AndroidManifest.xml फ़ाइल में <meta-data> तत्व जोड़कर बिल्ड समय पर प्रदर्शन मॉनिटरिंग के लिए डिबग लॉगिंग सक्षम करें, जैसे:

AndroidManifest.xml

<application>
    <meta-data
      android:name="firebase_performance_logcat_enabled"
      android:value="true" />
</application>
  1. किसी भी त्रुटि संदेश के लिए अपने लॉग संदेशों की जाँच करें।
  2. परफॉर्मेंस मॉनिटरिंग अपने लॉग संदेशों को FirebasePerformance के साथ टैग करता है। लॉगकैट फ़िल्टरिंग का उपयोग करके, आप निम्न कमांड चलाकर विशेष रूप से अवधि ट्रेस और HTTP/S नेटवर्क अनुरोध लॉगिंग देख सकते हैं:
adb logcat -s FirebasePerformance
  1. निम्नलिखित प्रकार के लॉग की जाँच करें जो इंगित करते हैं कि प्रदर्शन निगरानी प्रदर्शन घटनाओं को लॉग कर रही है:
  • Logging TraceMetric
  • Logging NetworkRequestMetric

12. फायरबेस एमएल में दूसरा मॉडल तैनात करें

आपके मॉडल के नए संस्करण के साथ आने पर, जैसे कि बेहतर मॉडल वास्तुकला वाला या बड़े या अद्यतन डेटासेट पर प्रशिक्षित, हम अपने वर्तमान मॉडल को नए संस्करण के साथ बदलने के लिए प्रलोभित महसूस कर सकते हैं। हालाँकि, परीक्षण में अच्छा प्रदर्शन करने वाला मॉडल जरूरी नहीं कि उत्पादन में भी उतना ही अच्छा प्रदर्शन करे। इसलिए, आइए अपने मूल मॉडल और नए मॉडल की तुलना करने के लिए उत्पादन में ए/बी परीक्षण करें।

फायरबेस मॉडल प्रबंधन एपीआई सक्षम करें

इस चरण में, हम पायथन कोड का उपयोग करके हमारे टेन्सरफ्लो लाइट मॉडल के एक नए संस्करण को तैनात करने के लिए फायरबेस मॉडल प्रबंधन एपीआई को सक्षम करेंगे।

अपने एमएल मॉडलों को संग्रहीत करने के लिए एक बकेट बनाएं

अपने फायरबेस कंसोल में, स्टोरेज पर जाएं और आरंभ करें पर क्लिक करें। fbbea78f0eb3dc9f.png

अपनी बाल्टी सेट अप करने के लिए संवाद का पालन करें।

19517c0d6d2aa14d.png

फायरबेस एमएल एपीआई सक्षम करें

Google क्लाउड कंसोल पर फायरबेस एमएल एपीआई पेज पर जाएं और सक्षम करें पर क्लिक करें।

2414fd5cced6c984.png पूछे जाने पर डिजिट क्लासिफायर ऐप चुनें।

एक नया मॉडल प्रशिक्षित करें और फायरबेस एमएल पर प्रकाशित करें

अब हम एक बड़े डेटासेट का उपयोग करके मॉडल के एक नए संस्करण को प्रशिक्षित करेंगे, और फिर हम इसे फायरबेस एडमिन एसडीके का उपयोग करके सीधे प्रशिक्षण नोटबुक से प्रोग्रामेटिक रूप से तैनात करेंगे।

सेवा खाते के लिए निजी कुंजी डाउनलोड करें

इससे पहले कि हम फायरबेस एडमिन एसडीके का उपयोग कर सकें, हमें एक सेवा खाता बनाना होगा। इस लिंक पर क्लिक करके फायरबेस कंसोल का सर्विस अकाउंट पैनल खोलें और फायरबेस एडमिन एसडीके के लिए एक नया सर्विस अकाउंट बनाने के लिए बटन पर क्लिक करें। संकेत मिलने पर, नई निजी कुंजी उत्पन्न करें बटन पर क्लिक करें। हम कोलाब नोटबुक से अपने अनुरोधों को प्रमाणित करने के लिए सेवा खाता कुंजी का उपयोग करेंगे।

c3b95de1e5508516.png

अब हम नए मॉडल को प्रशिक्षित और तैनात कर सकते हैं।

  1. इस कोलाब नोटबुक को खोलें और अपनी ड्राइव के अंतर्गत इसकी एक प्रति बनाएं।
  2. इसके बाईं ओर प्ले बटन पर क्लिक करके पहला सेल "एक बेहतर टेन्सरफ्लो लाइट मॉडल को प्रशिक्षित करें" चलाएं। यह एक नए मॉडल को प्रशिक्षित करेगा और इसमें कुछ समय लग सकता है।
  3. दूसरा सेल चलाने से फ़ाइल अपलोड प्रॉम्प्ट बन जाएगा। अपना सेवा खाता बनाते समय फायरबेस कंसोल से डाउनलोड की गई json फ़ाइल अपलोड करें।

71e847c6a85423b3.png

  1. अंतिम दो कक्ष चलाएँ.

कोलाब नोटबुक चलाने के बाद, आपको फायरबेस कंसोल में दूसरा मॉडल देखना चाहिए। सुनिश्चित करें कि दूसरे मॉडल का नाम mnist_v2 है।

c316683bb4d75d57.png

13. रिमोट कॉन्फ़िगरेशन के माध्यम से एक मॉडल का चयन करें

अब जबकि हमारे पास दो अलग-अलग मॉडल हैं, हम रनटाइम पर कौन सा मॉडल डाउनलोड करना है यह चुनने के लिए एक पैरामीटर जोड़ेंगे। क्लाइंट को प्राप्त पैरामीटर का मान यह निर्धारित करेगा कि क्लाइंट कौन सा मॉडल डाउनलोड करता है।

फायरबेस कंसोल में कॉन्फ़िगरेशन नियम जोड़ें

सबसे पहले, फायरबेस कंसोल खोलें और बाएं नेव मेनू में रिमोट कॉन्फिग बटन पर क्लिक करें। फिर, "पैरामीटर जोड़ें" बटन पर क्लिक करें।

नए पैरामीटर को model_name नाम दें और इसे "mnist_v1" का डिफ़ॉल्ट मान दें। रिमोट कॉन्फिग पैरामीटर में मॉडल का नाम डालकर, हम जिस मॉडल का परीक्षण करना चाहते हैं उसके लिए कोई नया पैरामीटर जोड़े बिना कई मॉडलों का परीक्षण कर सकते हैं। अपडेट लागू करने के लिए परिवर्तन प्रकाशित करें पर क्लिक करें।

2949cb95c7214ca4.png

फायरबेस रिमोटकॉन्फिग निर्भरता जोड़ें

ऐप/बिल्ड.ग्रेडल.kts

implementation("com.google.firebase:firebase-config-ktx")

फायरबेस रिमोट कॉन्फ़िगरेशन कॉन्फ़िगर करें

MainActivity.kt

  private fun configureRemoteConfig() {
    remoteConfig = Firebase.remoteConfig
    val configSettings = remoteConfigSettings {
      minimumFetchIntervalInSeconds = 3600
    }
    remoteConfig.setConfigSettingsAsync(configSettings)
  }

कॉन्फिग का अनुरोध करें और उपयोग करें

कॉन्फ़िगरेशन के लिए एक फ़ेच अनुरोध बनाएं और कॉन्फ़िगरेशन पैरामीटर लेने और उपयोग करने के लिए एक पूर्णता हैंडलर जोड़ें।

MainActivity.kt

 private fun setupDigitClassifier() {
    configureRemoteConfig()
    remoteConfig.fetchAndActivate()
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          val modelName = remoteConfig.getString("model_name")
          val downloadTrace = firebasePerformance.newTrace("download_model")
          downloadTrace.start()
          downloadModel(modelName)
            .addOnSuccessListener {
              downloadTrace.stop()
            }
        } else {
          showToast("Failed to fetch model name.")
        }
      }
  }

रिमोट कॉन्फ़िगरेशन का परीक्षण करें

  1. क्लिक करें 98205811bbed9d74.png चलाएँ बटन.
  2. जांचें कि आपको टोस्ट संदेश दिखाई दे रहा है कि mnist_v1 मॉडल डाउनलोड हो गया है।
  3. फायरबेस कंसोल पर वापस जाएं, डिफ़ॉल्ट मान को mnist_v2 में बदलें और अपडेट लागू करने के लिए परिवर्तन प्रकाशित करें का चयन करें।
  4. ऐप को पुनरारंभ करें और टोस्ट संदेश देखने के लिए जांचें कि इस बार mnist_v2 मॉडल डाउनलोड हो गया है।

14. ए/बी टेस्ट मॉडल प्रभावशीलता

फायरबेस ए/बी टेस्टिंग आपके ऐप अनुभव को चलाने, विश्लेषण करने और उत्पाद और मार्केटिंग प्रयोगों को स्केल करने में आसान बनाकर आपको अनुकूलित करने में मदद करती है। अंत में, हम यह देखने के लिए फायरबेस के अंतर्निहित ए/बी परीक्षण व्यवहार का उपयोग कर सकते हैं कि हमारे दो मॉडलों में से कौन सा बेहतर प्रदर्शन कर रहा है।

फायरबेस कंसोल में एनालिटिक्स -> इवेंट पर जाएं। यदि correct_inference ईवेंट दिख रहा है, तो इसे "रूपांतरण ईवेंट" के रूप में चिह्नित करें, यदि नहीं, तो आप एनालिटिक्स -> रूपांतरण ईवेंट पर जा सकते हैं और "एक नया रूपांतरण ईवेंट बनाएं" पर क्लिक करें और correct_inference.

अब फायरबेस कंसोल में "रिमोट कॉन्फिगरेशन" पर जाएं, हमारे द्वारा अभी जोड़े गए "मॉडल_नाम" पैरामीटर पर अधिक विकल्प मेनू से "ए/बी टेस्ट" बटन का चयन करें।

fad5ea36969d2aeb.png

आगे आने वाले मेनू में, डिफ़ॉल्ट नाम स्वीकार करें।

d7c006669ace6e40.png

ड्रॉपडाउन पर अपना ऐप चुनें और लक्ष्यीकरण मानदंड को 50% सक्रिय उपयोगकर्ताओं में बदलें।

cb72dcc7d2666bd3.png

यदि आप पहले correct_inference ईवेंट को रूपांतरण के रूप में सेट करने में सक्षम थे, तो इस ईवेंट को ट्रैक करने के लिए प्राथमिक मीट्रिक के रूप में उपयोग करें। अन्यथा, यदि आप एनालिटिक्स में ईवेंट के प्रदर्शित होने की प्रतीक्षा नहीं करना चाहते हैं, तो आप manually correct_inference जोड़ सकते हैं।

1ac9c94fb3159271.png

अंत में, वेरिएंट स्क्रीन पर, अपने नियंत्रण समूह वेरिएंट को mnist_v1 का उपयोग करने के लिए और अपने वेरिएंट A समूह को mnist_v2 का उपयोग करने के लिए सेट करें।

e4510434f8da31b6.png

निचले दाएं कोने में समीक्षा बटन पर क्लिक करें।

बधाई हो, आपने अपने दो अलग-अलग मॉडलों के लिए सफलतापूर्वक ए/बी परीक्षण बना लिया है! ए/बी परीक्षण अभी ड्राफ्ट स्थिति में है और इसे किसी भी समय "प्रयोग प्रारंभ करें" बटन पर क्लिक करके शुरू किया जा सकता है।

ए/बी परीक्षण पर करीब से नज़र डालने के लिए, ए/बी परीक्षण दस्तावेज़ देखें।

15. बधाई हो!

इस कोडलैब में, आपने सीखा कि अपने ऐप में स्टेटिकली-बंडल किए गए tflite एसेट को Firebase से डायनामिक रूप से लोड किए गए TFLite मॉडल से कैसे बदला जाए। TFLite और Firebase के बारे में अधिक जानने के लिए, अन्य TFLite नमूनों और Firebase प्रारंभ करने संबंधी मार्गदर्शिकाओं पर एक नज़र डालें।

हमने क्या कवर किया है

  • टेन्सरफ्लो लाइट
  • फायरबेस एमएल
  • फायरबेस एनालिटिक्स
  • फायरबेस प्रदर्शन निगरानी
  • फायरबेस रिमोट कॉन्फ़िगरेशन
  • फायरबेस ए/बी परीक्षण

अगले कदम

  • अपने ऐप में फायरबेस एमएल परिनियोजन लागू करें।

और अधिक जानें

एक सवाल है?

मुद्दों की रिपोर्ट करें