Vertex AI: अनुमान के लिए, BigQuery मशीन लर्निंग मॉडल को एक्सपोर्ट और डिप्लॉय करें

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

इस लैब में, आपको BigQuery मशीन लर्निंग की मदद से किसी मॉडल को ट्रेनिंग देनी होगी. इसके बाद, उस मॉडल को Vertex AI में एक्सपोर्ट करके डिप्लॉय करना होगा. यह Google Cloud पर उपलब्ध सबसे नया एआई प्रॉडक्ट है.

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

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

  • BigQuery मशीन लर्निंग (BQML) की मदद से मॉडल को ट्रेनिंग दें
  • अपने BQML मॉडल को Cloud Storage में एक्सपोर्ट करना
  • अपनी ट्रेनिंग वाले BQML को Vertex AI में डिप्लॉय करें
  • डिप्लॉय किए गए मॉडल के लिए अनुमान पाएं

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

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

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

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

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

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

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

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

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

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

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

Vertex AI डैशबोर्ड

तीसरा चरण: Notebooks इंस्टेंस बनाना

अपना मॉडल लागू करने के बाद, हम अनुमान लगाने के लिए Notebook का इस्तेमाल करेंगे. अपने Cloud Console के Vertex AI सेक्शन में जाकर, Notebooks पर क्लिक करें:

Vertex AI का मेन्यू

इसके बाद, नया इंस्टेंस चुनें. इसके बाद, बिना जीपीयू के TensorFlow Enterprise 2.3 इंस्टेंस टाइप चुनें:

TFE इंस्टेंस

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

CAIP Notebook खोलें

4. BigQuery एमएल मॉडल को ट्रेनिंग दें

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

पहला चरण: अपने प्रोजेक्ट में BigQuery डेटासेट बनाना

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

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

डेटासेट आईडी फ़ील्ड में, cc_default डालें. बाकी फ़ील्ड को ऐसे ही छोड़ दें और डेटासेट बनाएं पर क्लिक करें.

दूसरा चरण: CREATE MODEL क्वेरी चलाएं

BigQuery क्वेरी एडिटर में, नीचे दी गई CREATE MODEL क्वेरी चलाएं. इससे हमें उस सार्वजनिक डेटासेट पर BigQuery एमएल मॉडल बनाने और उसे ट्रेनिंग देने में मदद मिलेगी जिसका हम इस्तेमाल करेंगे. your-project को अपने Cloud प्रोजेक्ट के नाम से बदलना न भूलें:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

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

BQML मॉडल की जानकारी

मॉडल पर क्लिक करके, उसकी ट्रेनिंग और आकलन की मेट्रिक देखी जा सकती हैं.

5. अपना BigQuery ML मॉडल एक्सपोर्ट करना

ट्रेन किए गए BQML मॉडल की मदद से, अनुमान पाने के लिए BQML SQL सिंटैक्स का इस्तेमाल किया जा सकता है. इसके अलावा, मॉडल को एक्सपोर्ट करने के लिए भी, उसे कहीं और डिप्लॉय किया जा सकता है. यहां हम अपने मॉडल को एक्सपोर्ट करेंगे, ताकि हम उसे Vertex AI में डिप्लॉय कर सकें. इससे हमें मॉडल को बड़े पैमाने पर बेहतर बनाने और अनुमान पाने में मदद मिलेगी.

पहला चरण: अपने मॉडल के लिए Cloud Storage बकेट बनाना

मॉडल के विवरण में, मॉडल निर्यात करें क्लिक करें:

BQML मॉडल एक्सपोर्ट करें

इसके बाद, आपको Google Cloud Storage (GCS) की उस जगह की जानकारी डालने के लिए कहा जाएगा जहां आपको अपने मॉडल की ऐसेट को एक्सपोर्ट करना है. अगर आपके पास अभी तक GCS बकेट नहीं है, तो चिंता न करें! हम इसे बनाने जा रहे हैं. सबसे पहले, ब्राउज़ करें पर क्लिक करें:

GCS (जीसीएस) बकेट ब्राउज़ करें

इसके बाद, नया बकेट बनाने के लिए, + आइकॉन पर क्लिक करें:

नया GCS बकेट

इसे कोई यूनीक नाम दें. स्टोरेज बकेट के नाम, दुनिया भर में अलग-अलग होने चाहिए. जारी रखें पर क्लिक करें. अगले चरण में, जगह का टाइप सेक्शन में जाकर क्षेत्र चुनें. इसके बाद, ड्रॉपडाउन से कोई एक इलाका चुनें:

बकेट की जगह

डिफ़ॉल्ट स्टोरेज क्लास का इस्तेमाल करें. साथ ही, ऐक्सेस कंट्रोल में जाकर पक्का करें कि यूनिफ़ॉर्म को चुना गया हो:

यूनिफ़ॉर्म ऐक्सेस कंट्रोल

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

दूसरा चरण: BQML मॉडल एक्सपोर्ट करना

नई बकेट बनाने के साथ, नाम फ़ील्ड में model-assets (या जो भी आप चाहें) डालें और फिर चुनें पर क्लिक करें:

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

इसके बाद, एक्सपोर्ट करें पर क्लिक करें. ऐसा करने पर, BigQuery में एक जॉब बन जाएगा, ताकि आपके मॉडल को TensorFlow के सेव किए गए मॉडल वाले फ़ॉर्मैट में, आपके बताए गए नए GCS बकेट में एक्सपोर्ट किया जा सके. इसे एक्सपोर्ट होने में करीब एक मिनट लगेगा.

मॉडल को एक्सपोर्ट करने के दौरान, Cloud Console के स्टोरेज सेक्शन पर जाएं. अपना काम पूरा होने के बाद, आपको model-assets सबडायरेक्ट्री के तहत बनाए गए बकेट में एक्सपोर्ट की गई मॉडल ऐसेट दिखेंगी:

