Vertex AI: AutoML की मदद से, धोखाधड़ी का पता लगाने वाला मॉडल बनाना

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

इस लैब में, टेबल वाले डेटा का इस्तेमाल करके मॉडल को ट्रेन करने और उसे इस्तेमाल करने के लिए, Vertex AI का इस्तेमाल किया जाएगा. यह Google Cloud पर उपलब्ध सबसे नया एआई प्रॉडक्ट है. फ़िलहाल, यह झलक के तौर पर उपलब्ध है.

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

आपको, इनके बारे में जानकारी मिलेगी:

  • Vertex AI में मैनेज किया गया डेटासेट अपलोड करना
  • AutoML की मदद से मॉडल को ट्रेन करना
  • ट्रेन किए गए AutoML मॉडल को किसी एंडपॉइंट पर डिप्लॉय करें और उस एंडपॉइंट का इस्तेमाल करके अनुमान पाएं

Google Cloud पर इस लैब को चलाने की कुल लागत करीब 22 डॉलर है.

2. Vertex AI के बारे में जानकारी

इस लैब में, Google Cloud पर उपलब्ध एआई प्रॉडक्ट की नई सुविधा का इस्तेमाल किया जाता है. Vertex AI, Google Cloud के सभी एमएल प्रॉडक्ट को एक साथ इंटिग्रेट करता है, ताकि डेवलपर को बेहतर अनुभव मिल सके. पहले, AutoML और कस्टम मॉडल से ट्रेन किए गए मॉडल को अलग-अलग सेवाओं के ज़रिए ऐक्सेस किया जा सकता था. नए ऑफ़र में, इन दोनों को एक ही एपीआई में शामिल किया गया है. साथ ही, इसमें अन्य नए प्रॉडक्ट भी शामिल हैं. मौजूदा प्रोजेक्ट को भी Vertex AI पर माइग्रेट किया जा सकता है. अगर आपको कोई सुझाव देना है या शिकायत करनी है, तो कृपया सहायता पेज पर जाएं.

Vertex AI में कई अलग-अलग प्रॉडक्ट शामिल हैं, ताकि मशीन लर्निंग के वर्कफ़्लो को शुरू से लेकर आखिर तक सपोर्ट किया जा सके. इस लैब में, यहां हाइलाइट किए गए प्रॉडक्ट पर फ़ोकस किया जाएगा: टेबल वाले डेटा के लिए AutoML, अनुमान, और Workbench.

Vertex प्रॉडक्ट की खास जानकारी

3. अपना एनवायरमेंट सेट अप करना

इस कोडलैब को चलाने के लिए, आपके पास बिलिंग की सुविधा वाला Google Cloud Platform प्रोजेक्ट होना चाहिए. प्रोजेक्ट बनाने के लिए, यहां दिए गए निर्देशों का पालन करें.

पहला चरण: Compute Engine API चालू करना

Compute Engine पर जाएं. अगर यह पहले से चालू नहीं है, तो चालू करें को चुनें. आपको नोटबुक इंस्टेंस बनाने के लिए इसकी ज़रूरत होगी.

दूसरा चरण: Vertex AI API चालू करना

Cloud Console के Vertex AI सेक्शन पर जाएं और Vertex AI API चालू करें पर क्लिक करें.

Vertex डैशबोर्ड

तीसरा चरण: Vertex AI Workbench इंस्टेंस बनाना

Cloud Console के Vertex AI सेक्शन में जाकर, Workbench पर क्लिक करें:

Vertex AI मेन्यू

इसके बाद, उपयोगकर्ता के मैनेज किए गए नोटबुक में जाकर, नई नोटबुक पर क्लिक करें:

नई नोटबुक बनाएं

इसके बाद, GPU के बिना TensorFlow Enterprise (with LTS) इंस्टेंस टाइप का नया वर्शन चुनें:

TFE इंस्टेंस

