उपयोगकर्ता के डिवाइस पर रीयल टाइम में इन-ऐप्लिकेशन खरीदारी को ऑप्टिमाइज़ करने के लिए कोडलैब (कोडलैब)

1. खास जानकारी

1cbf855eda62c306.png

डिवाइस पर रीयलटाइम में इन-ऐप्लिकेशन खरीदारी को ऑप्टिमाइज़ करने से जुड़े कोडलैब में आपका स्वागत है. इस कोडलैब में, आपको TensorFlow Lite और Firebase का इस्तेमाल करके, अपने ऐप्लिकेशन के लिए कस्टम पर्सनलाइज़ेशन मॉडल को ट्रेन और डिप्लॉय करने का तरीका बताया जाएगा.

इस ट्यूटोरियल में, लोगों की दिलचस्पी के हिसाब से सुझाव देने के लिए मशीन लर्निंग मॉडल बनाने का तरीका बताया गया है. खास तौर पर, ऐसा मॉडल जो मौजूदा उपयोगकर्ता की स्थिति के हिसाब से, इन-ऐप्लिकेशन खरीदारी (आईएपी) का सबसे सही ऑफ़र का अनुमान लगाता है. यह कॉन्टेक्स्ट के हिसाब से काम करने वाले बैंडिट एल्गोरिदम की समस्या का एक उदाहरण है. यह मशीन लर्निंग की एक अहम समस्या है, जिसका इस्तेमाल कई तरह की समस्याओं को हल करने के लिए किया जाता है. इस कोडलैब में, आपको इसके बारे में ज़्यादा जानकारी मिलेगी

आपको क्या सीखने को मिलेगा

  • Firebase Analytics की मदद से, आंकड़ों का डेटा इकट्ठा करना
  • BigQuery का इस्तेमाल करके, आंकड़ों से जुड़े डेटा को पहले से प्रोसेस करना
  • इन-ऐप्लिकेशन खरीदारी (आईएपी) को डिवाइस पर ऑप्टिमाइज़ करने के लिए, मशीन लर्निंग के किसी सामान्य मॉडल को ट्रेन करना
  • Firebase ML में TFLite मॉडल डिप्लॉय करना और उन्हें अपने ऐप्लिकेशन से ऐक्सेस करना
  • Firebase A/B टेस्टिंग की मदद से, अलग-अलग मॉडल को मेज़र करना और उन्हें आज़माना
  • बार-बार होने वाले कैडेंस के आधार पर, नए डेटा का इस्तेमाल करके नए मॉडल को ट्रेन और डिप्लॉय करना

आपको इनकी ज़रूरत होगी

  • Android Studio 3.4 या इसके बाद का वर्शन
  • Android 2.3 या इसके बाद के वर्शन और Google Play services 9.8 या इसके बाद के वर्शन वाला कोई फ़िज़िकल टेस्ट डिवाइस या Google Play services 9.8 या इसके बाद के वर्शन वाला कोई Emulator
  • अगर फ़िज़िकल टेस्ट डिवाइस का इस्तेमाल किया जा रहा है, तो कनेक्शन केबल
  • एमएल के बारे में सामान्य जानकारी

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

सिर्फ़ इसे पढ़ें इसे पढ़ें और एक्सरसाइज़ पूरी करें

Android ऐप्लिकेशन बनाने के अपने अनुभव को आप क्या रेटिंग देंगे?

शुरुआती स्तर सामान्य स्तर एडवांस लेवल

2. समस्या का ब्यौरा

मान लें कि आप एक गेम डेवलपर हैं. आपको हर लेवल के आखिर में, लोगों की दिलचस्पी के हिसाब से इन-ऐप्लिकेशन खरीदारी (आईएपी) के सुझाव दिखाने हैं. हर बार, सिर्फ़ कुछ IAP विकल्प दिखाए जा सकते हैं. साथ ही, आपको यह भी नहीं पता होता कि किस विकल्प से सबसे ज़्यादा कन्वर्ज़न मिलेंगे. हर उपयोगकर्ता और हर सेशन अलग होता है. ऐसे में, हम ऐसा IAP ऑफ़र कैसे ढूंढें जिससे सबसे ज़्यादा इनाम मिलने की संभावना हो?

3. सैंपल कोड पाना

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