एक्सपोर्ट की गई मॉडल एसेट

6. मॉडल को Vertex AI में इंपोर्ट करें

इस चरण में, हम GCS (जीसीएस) के स्टोरेज की उस लोकेशन का रेफ़रंस देंगे जहां हमने मॉडल बनाने और उसे Vertex AI में इंपोर्ट करने के लिए, मॉडल ऐसेट को एक्सपोर्ट किया है.

चरण 1: मॉडल इंपोर्ट करना

अपने Cloud Console में, Vertex AI मॉडल सेक्शन पर जाएं. वहां से, इंपोर्ट करें चुनें:

मॉडल इंपोर्ट करें

पहले चरण में, अपने मॉडल को predict_default नाम दें. वही इलाका चुनें जहां आपने बकेट बनाई थी (us-central1, europe-west4 या asia-east1. इसके बाद, जारी रखें पर क्लिक करें. मॉडल सेटिंग में, "मॉडल के आर्टफ़ैक्ट को पहले से बने नए कंटेनर में इंपोर्ट करें" रखें चुना गया.

मॉडल फ़्रेमवर्क ड्रॉपडाउन में, TensorFlow चुनें. इसके बाद, फ़्रेमवर्क वर्शन के तौर पर 2.3 चुनें.

मॉडल आर्टफ़ैक्ट लोकेशन फ़ील्ड में, ब्राउज़ करें पर क्लिक करें, अभी-अभी बनाए गए GCS बकेट पर क्लिक करें और मॉडल-ऐसेट डायरेक्ट्री पर क्लिक करें:

मॉडल एसेट पाथ

इसके बाद, इंपोर्ट करें पर क्लिक करें. आपके मॉडल को इंपोर्ट करने में कुछ मिनट लगेंगे. इसके बन जाने के बाद, यह आपको अपने Cloud Console के मॉडल सेक्शन में दिखेगा:

मॉडल सेक्शन

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

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

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

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

डिप्लॉय करें और जांच करें

अपने एंडपॉइंट को कोई नाम दें, जैसे कि default_pred_v1. ट्रैफ़िक के बंटवारे की सेटिंग में कोई बदलाव न करें. इसके बाद, अपने मॉडल डिप्लॉयमेंट के लिए मशीन टाइप चुनें. हमने यहां n1-highcpu-2 का उपयोग किया है, लेकिन आप अपनी पसंद की मशीन प्रकार चुन सकते हैं.

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

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

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

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

मॉडल के अनुमान पाने के लिए कुछ विकल्प उपलब्ध हैं:

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

यहां हम बताएंगे कि एपीआई की मदद से अनुमान कैसे पाएं

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

मॉडल के अनुमान पाने का तरीका बताने के लिए, हम इस लैब के शुरू में आपके बनाए गए Vertex Notebook इंस्टेंस का इस्तेमाल करेंगे.

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

नोटबुक खोलें

अपनी notebook में, default-pred.json नाम की JSON फ़ाइल का टेस्ट उदाहरण लिखने के लिए, इसे किसी सेल में चलाएं. हम इस उदाहरण को अपने मॉडल पर भेजेंगे, ताकि अनुमान लगाया जा सके:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

इसके बाद, Vertex यूज़र इंटरफ़ेस (यूआई) में, आपने अभी-अभी जिस एंडपॉइंट को डिप्लॉय किया है उसके लिए सैंपल अनुरोध पर क्लिक करें:

अनुरोध का उदाहरण

REST टैब पर मौजूद चौथे चरण में मौजूद कोड को अपनी नोटबुक में कॉपी करें और सेल को चलाएं:

अनुरोध वैरिएबल

इसके बाद, उस क्षेत्र के लिए वैरिएबल जोड़ें जहां आपने बकेट और मॉडल बनाया है. नीचे दी गई स्ट्रिंग में your-region बदलें:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

आखिर में, अपनी notebook में यहां दिए गए कोड को कॉपी करके, curl की मदद से अपने एंडपॉइंट पर अनुमान का अनुरोध करें:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

आपको कुछ ऐसा दिखेगा (अनुमान के लिए सटीक वैल्यू अलग-अलग होंगी):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

default_payment_next_month_probs में मौजूद वैल्यू, हर क्लास के लिए प्रॉबबिलिटी दिखाती हैं. इस उदाहरण के लिए, हमारा मॉडल अनुमान लगाता है कि इस व्यक्ति के अगले पेमेंट पर डिफ़ॉल्ट रूप से नहीं होने की संभावना 81% है. .819 की वैल्यू, 0 क्लास (डिफ़ॉल्ट नहीं) से मेल खाती है.

🎉 बधाई हो! 🎉

आपने ये काम कर लिए हैं:

  • BQML में मॉडल को ट्रेनिंग दें
  • अपने BQML मॉडल को Cloud Storage में एक्सपोर्ट करना
  • अनुमान लगाने के लिए, BQML मॉडल को Vertex AI में इंपोर्ट करें
  • Vertex AI मॉडल बनाना और उसे एंडपॉइंट पर डिप्लॉय करना
  • Vertex Notebooks और Curl की मदद से, डिप्लॉय किए गए अपने एंडपॉइंट पर अनुमान पाएं

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

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

यदि आप इस लैब में बनाए गए नोटबुक का उपयोग करना जारी रखना चाहते हैं, तो यह अनुशंसा की जाती है कि आप उपयोग में नहीं होने पर इसे बंद कर दें. अपने Cloud Console में Notebook के यूज़र इंटरफ़ेस (यूआई) से, नोटबुक चुनें और फिर बंद करें चुनें:

इंस्टेंस रोकें

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

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

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

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

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