डिफ़ॉल्ट विकल्पों का इस्तेमाल करें. इसके बाद, बनाएं पर क्लिक करें.

पांचवां चरण: अपनी नोटबुक खोलें

इंस्टेंस बन जाने के बाद, JupyterLab खोलें को चुनें:

Notebook खोलें

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

4. मैनेज किया गया डेटासेट बनाना

Vertex AI में, अलग-अलग तरह के डेटा के लिए मैनेज किए गए डेटासेट बनाए जा सकते हैं. इसके बाद, इन डेटासेट के आधार पर आंकड़े जनरेट किए जा सकते हैं. साथ ही, इनका इस्तेमाल AutoML या अपने कस्टम मॉडल कोड की मदद से मॉडल को ट्रेन करने के लिए किया जा सकता है.

पहला चरण: डेटासेट बनाना

अपनी कंसोल में Vertex मेन्यू में जाकर, डेटा सेट चुनें:

डेटा सेट चुनें

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

डेटा सेट पेज पर जाकर, डेटासेट को कोई नाम दें. इसके बाद, टेबल के फ़ॉर्मैट में मौजूद डेटा और रिग्रेशन/क्लासिफ़िकेशन को चुनें. इसके बाद, डेटासेट बनाएं:

डेटासेट बनाएं

Vertex में मैनेज किए गए डेटासेट में डेटा इंपोर्ट करने के कुछ विकल्प हैं:

  • अपने कंप्यूटर से कोई लोकल फ़ाइल अपलोड करना
  • Cloud Storage से फ़ाइलें चुनना
  • BigQuery से डेटा चुनना

यहां हम BigQuery की सार्वजनिक टेबल से डेटा अपलोड करेंगे.

दूसरा चरण: BigQuery से डेटा इंपोर्ट करना

डेटा इंपोर्ट करने के तरीके के तौर पर, "BigQuery से कोई टेबल या व्यू चुनें" को चुनें. इसके बाद, BigQuery टेबल बॉक्स में यह कॉपी करें: bigquery-public-data.ml_datasets.ulb_fraud_detection. इसके बाद, जारी रखें चुनें:

BQ डेटा इंपोर्ट करना

डेटासेट इंपोर्ट करने के बाद, आपको कुछ ऐसा दिखेगा:

इंपोर्ट किया गया डेटा

अगर आपको इस डेटासेट के बारे में ज़्यादा जानकारी चाहिए, तो आंकड़े जनरेट करें पर क्लिक करें. हालांकि, अगले चरण पर जाने से पहले ऐसा करना ज़रूरी नहीं है. इस डेटासेट में, क्रेडिट कार्ड से किए गए असली लेन-देन की जानकारी होती है. ज़्यादातर कॉलम के नाम छिपा दिए गए हैं. इसलिए, उन्हें V1, V2 वगैरह कहा जाता है.

5. AutoML की मदद से मॉडल को ट्रेन करना

मैनेज किया गया डेटासेट अपलोड करने के बाद, हम इस डेटा की मदद से मॉडल को ट्रेन करने के लिए तैयार हैं. हम क्लासिफ़िकेशन मॉडल को ट्रेन करेंगे, ताकि यह अनुमान लगाया जा सके कि कोई लेन-देन धोखाधड़ी वाला है या नहीं. Vertex AI में, मॉडल को ट्रेन करने के लिए दो विकल्प मिलते हैं:

  • AutoML: कम मेहनत और एमएल की विशेषज्ञता के साथ अच्छी क्वालिटी के मॉडल को ट्रेन करें.
  • कस्टम ट्रेनिंग: Google Cloud के पहले से बने कंटेनर में से किसी एक का इस्तेमाल करके, क्लाउड में अपने कस्टम ट्रेनिंग ऐप्लिकेशन चलाएं. इसके अलावा, अपने कंटेनर का भी इस्तेमाल किया जा सकता है.

इस लैब में, हम ट्रेनिंग के लिए AutoML का इस्तेमाल करेंगे.

