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, अनुमान लगाने की सुविधा, और वर्कबेंच जैसे प्रॉडक्ट पर फ़ोकस किया जाएगा.

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 सेक्शन में, वर्कबेंच पर क्लिक करें:

Vertex AI का मेन्यू

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

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

इसके बाद, GPU के बिना TensorFlow Enterprise (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% से भी कम डेटा में धोखाधड़ी वाले लेन-देन हैं), इसलिए AUC PRC विकल्प चुनें. इससे कम सामान्य क्लास के लिए, प्रिसिज़न-रीकॉल को बढ़ाया जा सकेगा:

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

जारी रखें को चुनें. इसके बाद, आखिरी चरण (कंप्यूट और कीमत) पर जाएं. यहां, अपने बजट के लिए नोड के घंटों की संख्या के तौर पर 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 टूल इंस्टॉल करने के लिए, अपनी नोटबुक में किसी सेल में यह कोड चलाएं:

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

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