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

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

इस लैब में, आपको Vertex AI Workbench की मदद से नोटबुक को कॉन्फ़िगर और लॉन्च करने का तरीका पता चलेगा.

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

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

  • नोटबुक में पैरामीटर का इस्तेमाल करना
  • Vertex AI Workbench यूज़र इंटरफ़ेस (यूआई) की मदद से, notebook के एक्ज़ीक्यूशन को कॉन्फ़िगर करें और लॉन्च करें

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

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

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

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

Vertex AI Workbench, डेटा सेवाओं (जैसे, Dataproc, Dataflow, BigQuery, और Dataplex) और Vertex AI के साथ बेहतर इंटिग्रेशन की मदद से, उपयोगकर्ताओं को नोटबुक पर आधारित एंड-टू-एंड वर्कफ़्लो बनाने में तेज़ी से मदद करता है. यह डेटा साइंटिस्ट को GCP डेटा सेवाओं से कनेक्ट करने, डेटासेट का विश्लेषण करने, मॉडलिंग की अलग-अलग तकनीकों के साथ प्रयोग करने, तैयार किए गए मॉडल को प्रोडक्शन में डिप्लॉय करने, और मॉडल लाइफ़साइकल के ज़रिए MLOps को मैनेज करने में मदद करता है.

3. इस्तेमाल के उदाहरण की खास जानकारी

इस लैब में, आपको TensorFlow Datasets से DeepWeeds डेटासेट पर, इमेज क्लासिफ़िकेशन मॉडल को ट्रेनिंग देने के लिए, ट्रांसफ़र लर्निंग का इस्तेमाल करना होगा. TensorFlow Hub का इस्तेमाल करके, अलग-अलग मॉडल आर्किटेक्चर से निकाले गए फ़ीचर वेक्टर के साथ प्रयोग किया जा सकता है. जैसे, ResNet50, Inception, और MobileNet. ये सभी ImageNet बेंचमार्क डेटासेट पर पहले से ट्रेन किए गए हैं. Vertex AI Workbench के यूज़र इंटरफ़ेस (यूआई) की मदद से नोटबुक एक्ज़ीक्यूटर का इस्तेमाल करने पर, आपको Vertex AI Training में जॉब लॉन्च करने की सुविधा मिलेगी. इसमें पहले से ट्रेनिंग किए गए इन मॉडल का इस्तेमाल किया जाएगा. साथ ही, DeepWeeds के डेटासेट से क्लास की पहचान करने के लिए, आखिरी लेयर को फिर से ट्रेनिंग दी जाएगी.

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

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

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

Compute Engine पर जाएं और अगर यह पहले से चालू नहीं है, तो चालू करें को चुनें.

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

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

Vertex AI डैशबोर्ड

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

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

Vertex AI का मेन्यू

अगर Notebooks API पहले से चालू नहीं है, तो उसे चालू करें.

Notebook_api

इसके बाद, मैनेज की गई किताबें पर क्लिक करें:

Notebooks_UI

इसके बाद, नई नोटबुक चुनें.

new_notebook

अपनी नोटबुक को कोई नाम दें और फिर बेहतर सेटिंग पर क्लिक करें.

create_notebook

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

idle_timeout

अन्य सभी बेहतर सेटिंग को वैसे ही रहने दिया जा सकता है.

इसके बाद, बनाएं पर क्लिक करें.

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

open_jupyterlab

पहली बार किसी नए इंस्टेंस का इस्तेमाल करने पर, आपसे पुष्टि करने के लिए कहा जाएगा.

पुष्टि करें

Vertex AI Workbench में, एक कंप्यूट कंपैटबिलिटी लेयर होती है. इससे TensorFlow, PySpark, R वगैरह के लिए कर्नेल लॉन्च किए जा सकते हैं. ऐसा एक ही notebook इंस्टेंस से किया जा सकता है. पुष्टि करने के बाद, आपको लॉन्चर से वह नोटबुक चुनने का विकल्प मिलेगा जिसका इस्तेमाल करना है.

इस लैब के लिए, TensorFlow 2 कर्नेल को चुनें.

tf_kernel

5. ट्रेनिंग कोड में बदलाव करने की अनुमति दें

डीपवीड के डेटासेट में 17,509 इमेज हैं, जिनमें ऑस्ट्रेलिया में रहने वाले खर-पतवार की आठ अलग-अलग प्रजातियों को दिखाया गया है. इस सेक्शन में, आपको DeepWeeds के डेटासेट को प्रीप्रोसेस करने के लिए कोड लिखना होगा. साथ ही, TensorFlow हब से डाउनलोड किए गए फ़ीचर वेक्टर का इस्तेमाल करके, इमेज क्लासिफ़िकेशन मॉडल को बनाने और उन्हें ट्रेनिंग देने की जानकारी होगी.