git clone https://github.com/googlecodelabs/firebase-iap-optimization.git

इस रिपॉज़िटरी में यह कॉन्टेंट शामिल है:

  1. एक Jupyter notebook (.ipynb), जो मनमुताबिक़ मॉडल को ट्रेन करता है और उसे TFLite मॉडल में पैकेज करता है
  2. Kotlin का एक सैंपल ऐप्लिकेशन, जो डिवाइस पर अनुमान लगाने के लिए TFLite मॉडल का इस्तेमाल करता है

4. Firebase की मदद से ऐप्लिकेशन चलाना

इस कोडलैब में, हम अपने काल्पनिक गेम ऐप्लिकेशन - Flappy Sparky के IAP को ऑप्टिमाइज़ करने पर काम करेंगे. यह एक साइड-स्क्रोलर गेम है. इसमें खिलाड़ी, स्पार्की को कंट्रोल करता है. स्पार्की को दीवारों के कॉलम के बीच से उड़ना होता है. हालांकि, उसे दीवारों से टकराना नहीं होता. लेवल की शुरुआत में, उपयोगकर्ता को आईएपी ऑफ़र दिखाया जाता है. इससे उसे पावरअप मिलेगा. इस कोडलैब में, हम ऐप्लिकेशन में IAP ऑप्टिमाइज़ेशन के सिर्फ़ एक हिस्से को लागू करेंगे.

यहां सीखी गई बातों को, Firebase प्रोजेक्ट से कनेक्ट किए गए अपने ऐप्लिकेशन पर लागू किया जा सकेगा. इसके अलावा, इस कोडलैब के लिए एक नया Firebase प्रोजेक्ट बनाया जा सकता है. अगर आपको Firebase का इस्तेमाल शुरू करने में मदद चाहिए, तो कृपया इस विषय पर हमारे ट्यूटोरियल ( Android और iOS) देखें.

5. अपने ऐप्लिकेशन में Analytics इवेंट इकट्ठा करना

Analytics इवेंट से, उपयोगकर्ता के व्यवहार के बारे में अहम जानकारी मिलती है. इनका इस्तेमाल एमएल मॉडल को ट्रेन करने के लिए किया जाता है. उदाहरण के लिए, मॉडल यह जान सकता है कि ज़्यादा समय तक गेम खेलने वाले उपयोगकर्ताओं के, अतिरिक्त लाइफ़ पाने के लिए आईएपी करने की संभावना ज़्यादा होती है. इस जानकारी को समझने के लिए, एमएल मॉडल को इनपुट के तौर पर Analytics इवेंट की ज़रूरत होती है.

हम इन ऐनलिटिक्स इवेंट को लॉग कर सकते हैं:

  • उपयोगकर्ता ने गेम कितने समय तक खेला
  • उपयोगकर्ता किस लेवल तक पहुंचता है
  • उपयोगकर्ता ने कितने सिक्के खर्च किए
  • उपयोगकर्ता ने कौनसे आइटम खरीदे

डेटा का नमूना डाउनलोड करें (ज़रूरी नहीं)

यहां दिए गए चरणों में, हम Firebase Analytics का इस्तेमाल करके Analytics इवेंट लॉग करेंगे, ताकि उन्हें अपने मॉडल में इस्तेमाल किया जा सके. अगर आपके पास पहले से ही ऐसा ऐनलिटिक्स डेटा है जिसका इस्तेमाल करना है, तो इस कोडलैब के "ऑप्टिमाइज़ेशन मॉडल को ट्रेन करना" सेक्शन पर जाएं. साथ ही, हमारे सैंपल डेटा का इस्तेमाल करें.

Firebase Analytics SDK की मदद से डेटा इकट्ठा करना

हम इन आंकड़ों से जुड़े इवेंट को इकट्ठा करने के लिए, Firebase Analytics का इस्तेमाल करेंगे. Firebase Analytics SDK टूल, कई इवेंट और उपयोगकर्ता प्रॉपर्टी को अपने-आप कैप्चर करता है. इससे, अपने ऐप्लिकेशन के लिए यूनीक इवेंट को मेज़र करने के लिए, कस्टम इवेंट भी तय किए जा सकते हैं.

Firebase Analytics SDK इंस्टॉल करना

