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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vertex डैशबोर्ड

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

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

Vertex AI का मेन्यू

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

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

इसके बाद, बिना जीपीयू के TensorFlow Enterprise (एलटीएस के साथ) इंस्टेंस टाइप का सबसे नया वर्शन चुनें:

TFE इंस्टेंस

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

पांचवां चरण: अपनी Notebook खोलें

इंस्टेंस बनाने के बाद, 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% से सुधार कर सकते हैं.

दूसरा चरण: सुविधा की अहमियत के बारे में जानना

भ्रम की स्थिति वाले मैट्रिक्स के नीचे, आपको सुविधा की अहमियत बताने वाला एक चार्ट दिखेगा, जो इस तरह दिखता है:

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

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

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

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

हम यहां अलग-अलग बैच में सुविधाओं की अहमियत का पता लगाने के बारे में सोच रहे हैं. हालांकि, 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 टूल इंस्टॉल करने के लिए, अपने notebook में इन्हें चलाएं:

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

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

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 में नेविगेशन मेन्यू का इस्तेमाल करके, स्टोरेज बकेट मिटाने के लिए स्टोरेज पर जाएं. इसके बाद, अपनी बकेट चुनें और मिटाएं पर क्लिक करें:

स्टोरेज मिटाएं