पहला चरण: ट्रेनिंग जॉब शुरू करना

डेटासेट की जानकारी वाले पेज पर, सबसे ऊपर दाईं ओर नया मॉडल ट्रेन करें को चुनें. यह वही पेज है जहां आपने पिछले चरण में काम छोड़ा था. मकसद के तौर पर क्लासिफ़िकेशन को चुनें. मॉडल ट्रेनिंग के लिए, AutoML को चुना हुआ रहने दें. इसके बाद, जारी रखें पर क्लिक करें:

मॉडल की ट्रेनिंग का पहला चरण

अपने मॉडल को कोई नाम दें या डिफ़ॉल्ट नाम का इस्तेमाल करें. टारगेट कॉलम में जाकर, क्लास चुनें. यह एक पूर्णांक है. इससे पता चलता है कि कोई लेन-देन धोखाधड़ी वाला था या नहीं (धोखाधड़ी नहीं होने पर 0 और धोखाधड़ी होने पर 1).

इसके बाद, जारी रखें चुनें:

मॉडल की ट्रेनिंग का दूसरा चरण

इस चरण में, नीचे की ओर स्क्रोल करें और बेहतर विकल्प को बड़ा करने के लिए क्लिक करें. यह डेटासेट काफ़ी हद तक असंतुलित है. इसमें 1% से भी कम डेटा में धोखाधड़ी वाले लेन-देन शामिल हैं. इसलिए, एयूसी पीआरसी विकल्प चुनें. इससे कम सामान्य क्लास के लिए, सटीक और सही अनुमान लगाने की क्षमता को बढ़ाया जा सकेगा:

बेहतर ट्रेनिंग के विकल्प

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

ट्रेनिंग का काम पूरा होने पर, आपको एक ईमेल मिलेगा. ट्रेनिंग में एक घंटे से थोड़ा ज़्यादा समय लगेगा, क्योंकि इसमें संसाधनों को चालू और बंद करने में लगने वाला समय भी शामिल है.

6. मॉडल इवैलुएशन मेट्रिक एक्सप्लोर करना

इस चरण में, हम देखेंगे कि हमारे मॉडल ने कैसा परफ़ॉर्म किया.

मॉडल ट्रेनिंग का काम पूरा होने के बाद, Vertex में मॉडल टैब पर जाएं. आपने जिस मॉडल को अभी-अभी ट्रेन किया है उस पर क्लिक करें. इसके बाद, आकलन करें टैब देखें. यहां कई आकलन मेट्रिक दी गई हैं. हम दो मेट्रिक पर फ़ोकस करेंगे: कंफ़्यूज़न मैट्रिक्स और फ़ीचर की अहमियत.

पहला चरण: कन्फ़्यूज़न मैट्रिक्स को समझना

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

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

आकलन करें टैब पर नीचे की ओर स्क्रोल करने पर, आपको इस तरह की कन्फ़्यूज़न मैट्रिक्स दिखेगी (असल प्रतिशत अलग-अलग हो सकते हैं):

कन्फ़्यूजन मैट्रिक्स

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

दूसरा चरण: फ़ीचर के महत्व का आकलन करना

कंफ़्यूज़न मैट्रिक्स के नीचे, आपको फ़ीचर के महत्व का चार्ट दिखेगा. यह चार्ट ऐसा दिखेगा:

सुविधा की अहमियत

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

अगर हमारे डेटासेट की ज़्यादातर सुविधाएं नहीं छिपाई जाती हैं, तो यह चार्ट ज़्यादा दिलचस्प होगा. उदाहरण के लिए, हमें यह पता चल सकता है कि लेन-देन का टाइप (ट्रांसफ़र, जमा करना वगैरह) धोखाधड़ी का सबसे बड़ा इंडिकेटर था.