अपने ऐप्लिकेशन में Firebase Analytics का इस्तेमाल शुरू करने के लिए, Google Analytics का इस्तेमाल शुरू करने से जुड़ा दस्तावेज़ पढ़ें. इस कोडलैब की शुरुआत में क्लोन की गई firebase-iap-optimization रिपॉज़िटरी में, Firebase Analytics SDK पहले से ही शामिल है.

कस्टम इवेंट लॉग करना

Firebase Analytics SDK टूल सेट अप करने के बाद, हम उन इवेंट को लॉग करना शुरू कर सकते हैं जिनकी मदद से हमें अपने मॉडल को ट्रेन करना है.

इससे पहले, यह ज़रूरी है कि हम Analytics इवेंट में उपयोगकर्ता आईडी सेट करें, ताकि हम उस उपयोगकर्ता के Analytics डेटा को ऐप्लिकेशन में मौजूद उसके मौजूदा डेटा से जोड़ सकें.

MainActivity.kt

firebaseAnalytics.setUserId("player1")

इसके बाद, हम प्लेयर इवेंट लॉग कर सकते हैं. हम IAP को ऑप्टिमाइज़ करने के लिए, उपयोगकर्ता को दिखाए गए हर IAP ऑफ़र को लॉग करना चाहते हैं. साथ ही, यह भी लॉग करना चाहते हैं कि उपयोगकर्ता ने उस ऑफ़र पर क्लिक किया है या नहीं. इससे हमें दो Analytics इवेंट मिलेंगे - offer_iap और offer_accepted. हम offer_id को भी ट्रैक करेंगे, ताकि बाद में हम इस डेटा का इस्तेमाल करके यह पता लगा सकें कि ऑफ़र स्वीकार किया गया है या नहीं.

MainActivity.kt

predictButton?.setOnClickListener {
  predictionResult = iapOptimizer.predict()

  firebaseAnalytics.logEvent("offer_iap"){
    param("offer_type", predictionResult)
    param("offer_id", sessionId)
  }
}

acceptButton?.setOnClickListener {
  firebaseAnalytics.logEvent("offer_accepted") {
    param("offer_type", predictionResult)
    param("offer_id", sessionId)
  }
}

कस्टम इवेंट लॉग करने के बारे में ज़्यादा जानने के लिए, Firebase Analytics में इवेंट लॉग करने से जुड़ा दस्तावेज़ पढ़ें.

6. BigQuery में डेटा को पहले से प्रोसेस करना

आखिरी चरण में, हमने ऐसे इवेंट इकट्ठा किए जिनसे यह पता चलता है कि उपयोगकर्ता को कौन-सा IAP ऑफ़र दिखाया गया और उपयोगकर्ता ने किस IAP ऑफ़र पर क्लिक किया. इस चरण में, हम इस इवेंट डेटा को उपयोगकर्ता के डेटा के साथ जोड़ेंगे, ताकि हमारा मॉडल पूरी जानकारी से सीख सके.

इसके लिए, हमें Analytics इवेंट को BigQuery में एक्सपोर्ट करना होगा.

अपने Firebase प्रोजेक्ट और उसके ऐप्लिकेशन को BigQuery से लिंक करने के लिए:

  1. Firebase में साइन इन करें.
  2. सेटिंग आइकॉन पर क्लिक करें. इसके बाद, प्रोजेक्ट सेटिंग चुनें.
  3. प्रोजेक्ट सेटिंग पेज पर, इंटीग्रेशन टैब पर क्लिक करें.
  4. BigQuery कार्ड पर, जोड़ें पर क्लिक करें.

(ज़रूरी नहीं) अपनी Firestore कलेक्शन को BigQuery में एक्सपोर्ट करें

इस चरण में, आपके पास Firestore से BigQuery में उपयोगकर्ता का अतिरिक्त डेटा एक्सपोर्ट करने का विकल्प होता है. इसका इस्तेमाल मॉडल को ट्रेन करने के लिए किया जाता है. अगर आपको अभी यह चरण छोड़ना है, तो इस कोडलैब के "BigQuery में डेटा तैयार करना" सेक्शन पर जाएं. इसके बाद, पिछले चरण में लॉग किए गए Firebase Analytics इवेंट को फ़ॉलो किया जा सकता है.

