अगर आपका ऐप्लिकेशन, कस्टम TensorFlow लाइट मॉडल का इस्तेमाल करता है, तो मॉडल डिप्लॉय करने के लिए Firebase ML का इस्तेमाल किया जा सकता है. Firebase की मदद से मॉडल डिप्लॉय करके, अपने ऐप्लिकेशन का शुरुआती डाउनलोड साइज़ कम किया जा सकता है. साथ ही, ऐप्लिकेशन का नया वर्शन रिलीज़ किए बिना, ऐप्लिकेशन के एमएल मॉडल अपडेट किए जा सकते हैं. इसके अलावा, रिमोट कॉन्फ़िगरेशन और A/B टेस्टिंग की मदद से, उपयोगकर्ताओं के अलग-अलग ग्रुप को अलग-अलग मॉडल दिखाए जा सकते हैं.
TensorFlow लाइट मॉडल
TensorFlow लाइट मॉडल, एमएल मॉडल होते हैं. इन्हें मोबाइल डिवाइसों पर चलाने के लिए ऑप्टिमाइज़ किया जाता है. TensorFlow लाइट मॉडल पाने के लिए:
- पहले से बने मॉडल का इस्तेमाल करें. जैसे, TensorFlow लाइट के आधिकारिक मॉडल में से कोई एक
- TensorFlow मॉडल, Keras मॉडल या कॉंक्रीट फ़ंक्शन को TensorFlow लाइट में बदलें.
ध्यान दें कि Dart के लिए, TensorFlow लाइट की कोई लाइब्रेरी उपलब्ध नहीं है. इसलिए, आपको अपने प्लैटफ़ॉर्म के लिए, TensorFlow लाइट की नेटिव लाइब्रेरी को इंटिग्रेट करना होगा. यहां इस इंटिग्रेशन के बारे में जानकारी नहीं दी गई है.
शुरू करने से पहले
एमएल मॉडल डाउनलोडर प्लगिन इंस्टॉल करने के लिए, अपने Flutter प्रोजेक्ट की रूट डायरेक्ट्री से यह कमांड चलाएं:
flutter pub add firebase_ml_model_downloaderअपने प्रोजेक्ट को फिर से बनाएं:
flutter run
1. अपना मॉडल डिप्लॉय करना
Firebase कंसोल या Firebase Admin Python और Node.js SDK टूल का इस्तेमाल करके, TensorFlow के अपने कस्टम मॉडल डिप्लॉय करें. कस्टम मॉडल डिप्लॉय और मैनेज करना लेख पढ़ें .
अपने Firebase प्रोजेक्ट में कस्टम मॉडल जोड़ने के बाद, अपने ऐप्लिकेशन में उस मॉडल का रेफ़रंस देने के लिए, आपने जो नाम तय किया है उसका इस्तेमाल किया जा सकता है. किसी भी समय, TensorFlow लाइट का नया मॉडल डिप्लॉय किया जा सकता है. साथ ही, getModel() को कॉल करके, उपयोगकर्ताओं के डिवाइसों पर नया मॉडल डाउनलोड किया जा सकता है. इसके बारे में नीचे बताया गया है.
2. मॉडल को डिवाइस पर डाउनलोड करना और TensorFlow लाइट इंटरप्रेटर को शुरू करना
अपने ऐप्लिकेशन में TensorFlow लाइट मॉडल का इस्तेमाल करने के लिए, पहले मॉडल डाउनलोडर का इस्तेमाल करके, मॉडल का नया वर्शन डिवाइस पर डाउनलोड करें. इसके बाद, मॉडल के साथ TensorFlow लाइट इंटरप्रेटर को इंस्टैंशिएट करें.
मॉडल डाउनलोड करना शुरू करने के लिए, मॉडल डाउनलोडर के getModel() तरीके को कॉल करें. इसमें, मॉडल अपलोड करते समय आपने जो नाम दिया था उसे बताएं. साथ ही, यह भी बताएं कि आपको हमेशा नया मॉडल डाउनलोड करना है या नहीं. इसके अलावा, उन शर्तों के बारे में भी बताएं जिनके तहत आपको डाउनलोड करने की अनुमति देनी है.
डाउनलोड करने के तीन तरीके चुने जा सकते हैं:
| डाउनलोड किस तरह का है | ब्यौरा |
|---|---|
localModel
|
डिवाइस से लोकल मॉडल पाएं.
अगर कोई लोकल मॉडल उपलब्ध नहीं है, तो यह latestModel की तरह काम करता है. अगर आपको मॉडल के अपडेट की जांच नहीं करनी है, तो डाउनलोड करने के इस तरीके का इस्तेमाल करें. उदाहरण के लिए, अगर आप मॉडल के नाम पाने के लिए रिमोट कॉन्फ़िगरेशन का इस्तेमाल कर रहे हैं और हमेशा नए नामों से मॉडल अपलोड करते हैं, तो यह तरीका अपनाएं. ऐसा करना ज़रूरी है. |
localModelUpdateInBackground
|
डिवाइस से लोकल मॉडल पाएं और बैकग्राउंड में मॉडल को अपडेट करना शुरू करें.
अगर कोई लोकल मॉडल उपलब्ध नहीं है, तो यह latestModel की तरह काम करता है. |
latestModel
|
नया मॉडल पाएं. अगर लोकल मॉडल, नया वर्शन है, तो लोकल मॉडल दिखाता है. वरना, नया मॉडल डाउनलोड करें. जब तक नया वर्शन डाउनलोड नहीं हो जाता, तब तक यह तरीका काम नहीं करेगा. इसलिए, इसका इस्तेमाल न करने का सुझाव दिया जाता है. इस तरीके का इस्तेमाल सिर्फ़ तब करें, जब आपको साफ़ तौर पर नए वर्शन की ज़रूरत हो. |
मॉडल डाउनलोड होने की पुष्टि होने तक, मॉडल से जुड़ी सुविधाओं को बंद रखें. जैसे, यूज़र इंटरफ़ेस (यूआई) के किसी हिस्से को धुंधला करें या छिपाएं.
FirebaseModelDownloader.instance
.getModel(
"yourModelName",
FirebaseModelDownloadType.localModel,
FirebaseModelDownloadConditions(
iosAllowsCellularAccess: true,
iosAllowsBackgroundDownloading: false,
androidChargingRequired: false,
androidWifiRequired: false,
androidDeviceIdleRequired: false,
)
)
.then((customModel) {
// Download complete. Depending on your app, you could enable the ML
// feature, or switch from the local model to the remote model, etc.
// The CustomModel object contains the local path of the model file,
// which you can use to instantiate a TensorFlow Lite interpreter.
final localModelPath = customModel.file;
// ...
});
कई ऐप्लिकेशन, अपने इनिशियलाइज़ेशन कोड में डाउनलोड करने का टास्क शुरू करते हैं. हालांकि, मॉडल का इस्तेमाल करने से पहले, किसी भी समय ऐसा किया जा सकता है.
3. इनपुट डेटा पर इन्फ़रंस करना
अब आपके पास मॉडल फ़ाइल डिवाइस पर है. इसलिए, इन्फ़रंस करने के लिए, इसका इस्तेमाल TensorFlow लाइट इंटरप्रेटर के साथ किया जा सकता है. Dart के लिए, TensorFlow लाइट की कोई लाइब्रेरी उपलब्ध नहीं है. इसलिए, आपको iOS और Android के लिए, TensorFlow लाइट की नेटिव लाइब्रेरी को इंटिग्रेट करना होगा.
अहम जानकारी: मॉडल की सुरक्षा
Firebase ML पर, TensorFlow लाइट के मॉडल उपलब्ध कराने के लिए, चाहे कोई भी तरीका इस्तेमाल किया जाए, Firebase ML उन्हें लोकल स्टोरेज में, स्टैंडर्ड सीरियलाइज़्ड protobuf फ़ॉर्मैट में सेव करता है.
सैद्धांतिक तौर पर, इसका मतलब है कि कोई भी व्यक्ति आपका मॉडल कॉपी कर सकता है. हालांकि, असल में ज़्यादातर मॉडल, ऐप्लिकेशन के हिसाब से बनाए जाते हैं. साथ ही, ऑप्टिमाइज़ेशन की मदद से उन्हें इस तरह से बनाया जाता है कि उन्हें समझना मुश्किल हो जाता है. इसलिए, यह खतरा, प्रतिस्पर्धियों के आपके कोड को अलग-अलग हिस्सों में बांटकर फिर से इस्तेमाल करने के खतरे जैसा ही होता है. इसके बावजूद, अपने ऐप्लिकेशन में कस्टम मॉडल का इस्तेमाल करने से पहले, आपको इस खतरे के बारे में पता होना चाहिए.