असल दुनिया में, फ़ीचर के महत्व की इन वैल्यू का इस्तेमाल करके, हम अपने मॉडल को बेहतर बना सकते हैं. साथ ही, इसके अनुमानों पर ज़्यादा भरोसा कर सकते हैं. हम मॉडल को अगली बार ट्रेन करते समय, कम ज़रूरी सुविधाओं को हटाने का फ़ैसला ले सकते हैं. इसके अलावा, हम अपनी दो ज़्यादा ज़रूरी सुविधाओं को सुविधा क्रॉस में शामिल कर सकते हैं, ताकि यह देखा जा सके कि इससे मॉडल की परफ़ॉर्मेंस बेहतर होती है या नहीं.

यहां हम एक बैच में मौजूद हर सुविधा के महत्व का आकलन कर रहे हैं. हालांकि, Vertex AI में अलग-अलग अनुमानों के लिए भी, हर सुविधा के महत्व का आकलन किया जा सकता है. मॉडल को डिप्लॉय करने के बाद, हम देखेंगे कि ऐसा कैसे किया जा सकता है.

7. मॉडल को किसी एंडपॉइंट पर डिप्लॉय करना

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

पहला चरण: एंडपॉइंट बनाना

अपने मॉडल पेज पर, डिप्लॉय और टेस्ट करें टैब पर जाएं. इसके बाद, एंडपॉइंट पर डिप्लॉय करें पर क्लिक करें:

लागू करना और जांच करना

अपने एंडपॉइंट को कोई नाम दें, जैसे कि fraud_v1. ऐक्सेस को स्टैंडर्ड पर सेट रहने दें और जारी रखें पर क्लिक करें.

ट्रैफ़िक स्प्लिटिंग और मशीन टाइप को डिफ़ॉल्ट सेटिंग के तौर पर रहने दें. इसके बाद, हो गया और फिर जारी रखें पर क्लिक करें.

हम इस एंडपॉइंट के लिए मॉडल मॉनिटरिंग का इस्तेमाल नहीं करेंगे. इसलिए, इसे बिना चुने ही डिप्लॉय करें पर क्लिक करें. आपके एंडपॉइंट को डिप्लॉय होने में कुछ मिनट लगेंगे. जब यह प्रोसेस पूरी हो जाएगी, तब आपको इसके बगल में हरे रंग का सही का निशान दिखेगा:

डिप्लॉय किया गया एंडपॉइंट

आप काफ़ी करीब पहुंच गए हैं! अब आपके पास डिप्लॉय किए गए मॉडल के आधार पर अनुमान पाने का विकल्प है.

8. डिप्लॉय किए गए मॉडल से अनुमान पाना

मॉडल से अनुमान पाने के कुछ विकल्प यहां दिए गए हैं:

  • Vertex AI का यूज़र इंटरफ़ेस (यूआई)
  • Vertex AI API

हम दोनों को यहां दिखाएंगे.

पहला चरण: यूज़र इंटरफ़ेस (यूआई) में मॉडल के अनुमान पाना

अपने मॉडल पेज पर जाएं. यहां आपको अपना एंडपॉइंट दिखेगा. यह वही पेज है जहां हमने पिछले चरण में काम छोड़ा था. इसके बाद, नीचे की ओर स्क्रोल करके अपने मॉडल की जांच करें सेक्शन पर जाएं:

मॉडल की जांच करना

यहां, Vertex AI ने हमारे मॉडल की हर सुविधा के लिए रैंडम वैल्यू चुनी हैं. इनका इस्तेमाल, टेस्ट के तौर पर अनुमान पाने के लिए किया जा सकता है. अगर आपको इन वैल्यू में बदलाव करना है, तो बेझिझक करें. पेज पर नीचे की ओर स्क्रोल करें और अनुमान लगाएं को चुनें.

पेज के अनुमान का नतीजा सेक्शन में, आपको हर क्लास के लिए अपने मॉडल का अनुमानित प्रतिशत दिखेगा. उदाहरण के लिए, क्लास 0 के लिए 0.99 का कॉन्फ़िडेंस स्कोर का मतलब है कि आपके मॉडल के हिसाब से, इस उदाहरण के फ़्रॉड न होने की संभावना 99% है.