ऐसा हो सकता है कि आपने Firestore में उपयोगकर्ताओं के साइन अप करने की तारीख, इन-ऐप्लिकेशन खरीदारी, गेम के लेवल, बैलेंस में मौजूद सिक्के या मॉडल को ट्रेन करने में मददगार कोई अन्य एट्रिब्यूट सेव किया हो.

Firestore कलेक्शन को BigQuery में एक्सपोर्ट करने के लिए, Firestore BigQuery Export एक्सटेंशन इंस्टॉल किया जा सकता है. इसके बाद, BigQuery में टेबल जोड़ें, ताकि इस डेटा को Google Analytics के डेटा के साथ जोड़ा जा सके. इससे, आपको इस डेटा का इस्तेमाल अपने निजीकरण मॉडल में और इस कोडलैब के बाकी हिस्सों में करने में मदद मिलेगी.

BigQuery में डेटा तैयार करना

अगले कुछ चरणों में, हम BigQuery का इस्तेमाल करके अपने रॉ Analytics डेटा को ऐसे डेटा में बदलेंगे जिसका इस्तेमाल अपने मॉडल को ट्रेन करने के लिए किया जा सकता है.

हमारा मॉडल यह जान सके कि उपयोगकर्ता और गेम की स्थिति के आधार पर, कौनसी IAP ऑफ़र दिखानी है, इसके लिए हमें यहां दिए गए डेटा को व्यवस्थित करना होगा:

  • उपयोगकर्ता
  • गेम की स्थिति
  • दिखाया गया ऑफ़र
  • प्रस्तुत किए गए ऑफ़र पर क्लिक किया गया है या नहीं

इस पूरे डेटा को टेबल की एक ही लाइन में व्यवस्थित करना होगा, ताकि हमारा मॉडल इसे प्रोसेस कर सके. अच्छी बात यह है कि BigQuery को इसी काम के लिए सेट अप किया गया है.

BigQuery में, क्वेरी को व्यवस्थित रखने के लिए "व्यू" बनाए जा सकते हैं. व्यू एक वर्चुअल टेबल है, जिसे SQL क्वेरी के आधार पर तय किया जाता है. व्यू बनाने पर, उसे उसी तरह क्वेरी किया जाता है जिस तरह टेबल को क्वेरी किया जाता है. इसका इस्तेमाल करके, हम सबसे पहले अपने Analytics डेटा को साफ़ कर सकते हैं.

यह देखने के लिए कि क्या इन-ऐप खरीदारी के हर ऑफ़र पर क्लिक किया गया है, हमें offer_iap और offer_accepted इवेंट को जोड़ना होगा. ये इवेंट हमने पिछले चरण में लॉग किए थे.

all_offers_joined - BigQuery व्यू

SELECT
  iap_offers.*,
  CASE
    WHEN accepted_offers.accepted IS NULL THEN FALSE ELSE TRUE
  END
  is_clicked,
FROM
  `iap-optimization.ml_sample.accepted_offers` AS accepted_offers
RIGHT JOIN
  `iap-optimization.ml_sample.iap_offers` AS iap_offers
ON
 accepted_offers.offer_id =iap_offers.offer_id;

all_offers_with_user_data - BigQuery व्यू

SELECT
  offers.is_clicked,
  offers.presented_powerup,
  offers.last_run_end_reason,
  offers.event_timestamp,
  users.*
FROM
  `iap-optimization.ml_sample.all_offers_joined` AS offers
LEFT JOIN
  `iap-optimization.ml_sample.all_users` AS users
ON
  users.user_id = offers.user_id;

BigQuery डेटासेट को Google Cloud Storage में एक्सपोर्ट करना

आखिर में, हम BigQuery डेटासेट को GCS में एक्सपोर्ट कर सकते हैं, ताकि हम इसका इस्तेमाल मॉडल ट्रेनिंग में कर सकें.

888daa7ba4db8e44.png

14d22bf474fae455.png

7. ऑप्टिमाइज़ेशन मॉडल को ट्रेन करना

सैंपल डेटा

इस कोडलैब के बाकी चरणों को पूरा करने के लिए, पिछले चरण "BigQuery में डेटा को प्रीप्रोसेस करना" में इस्तेमाल किए गए डेटा का इस्तेमाल करें. इसके अलावा, यहां दिए गए डाउनलोड किए जा सकने वाले सैंपल डेटा का भी इस्तेमाल किया जा सकता है.

