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

3. अपना एनवायरमेंट सेट अप करने का तरीका
अपना एनवायरमेंट सेट अप करने के लिए, Vertex AI की मदद से, पसंद के मुताबिक बनाए गए मॉडल को ट्रेनिंग देना लैब में दिए गए चरणों को पूरा करें.
4. मॉडल को रजिस्ट्री में अपलोड करना
पूर्वानुमान पाने के लिए, हमें अपने मॉडल को Vertex AI Model Registry में अपलोड करना होगा. यह एक रिपॉज़िटरी है, जहां अपने एमएल मॉडल के लाइफ़साइकल को मैनेज किया जा सकता है.
कस्टम ट्रेनिंग जॉब कॉन्फ़िगर करते समय, मॉडल अपलोड किए जा सकते हैं. जैसा कि यहां दिखाया गया है.

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

IMPORT को चुनें

नए मॉडल के तौर पर इंपोर्ट करें को चुनें. इसके बाद, अपने मॉडल के लिए कोई नाम डालें

मॉडल की सेटिंग में जाकर, पहले से बने कंटेनर के साथ मॉडल इंपोर्ट करें और TensorFlow 2.8 का इस्तेमाल करें. पहले से बनाए गए अनुमान वाले कंटेनर की पूरी सूची यहां देखी जा सकती है.
इसके बाद, उस Cloud Storage बकेट का पाथ दें जहां आपने कस्टम ट्रेनिंग जॉब में मॉडल आर्टफ़ैक्ट सेव किए थे. यह कुछ ऐसा दिखना चाहिए: gs://{PROJECT_ID}-bucket/model_output
हम'एआई के फ़ैसलों के बारे में जानकारी' सेक्शन को छोड़ देंगे. हालांकि, अगर आपको Vertex Explainable AI के बारे में ज़्यादा जानना है, तो दस्तावेज़ देखें.
मॉडल इंपोर्ट होने के बाद, आपको यह रजिस्ट्री में दिखेगा.

ध्यान दें कि अगर आपको यूज़र इंटरफ़ेस (यूआई) के बजाय एसडीके टूल के ज़रिए ऐसा करना है, तो मॉडल अपलोड करने के लिए, अपनी वर्कबेंच नोटबुक से यह कोड चलाएं.
from google.cloud import aiplatform
my_model = aiplatform.Model.upload(display_name='flower-model',
artifact_uri='gs://{PROJECT_ID}-bucket/model_output',
serving_container_image_uri='us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest')
5. मॉडल को एंडपॉइंट पर डिप्लॉय करना
Vertex AI में दो तरह के अनुमान लगाने वाले जॉब चलाए जा सकते हैं: बैच और ऑनलाइन.
बैच के तौर पर अनुमान लगाने की सुविधा, एसिंक्रोनस अनुरोध पर काम करती है. यह तब सबसे सही होता है, जब आपको तुरंत जवाब की ज़रूरत न हो और आपको एक ही अनुरोध में इकट्ठा किए गए डेटा को प्रोसेस करना हो.
वहीं दूसरी ओर, अगर आपको अपने मॉडल को रीयल टाइम में भेजे गए डेटा से कम समय में अनुमान लगाने हैं, तो ऑनलाइन अनुमान लगाने की सुविधा का इस्तेमाल करें.
मॉडल को रजिस्ट्री में शामिल करने के बाद, अब इसका इस्तेमाल बैच के अनुमानों के लिए किया जा सकता है.
हालांकि, अगर हमें ऑनलाइन अनुमान चाहिए, तो हमें मॉडल को किसी एंडपॉइंट पर डिप्लॉय करना होगा. इससे सेव किए गए मॉडल आर्टफ़ैक्ट को कम समय में अनुमान लगाने के लिए, फ़िज़िकल संसाधनों से जोड़ा जाता है.
किसी एंडपॉइंट पर मॉडल को डिप्लॉय करने के लिए, मॉडल के सबसे दाईं ओर मौजूद तीन बिंदु चुनें. इसके बाद, एंडपॉइंट पर डिप्लॉय करें को चुनें.

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