दूसरा चरण: Vertex AI API की मदद से मॉडल के अनुमान पाना

यूज़र इंटरफ़ेस (यूआई) की मदद से, यह पक्का किया जा सकता है कि आपका डिप्लॉय किया गया एंडपॉइंट उम्मीद के मुताबिक काम कर रहा है या नहीं. हालांकि, ऐसा हो सकता है कि आपको REST API कॉल के ज़रिए डाइनैमिक तौर पर अनुमान पाने हों. यहां आपको मॉडल के अनुमानों को पाने का तरीका दिखाने के लिए, हम इस लैब की शुरुआत में बनाए गए Vertex Workbench इंस्टेंस का इस्तेमाल करेंगे.

इसके बाद, बनाए गए नोटबुक इंस्टेंस को खोलें और लॉन्चर से Python 3 नोटबुक खोलें:

नोटबुक खोलें

Vertex SDK इंस्टॉल करने के लिए, अपनी नोटबुक में किसी सेल में यह कोड चलाएं:

!pip3 install google-cloud-aiplatform --upgrade --user

इसके बाद, एसडीके इंपोर्ट करने के लिए अपनी नोटबुक में एक सेल जोड़ें. साथ ही, अभी-अभी डिप्लॉय किए गए एंडपॉइंट का रेफ़रंस बनाएं:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

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

आपको कंसोल के एंडपॉइंट सेक्शन में अपना एंडपॉइंट आईडी मिल सकता है. इसके लिए, यहां जाएं:

एंडपॉइंट आईडी ढूंढना

आखिर में, अपने एंडपॉइंट के लिए अनुमान लगाएं. इसके लिए, नीचे दिए गए कोड को कॉपी करें और नई सेल में चलाएं:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

आपको क्लास 0 के लिए .67 के आस-पास का अनुमान दिखेगा. इसका मतलब है कि मॉडल के हिसाब से, इस लेन-देन के धोखाधड़ी न होने की संभावना 67% है.

🎉 बधाई हो! 🎉

आपने Vertex AI का इस्तेमाल करके ये काम करने का तरीका सीखा है:

  • मैनेज किया जा रहा डेटासेट अपलोड करना
  • AutoML का इस्तेमाल करके, टेबल वाले डेटा पर मॉडल को ट्रेन करना और उसका आकलन करना
  • मॉडल को किसी एंडपॉइंट पर डिप्लॉय करना
  • Vertex SDK का इस्तेमाल करके, मॉडल एंडपॉइंट पर अनुमान पाना

Vertex AI के अलग-अलग हिस्सों के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.

9. साफ़-सफ़ाई सेवा

अगर आपको इस लैब में बनाई गई नोटबुक का इस्तेमाल जारी रखना है, तो हमारा सुझाव है कि इस्तेमाल न करने पर इसे बंद कर दें. Cloud Console में Workbench के यूज़र इंटरफ़ेस (यूआई) से, नोटबुक को चुनें. इसके बाद, बंद करें को चुनें.

अगर आपको पूरी नोटबुक मिटानी है, तो सबसे ऊपर दाईं ओर मौजूद 'मिटाएं' बटन पर क्लिक करें.

डिप्लॉय किए गए एंडपॉइंट को मिटाने के लिए, Vertex AI कंसोल के एंडपॉइंट सेक्शन पर जाएं. इसके बाद, अपने एंडपॉइंट से मॉडल को अनडिप्लॉय करें:

एंडपॉइंट को मिटाएं

स्टोरेज बकेट को मिटाने के लिए, Cloud Console में नेविगेशन मेन्यू का इस्तेमाल करके, स्टोरेज पर जाएं. इसके बाद, अपनी बकेट चुनें और मिटाएं पर क्लिक करें:

स्टोरेज मिटाना