समस्या की परिभाषा

मॉडल को ट्रेन करना शुरू करने से पहले, आइए हम कॉन्टेक्स्ट के हिसाब से बैंडिट की समस्या को समझने में कुछ समय बिताएं.

कॉन्टेक्स्ट के हिसाब से बैंडिट के बारे में जानकारी

Flappy Sparky में हर लेवल की शुरुआत में, उपयोगकर्ता को आईएपी ऑफ़र दिखाया जाता है. इससे उसे पावरअप मिलेगा. हम हर बार सिर्फ़ एक IAP विकल्प दिखा सकते हैं. साथ ही, हमें यह भी नहीं पता कि कौनसा विकल्प सबसे ज़्यादा कन्वर्ज़न देगा. हर उपयोगकर्ता और हर सेशन अलग होता है. ऐसे में, हम ऐसा IAP ऑफ़र कैसे ढूंढें जिससे सबसे ज़्यादा इनाम मिलने की संभावना हो?

इस मामले में, अगर उपयोगकर्ता IAP ऑफ़र स्वीकार नहीं करता है, तो इनाम को 0 पर सेट करें. अगर वह ऑफ़र स्वीकार करता है, तो इनाम को IAP की वैल्यू पर सेट करें. इनाम को ज़्यादा से ज़्यादा करने के लिए, हम अपने पुराने डेटा का इस्तेमाल करके एक मॉडल को ट्रेन कर सकते हैं. यह मॉडल, किसी उपयोगकर्ता को दी गई हर कार्रवाई के लिए अनुमानित इनाम का अनुमान लगाता है. साथ ही, सबसे ज़्यादा इनाम वाली कार्रवाई का पता लगाता है.

e7d3264141498bff.jpeg

हम अनुमान लगाने के लिए, यहां दी गई जानकारी का इस्तेमाल करेंगे:

  • स्टेट: उपयोगकर्ता और उसके मौजूदा सेशन के बारे में जानकारी
  • कार्रवाई: IAP ऑफ़र, जिन्हें हम दिखाने के लिए चुन सकते हैं
  • इनाम: IAP ऑफ़र की वैल्यू

एक्सप्लॉइटेशन बनाम एक्सप्लोरेशन

मल्टी-आर्म्ड बैंडिट की सभी समस्याओं के लिए, एल्गोरिदम को एक्सप्लोरेशन (यह जानने के लिए ज़्यादा डेटा इकट्ठा करना कि कौनसी कार्रवाई सबसे अच्छा नतीजा देती है) और एक्सप्लॉइटेशन (सबसे ज़्यादा फ़ायदा पाने के लिए, सबसे अच्छे नतीजे का इस्तेमाल करना) के बीच संतुलन बनाए रखना होता है.

समस्या के हमारे वर्शन में, हम इसे आसान बना देंगे. हम मॉडल को समय-समय पर सिर्फ़ क्लाउड में ट्रेन करेंगे. साथ ही, उपयोगकर्ता के डिवाइस पर मॉडल का इस्तेमाल करते समय ही अनुमान लगाएंगे. इसके बजाय, हम उपयोगकर्ता के डिवाइस पर भी मॉडल को ट्रेन करेंगे. मॉडल का इस्तेमाल करने के बाद, यह पक्का करने के लिए कि हमारे पास ट्रेनिंग के लिए ज़रूरत के मुताबिक डेटा है, हमें कभी-कभी ऐप्लिकेशन इस्तेमाल करने वाले लोगों को रैंडम नतीजे दिखाने होंगे. उदाहरण के लिए, 30%. एक्सप्लोरेशन और एक्सप्लॉइटेशन को बैलेंस करने की इस रणनीति को एपलॉन-ग्रीडी कहा जाता है.

मॉडल को ट्रेनिंग देना

शुरू करने के लिए, कोडलैब के साथ दी गई ट्रेनिंग स्क्रिप्ट (training.ipynb) का इस्तेमाल किया जा सकता है. हमारा लक्ष्य एक ऐसा मॉडल तैयार करना है जो किसी स्थिति के हिसाब से, हर कार्रवाई के लिए अनुमानित इनाम का अनुमान लगा सके. इसके बाद, हम ऐसी कार्रवाई का पता लगाते हैं जिससे हमें सबसे ज़्यादा अनुमानित इनाम मिल सकें.