एंडपॉइंट, अपने-आप स्केल होने की सुविधा के साथ काम करते हैं. इसका मतलब है कि कम से कम और ज़्यादा से ज़्यादा वैल्यू सेट की जा सकती है. साथ ही, कंप्यूट नोड उन सीमाओं के अंदर ट्रैफ़िक की मांग को पूरा करने के लिए स्केल करेंगे.
यह लैब सिर्फ़ डेमो के लिए है और हम इस एंडपॉइंट का इस्तेमाल ज़्यादा ट्रैफ़िक के लिए नहीं करेंगे. इसलिए, कंप्यूट नोड की ज़्यादा से ज़्यादा संख्या को 1 पर सेट करें. साथ ही, मशीन टाइप के तौर पर n1-standard-4 को चुनें.

हम मॉडल मॉनिटरिंग को छोड़ देंगे. हालांकि, अगर आपको इस सुविधा के बारे में ज़्यादा जानना है, तो दस्तावेज़ देखें.
इसके बाद, लागू करें पर क्लिक करें
मॉडल को डिप्लॉय होने में कुछ मिनट लगेंगे. इसके बाद, आपको दिखेगा कि मॉडल के डिप्लॉयमेंट का स्टेटस बदलकर Vertex AI पर डिप्लॉय किया गया हो गया है.
अगर आपको एसडीके की मदद से मॉडल डिप्लॉय करना है, तो यहां दिया गया निर्देश चलाएं.
my_model = aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}")
endpoint = my_model.deploy(
deployed_model_display_name='my-endpoint',
traffic_split={"0": 100},
machine_type="n1-standard-4",
accelerator_count=0,
min_replica_count=1,
max_replica_count=1,
)
6. अनुमान पाना
ऑनलाइन अनुमान
जब आपके मॉडल को किसी एंडपॉइंट पर डिप्लॉय किया जाता है, तब उसे किसी अन्य रेस्ट एंडपॉइंट की तरह इस्तेमाल किया जा सकता है. इसका मतलब है कि इसे क्लाउड फ़ंक्शन, चैटबॉट, वेब ऐप्लिकेशन वगैरह से कॉल किया जा सकता है.
हम इस एंडपॉइंट को Workbench से कॉल करेंगे, ताकि आपको डेमो दिया जा सके.
पिछले लैब में बनाई गई नोटबुक पर वापस जाएं. लॉन्चर से, नई TensorFlow 2 नोटबुक बनाएं.

Vertex AI Python SDK, numpy, और PIL इंपोर्ट करें
from google.cloud import aiplatform
import numpy as np
from PIL import Image
नीचे दी गई इमेज डाउनलोड करें और इसे अपने वर्कबेंच इंस्टेंस पर अपलोड करें. हम इस मॉडल को डैंडेलियन की इस इमेज पर टेस्ट करेंगे.

सबसे पहले, एंडपॉइंट तय करें. आपको नीचे दिए गए {PROJECT_NUMBER} और {ENDPOINT_ID} को बदलना होगा.
endpoint = aiplatform.Endpoint(
endpoint_name="projects/{PROJECT_NUMBER}/locations/us-central1/endpoints/{ENDPOINT_ID}")
cloud Console के Endpoints सेक्शन में जाकर, अपना endpoint_id देखा जा सकता है.

इसके अलावा, आपको कंसोल के होम पेज पर अपना प्रोजेक्ट नंबर मिल सकता है. ध्यान दें कि यह प्रोजेक्ट आईडी से अलग है.