आपको नीचे दिए गए कोड स्निपेट को अपनी नोटबुक की सेल में कॉपी करना होगा. सेल एक्ज़ीक्यूट करना ज़रूरी नहीं है.

पहला चरण: डेटासेट डाउनलोड और पहले से प्रोसेस करना

सबसे पहले, TensorFlow के डेटासेट का रात में इस्तेमाल होने वाला वर्शन इंस्टॉल करें, ताकि यह पक्का किया जा सके कि हम DeepWeeds के डेटासेट का सबसे नया वर्शन डाउनलोड कर रहे हैं.

!pip install tfds-nightly

इसके बाद, ज़रूरी लाइब्रेरी इंपोर्ट करें:

import tensorflow as tf
import tensorflow_datasets as tfds
import tensorflow_hub as hub

TensorFlow डेटासेट से डेटा डाउनलोड करें और क्लास की संख्या और डेटासेट का साइज़ निकालें.

data, info = tfds.load(name='deep_weeds', as_supervised=True, with_info=True)
NUM_CLASSES = info.features['label'].num_classes
DATASET_SIZE = info.splits['train'].num_examples

इमेज डेटा को 255 तक स्केल करने के लिए, प्रीप्रोसेसिंग फ़ंक्शन तय करें.

def preprocess_data(image, label):
  image = tf.image.resize(image, (300,300))
  return tf.cast(image, tf.float32) / 255., label

DeepWeeds के डेटासेट में ट्रेन या पुष्टि के बंटवारे की सुविधा नहीं है. यह सिर्फ़ ट्रेनिंग डेटासेट के साथ आता है. नीचे दिए गए कोड में, आपको उस डेटा का 80% हिस्सा ट्रेनिंग के लिए और बाकी 20% डेटा का इस्तेमाल पुष्टि के लिए करना होगा.

# Create train/validation splits

# Shuffle dataset
dataset = data['train'].shuffle(1000)

train_split = 0.8
val_split = 0.2
train_size = int(train_split * DATASET_SIZE)
val_size = int(val_split * DATASET_SIZE)

train_data = dataset.take(train_size)
train_data  = train_data.map(preprocess_data)
train_data  = train_data.batch(64)

validation_data = dataset.skip(train_size)
validation_data  = validation_data.map(preprocess_data)
validation_data  = validation_data.batch(64)

दूसरा चरण: मॉडल बनाना

आपने ट्रेनिंग और वैलिडेशन डेटासेट बना लिया है, तो अब आप अपना मॉडल बनाने के लिए तैयार हैं. TensorFlow Hub, फ़ीचर वेक्टर उपलब्ध कराता है. ये पहले से ट्रेन किए गए मॉडल होते हैं, जिनमें क्लासिफ़िकेशन की टॉप लेयर नहीं होती. आपको पहले से ट्रेन किए गए मॉडल को hub.KerasLayer के साथ रैप करके, सुविधा इकट्ठा करने वाला टूल बनाना होगा. यह मॉडल, TensorFlow सेव मॉडल को Keras लेयर के तौर पर रैप करता है. इसके बाद, आपको एक क्लासिफ़िकेशन लेयर जोड़ना होगा और Keras सिक्वेंशल एपीआई की मदद से मॉडल बनाना होगा.

सबसे पहले, feature_extractor_model पैरामीटर तय करें. यह आपके मॉडल के आधार के तौर पर इस्तेमाल किए जाने वाले TensorFlow हब फ़ीचर वेक्टर का नाम है.

feature_extractor_model = "inception_v3"

इसके बाद, आपको इस सेल को पैरामीटर सेल बनाना होगा. इससे, आपको रनटाइम पर feature_extractor_model के लिए वैल्यू पास करने की सुविधा मिलेगी.

सबसे पहले, सेल चुनें और दाएं पैनल में, प्रॉपर्टी इंस्पेक्टर पर क्लिक करें.

property_inspector

टैग, अपनी नोटबुक में मेटाडेटा जोड़ने का एक आसान तरीका है. "पैरामीटर" टाइप करें पर जाकर, Enter दबाएं. बाद में, एक्ज़ीक्यूशन को कॉन्फ़िगर करते समय, आपको अलग-अलग वैल्यू पास करनी होगी. इस मामले में, TensorFlow हब मॉडल को टेस्ट करना है. ध्यान दें कि आपको "पैरामीटर" शब्द टाइप करना होगा (और कोई अन्य शब्द नहीं) ऐसा इसलिए किया जाता है, क्योंकि इससे नोटबुक एक्सिटर को पता चलता है कि किन सेल को पैरामीटर करना है.

add_tag

आप डबल गियर आइकॉन पर फिर से क्लिक करके प्रॉपर्टी इंस्पेक्टर को बंद कर सकते हैं.