स्थानीय तौर पर ट्रेनिंग

अपने मॉडल को ट्रेन करने के लिए, इस कोडलैब के कोड सैंपल में मौजूद नोटबुक की कॉपी बनाएं. यह सबसे आसान तरीका है.

इस कोडलैब के लिए, आपको जीपीयू की ज़रूरत नहीं है. हालांकि, अगर आपको अपने डेटा को एक्सप्लोर करने और अपने मॉडल को ट्रेन करने के लिए ज़्यादा बेहतर मशीन की ज़रूरत है, तो ट्रेनिंग को तेज़ करने के लिए AI Platform Notebook का इंस्टेंस पाएं.

यहां दी गई ट्रेनिंग स्क्रिप्ट में, हमने एक इटरेटर बनाया है. यह BigQuery से एक्सपोर्ट की गई CSV फ़ाइलों से ट्रेनिंग डेटा जनरेट करता है. इसके बाद, हमने Keras की मदद से अपने मॉडल को ट्रेन करने के लिए डेटा का इस्तेमाल किया. मॉडल को ट्रेन करने के तरीके के बारे में जानकारी, Python नोटबुक की टिप्पणियों में दी गई है.

मॉडल की परफ़ॉर्मेंस मेज़र करना

मॉडल को ट्रेनिंग देते समय, हम इसकी तुलना ऐसे रैंडम एजेंट से करेंगे जो आईएपी ऑफ़र को रैंडम तरीके से चुनता है. इससे हमें यह पता चलेगा कि हमारा मॉडल वाकई में सीख रहा है या नहीं. यह लॉजिक ValidationCallback. में मौजूद है

ट्रेनिंग के आखिर में, हम test.csv में मौजूद डेटा का इस्तेमाल करके, अपने मॉडल की फिर से जांच करते हैं. मॉडल ने इस डेटा को पहले कभी नहीं देखा है. इसलिए, हम इस बात को लेकर भरोसा कर सकते हैं कि नतीजा ओवरफ़िटिंग की वजह से नहीं है. इस मामले में, मॉडल की परफ़ॉर्मेंस, रैंडम एजेंट की तुलना में 28% बेहतर है.

TFLite मॉडल एक्सपोर्ट करना

अब हमारे पास इस्तेमाल के लिए तैयार किया गया एक मॉडल है. हालांकि, फ़िलहाल यह TensorFlow फ़ॉर्मैट में है. हमें मॉडल को TFLite फ़ॉर्मैट में एक्सपोर्ट करना होगा, ताकि इसे मोबाइल डिवाइसों पर चलाया जा सके.

train.ipynb

converter = tflite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

with tf.io.gfile.GFile('iap-optimizer.tflite', 'wb') as f:
  f.write(tflite_model)

यहां से, मॉडल को डाउनलोड किया जा सकता है और उसे अपने ऐप्लिकेशन के साथ बंडल किया जा सकता है.

हमारा सुझाव है कि प्रोडक्शन ऐप्लिकेशन के लिए, मॉडल को Firebase ML पर डिप्लॉय करें और Firebase को मॉडल होस्ट करने की अनुमति दें. हालांकि, ऐसा करना ज़रूरी नहीं है. यह दो मुख्य वजहों से फ़ायदेमंद है:

  1. हम ऐप्लिकेशन के इंस्टॉल साइज़ को कम रख सकते हैं और सिर्फ़ ज़रूरत पड़ने पर मॉडल को डाउनलोड कर सकते हैं
  2. मॉडल को नियमित तौर पर अपडेट किया जा सकता है. साथ ही, इसे पूरे ऐप्लिकेशन से अलग रिलीज़ साइकल के साथ अपडेट किया जा सकता है

मॉडल को Firebase ML में डिप्लॉय करने का तरीका जानने के लिए, TFLite से चलने वाले अपने Android ऐप्लिकेशन में Firebase जोड़ें कोडलैब का इस्तेमाल करें. आपके पास Firebase कंसोल या Python API का इस्तेमाल करके, मॉडल को डिप्लॉय करने का विकल्प होता है.