नीचे दिया गया कोड, PIL की मदद से इमेज को खोलता है और उसका साइज़ बदलता है.
IMAGE_PATH = "test-image.jpg"
im = Image.open(IMAGE_PATH)
इसके बाद, numpy डेटा को फ़्लोट32 टाइप और सूची में बदलें. हम इसे सूची में बदलते हैं, क्योंकि numpy डेटा को JSON में नहीं बदला जा सकता. इसलिए, हम इसे अपने अनुरोध के मुख्य हिस्से में नहीं भेज सकते.
x_test = np.asarray(im).astype(np.float32).tolist()
आखिर में, कॉल endpoint.predict करें.
endpoint.predict(instances=x_test).predictions
आपको जो नतीजा मिलता है वह मॉडल का आउटपुट होता है. यह पांच यूनिट वाली सॉफ़्टमैक्स लेयर होती है. अगर आपको इंडेक्स के बजाय स्ट्रिंग लेबल दिखाने के लिए कस्टम लॉजिक लिखना है, तो कस्टम अनुमान रूटीन का इस्तेमाल किया जा सकता है.
डेटा के बैच का अनुमान
बैच के तौर पर अनुमान लगाने के लिए, डेटा को फ़ॉर्मैट करने के कई तरीके हैं. आसान बनाने के लिए, हम numpy डेटा को json फ़ाइल में डंप करेंगे और फ़ाइल को Cloud Storage में सेव करेंगे.
with open('test-data.json', 'w') as fp:
json.dump(x_test, fp)
!gsutil cp test-data.json gs://{YOUR_BUCKET}
इसके बाद, मॉडल तय करें. यह एंडपॉइंट तय करने जैसा ही है. हालांकि, आपको ENDPOINT_ID के बजाय MODEL_ID देना होगा.
my_model=aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}")
मॉडल आईडी ढूंढने के लिए, कंसोल के मॉडल सेक्शन में जाकर मॉडल का नाम और वर्शन चुनें. इसके बाद, वर्शन की जानकारी चुनें

आखिर में, एसडीके का इस्तेमाल करके बैच के तौर पर अनुमान लगाने वाले जॉब को कॉल करें. इसके लिए, उस Cloud Storage पाथ को पास करें जहां आपने JSON फ़ाइल सेव की है. साथ ही, अनुमान के नतीजों को सेव करने के लिए Cloud Storage की जगह की जानकारी दें.
batch_prediction_job = my_model.batch_predict(
job_display_name='flower_batch_predict',
gcs_source='gs://{YOUR_BUCKET}/test-data.json',
gcs_destination_prefix='gs://{YOUR_BUCKET}/prediction-results',
machine_type='n1-standard-4',)
कंसोल के बैच प्रेडिक्शन सेक्शन में जाकर, नौकरी की प्रोग्रेस को ट्रैक किया जा सकता है. ध्यान दें कि किसी एक इमेज के लिए बैच के तौर पर अनुमान लगाने का काम करना सही नहीं है.

आगे क्या करना है
इस उदाहरण में, हमने अनुमान लगाने के लिए कॉल करने से पहले, टेस्ट इमेज को NumPy में बदल दिया है. ज़्यादा व्यावहारिक इस्तेमाल के लिए, आपको शायद इमेज को ही भेजना हो और उसे पहले NumPy में लोड न करना पड़े. इसके लिए, आपको इमेज बाइट को डिकोड करने के लिए, TensorFlow सर्विंग फ़ंक्शन में बदलाव करना होगा. इसमें थोड़ा ज़्यादा काम करना पड़ता है, लेकिन बड़ी इमेज और ऐप्लिकेशन बनाने के लिए यह ज़्यादा असरदार होगा. इस नोटबुक में इसका उदाहरण देखा जा सकता है.
🎉 बधाई हो! 🎉
आपने Vertex AI का इस्तेमाल करके ये काम करने का तरीका सीखा है:
- Vertex AI Model Registry में मॉडल अपलोड करना
- बैच और ऑनलाइन अनुमान पाना
Vertex के अलग-अलग हिस्सों के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
7. साफ़-सफ़ाई सेवा
अगर आपको मॉडल का इस्तेमाल नहीं करना है, तो उन्हें एंडपॉइंट से अनडिप्लॉय करें. आपके पास एंडपॉइंट को पूरी तरह से मिटाने का विकल्प भी होता है. अगर आपको ज़रूरत हो, तो किसी मॉडल को हमेशा किसी एंडपॉइंट पर फिर से डिप्लॉय किया जा सकता है.

Workbench की मदद से मैनेज किए गए नोटबुक, 180 मिनट तक इस्तेमाल न किए जाने पर अपने-आप बंद हो जाते हैं. इसलिए, आपको इंस्टेंस बंद करने की ज़रूरत नहीं होती. अगर आपको इंस्टेंस को मैन्युअल तरीके से बंद करना है, तो कंसोल के Vertex AI Workbench सेक्शन में जाकर, Stop बटन पर क्लिक करें. अगर आपको नोटबुक पूरी तरह से मिटानी है, तो 'मिटाएं' बटन पर क्लिक करें.

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