एक नई सेल बनाएं और tf_hub_uri तय करें. यहां आपको स्ट्रिंग इंटरपोलेशन का इस्तेमाल करके, पहले से ट्रेन किए गए उस मॉडल का नाम डालना होगा जिसका इस्तेमाल आपको अपनी नोटबुक के किसी खास एक्सीक्यूशन के लिए, बेस मॉडल के तौर पर करना है. डिफ़ॉल्ट रूप से, आपने feature_extractor_model को "inception_v3" पर सेट किया है. हालांकि, अन्य मान्य वैल्यू "resnet_v2_50" या "mobilenet_v1_100_224" हैं. TensorFlow हब के कैटलॉग में जाकर, अन्य विकल्पों को एक्सप्लोर किया जा सकता है.

tf_hub_uri = f"https://tfhub.dev/google/imagenet/{feature_extractor_model}/feature_vector/5"

इसके बाद, hub.KerasLayer का इस्तेमाल करके, फ़ीचर एक्सट्रैक्टर बनाएं और ऊपर बताए गए tf_hub_uri को पास करें. वैरिएबल को फ़्रीज़ करने के लिए trainable=False आर्ग्युमेंट को सेट करें, ताकि ट्रेनिंग सिर्फ़ उस नई क्लासिफ़ायर की नई लेयर में बदलाव करे जिसे आपको सबसे ऊपर जोड़ना होगा.

feature_extractor_layer = hub.KerasLayer(
    tf_hub_uri,
    trainable=False)

मॉडल को पूरा करने के लिए, सुविधा के डेटा इकट्ठा करने वाले लेयर को tf.keras.Sequential मॉडल में रैप करें और डेटा की कैटगरी तय करने के लिए, पूरी तरह कनेक्ट की गई लेयर जोड़ें. इस क्लासिफ़िकेशन हेड में यूनिट की संख्या, डेटासेट में मौजूद क्लास की संख्या के बराबर होनी चाहिए:

model = tf.keras.Sequential([
  feature_extractor_layer,
  tf.keras.layers.Dense(units=NUM_CLASSES)
])

आखिर में, मॉडल को कंपाइल करके उसे फ़िट करें.

model.compile(
  optimizer=tf.keras.optimizers.Adam(),
  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
  metrics=['acc'])

model.fit(train_data, validation_data=validation_data, epochs=3)

6. Notebook चलाएं

नोटबुक में सबसे ऊपर, एक्ज़िकेटर आइकॉन पर क्लिक करें.

मैनेजर

पहला चरण: ट्रेनिंग जॉब कॉन्फ़िगर करना

एक्ज़ीक्यूशन को कोई नाम दें और अपने प्रोजेक्ट के लिए स्टोरेज बकेट उपलब्ध कराएं.

executor_config

मशीन के टाइप को 4 सीपीयू, 15 जीबी रैम पर सेट करें.

साथ ही, एक NVIDIA जीपीयू जोड़ें.

TensorFlow Enterprise 2.6 (जीपीयू) पर एनवायरमेंट सेट करें.

'एक बार लागू करना' चुनें.

दूसरा चरण: पैरामीटर कॉन्फ़िगर करना

पैरामीटर सेट करने के लिए, ऐडवांस विकल्प ड्रॉप-डाउन पर क्लिक करें. बॉक्स में, feature_extractor_model=resnet_v2_50 लिखें. यह inception_v3 को बदल देगा, जो नोटबुक में इस पैरामीटर के लिए सेट की गई डिफ़ॉल्ट वैल्यू है, जिसमें resnet_v2_50 है.

advanced_options

आप डिफ़ॉल्ट सेवा खाते का इस्तेमाल करें वाले बॉक्स को चुना हुआ छोड़ सकते हैं.

इसके बाद, सबमिट करें पर क्लिक करें

चरण 3: नतीजों की जांच करना

कंसोल यूज़र इंटरफ़ेस (यूआई) के एक्ज़ीक्यूशन टैब में, आपको अपनी नोटबुक पर एक्ज़ीक्यूशन की स्थिति दिखेगी.

executions_UI

एक्ज़ीक्यूशन के नाम पर क्लिक करने से, आपको Vertex AI Training जॉब पर ले जाया जाएगा. यहां आपकी नोटबुक चल रही है.

vertex_training

जब आपका काम पूरा हो जाएगा, तो आपको नतीजे देखें पर क्लिक करके, आउटपुट नोटबुक दिखेगी.

view_result

आउटपुट नोटबुक में, आपको दिखेगा कि feature_extractor_model की वैल्यू को रनटाइम के दौरान पास की गई वैल्यू से बदल दिया गया था.

param_cells

🎉 बधाई हो! 🎉

आपने Vertex AI Workbench का इस्तेमाल, इन कामों के लिए करने का तरीका सीखा है:

  • नोटबुक में पैरामीटर का इस्तेमाल करना
  • Vertex AI Workbench के यूज़र इंटरफ़ेस (यूआई) से, नोटबुक को कॉन्फ़िगर और लॉन्च करना

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

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

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

मिटाएं

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

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