8. डिवाइस पर अनुमान लगाना

अगला चरण, डिवाइस पर मौजूद मॉडल का इस्तेमाल करके अनुमान लगाना है. आपको एक उदाहरण ऐप्लिकेशन मिल सकता है, जो डाउनलोड किए गए सैंपल कोड के app फ़ोल्डर में Firebase ML से मॉडल डाउनलोड करता है. इसका इस्तेमाल, क्लाइंट-साइड के कुछ डेटा के साथ अनुमान लगाने के लिए किया जा सकता है.

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

इसके बाद, हम मॉडल को इस तरह टेस्ट इनपुट देते हैं:

IapOptimzer.kt

  val testInput = mapOf(
    "coins_spent" to                       2048f,
    "distance_avg" to                      1234f,
    "device_os" to                         "ANDROID",
    "game_day" to                          10f,
    "geo_country" to                       "Canada",
    "last_run_end_reason" to               "laser"
  )

मॉडल के मुताबिक, इस उपयोगकर्ता के लिए sparky_armor सबसे अच्छा IAP पावरअप है.

a3381dbcdbdf811e.png

मॉडल की परफ़ॉर्मेंस का आकलन करना

हमारे मॉडल के अनुमान कितने सटीक हैं, यह जानने के लिए हम सिर्फ़ उन IAP ऑफ़र को ट्रैक कर सकते हैं जिनका अनुमान हमारे मॉडल ने लगाया है. साथ ही, यह भी ट्रैक कर सकते हैं कि Firebase Analytics का इस्तेमाल करके, उन पर क्लिक किया गया है या नहीं. मॉडल की असल परफ़ॉर्मेंस को मेज़र करने के लिए, इसका इस्तेमाल Firebase A/B टेस्टिंग के साथ किया जा सकता है. इसके अलावा, मॉडल के अलग-अलग वर्शन पर A/B टेस्ट भी किए जा सकते हैं. A/B टेस्टिंग की मदद से, Firebase रिमोट कॉन्फ़िगरेशन एक्सपेरिमेंट बनाना दस्तावेज़ में, Firebase के साथ A/B टेस्टिंग के बारे में ज़्यादा जानें.

9. (ज़रूरी नहीं): मॉडल को नए डेटा के साथ नियमित रूप से अपडेट करना

अगर आपको नए डेटा के हिसाब से मॉडल को अपडेट करना है, तो पाइपलाइन सेट अप करें. इससे, मॉडल को बार-बार फिर से ट्रेन किया जा सकेगा. इसके लिए, आपको सबसे पहले यह पक्का करना होगा कि आपके पास ट्रेनिंग के लिए नया डेटा हो. इसके लिए, ऊपर बताई गई इप्सिलॉन-ग्रीडी रणनीति का इस्तेमाल करें. उदाहरण के लिए, मॉडल के अनुमान के नतीजे का इस्तेमाल 70% बार और रैंडम नतीजों का इस्तेमाल 30% बार करना.

नए डेटा के साथ ट्रेनिंग और डिप्लॉयमेंट के लिए पाइपलाइन कॉन्फ़िगर करना, इस कोडलैब के दायरे से बाहर है. शुरू करने के लिए, Google Cloud AI Platform और TFX देखें.

10. बधाई हो!

इस कोडलैब में, आपने Firebase का इस्तेमाल करके, ऐप्लिकेशन में होने वाली खरीदारी को ऑप्टिमाइज़ करने के लिए, ऑन-डिवाइस TFLite मॉडल को ट्रेन और डिप्लॉय करने का तरीका सीखा. TFLite और Firebase के बारे में ज़्यादा जानने के लिए, TFLite के अन्य सैंपल और Firebase का इस्तेमाल शुरू करने से जुड़ी गाइड देखें.

अगर आपका कोई सवाल है, तो उसे Stack Overflow #firebase-machine-learning पर पूछें.

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

  • TensorFlow लाइट
  • Firebase ML
  • Firebase Analytics
  • BigQuery

अगले चरण

  • अपने ऐप्लिकेशन के लिए, ऑप्टिमाइज़र मॉडल को ट्रेन करें और उसे डिप्लॉय करें.

ज़्यादा जानें