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

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

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

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

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

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

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

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 वगैरह के लिए कर्नेल लॉन्च किए जा सकते हैं. पुष्टि करने के बाद, आपको लॉन्चर से वह नोटबुक चुनने का विकल्प मिलेगा जिसका इस्तेमाल करना है.

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

tf_kernel

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

DeepWeeds डेटासेट में 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.KerasLayer के साथ रैप करके, सुविधा इकट्ठा करने वाला टूल बनाना होगा. यह मॉडल, TensorFlow सेव मॉडल को Keras लेयर के तौर पर रैप करता है. इसके बाद, आपको क्लासिफ़िकेशन लेयर जोड़नी होगी और Keras Sequential API की मदद से मॉडल बनाना होगा.

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

feature_extractor_model = "inception_v3"

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

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

property_inspector

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

add_tag

प्रॉपर्टी इंस्पेक्टर को बंद करने के लिए, दो गियर वाले आइकॉन पर फिर से क्लिक करें.

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

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

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

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

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

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

executions_UI

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

vertex_training

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

view_result

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

param_cells

🎉 बधाई हो! 🎉

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

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

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

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

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

मिटाएं

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

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