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

3. इस्तेमाल के उदाहरण की खास जानकारी
इस लैब में, TensorFlow Datasets के घोड़ों या इंसानों के डेटासेट पर ट्रेन किए गए इमेज क्लासिफ़िकेशन मॉडल के लिए, सबसे सही पैरामीटर खोजने के लिए हाइपरपैरामीटर ट्यूनिंग का इस्तेमाल किया जाएगा.
हाइपर पैरामीटर ट्यूनिंग
Vertex AI Training की मदद से हाइपरपैरामीटर ट्यूनिंग की सुविधा, आपके चुने गए हाइपरपैरामीटर की वैल्यू के साथ आपके ट्रेनिंग ऐप्लिकेशन के कई ट्रायल चलाती है. ये वैल्यू, आपकी तय की गई सीमाओं के अंदर सेट की जाती हैं. Vertex AI, हर एक्सपेरिमेंट के नतीजों को ट्रैक करता है और आने वाले एक्सपेरिमेंट के लिए अडजस्टमेंट करता है.
Vertex AI Training के साथ हाइपरपैरामीटर ट्यूनिंग का इस्तेमाल करने के लिए, आपको ट्रेनिंग कोड में दो बदलाव करने होंगे:
- आपको जिस हाइपरपैरामीटर को ट्यून करना है उसके लिए, अपने मुख्य ट्रेनिंग मॉड्यूल में कमांड-लाइन आर्ग्युमेंट तय करें.
- उन आर्ग्युमेंट में पास की गई वैल्यू का इस्तेमाल करके, अपने ऐप्लिकेशन के कोड में उससे जुड़ा हाइपरपैरामीटर सेट करें.
डिस्ट्रिब्यूटेड ट्रेनिंग
अगर आपके पास एक GPU है, तो TensorFlow इस एक्सेलेरेटर का इस्तेमाल करके मॉडल की ट्रेनिंग को तेज़ कर देगा. इसके लिए, आपको कुछ भी करने की ज़रूरत नहीं होगी. हालांकि, अगर आपको एक से ज़्यादा जीपीयू का इस्तेमाल करके परफ़ॉर्मेंस को बेहतर बनाना है, तो आपको tf.distribute का इस्तेमाल करना होगा. यह TensorFlow का मॉड्यूल है. इसका इस्तेमाल, एक से ज़्यादा डिवाइसों पर कंप्यूटेशन करने के लिए किया जाता है.
इस लैब में tf.distribute.MirroredStrategy का इस्तेमाल किया जाता है. इसे ट्रेनिंग के लिए इस्तेमाल किए जाने वाले ऐप्लिकेशन में जोड़ा जा सकता है. इसके लिए, आपको कोड में सिर्फ़ कुछ बदलाव करने होंगे. इस रणनीति के तहत, आपकी मशीन के हर जीपीयू पर मॉडल की एक कॉपी बनाई जाती है. इसके बाद, ग्रेडिएंट अपडेट एक साथ होंगे. इसका मतलब है कि हर जीपीयू, इनपुट डेटा के अलग-अलग स्लाइस पर मॉडल के ज़रिए फ़ॉरवर्ड और बैकवर्ड पास की गिनती करता है. इसके बाद, इन सभी स्लाइस से कैलकुलेट किए गए ग्रेडिएंट को सभी जीपीयू में एग्रीगेट किया जाता है. साथ ही, ऑल-रिड्यूस नाम की प्रोसेस में इनका औसत निकाला जाता है. औसत ग्रेडिएंट का इस्तेमाल करके, मॉडल पैरामीटर अपडेट किए जाते हैं.
इस लैब को पूरा करने के लिए, आपको इस बारे में ज़्यादा जानकारी की ज़रूरत नहीं है. हालांकि, अगर आपको यह जानना है कि TensorFlow में डिस्ट्रिब्यूटेड ट्रेनिंग कैसे काम करती है, तो यहां दिया गया वीडियो देखें:
4. अपना एनवायरमेंट सेट अप करने का तरीका
इस कोडलैब को चलाने के लिए, आपके पास बिलिंग की सुविधा वाला Google Cloud Platform प्रोजेक्ट होना चाहिए. प्रोजेक्ट बनाने के लिए, यहां दिए गए निर्देशों का पालन करें.
पहला चरण: Compute Engine API चालू करना
Compute Engine पर जाएं. अगर यह पहले से चालू नहीं है, तो चालू करें को चुनें.
दूसरा चरण: Container Registry API चालू करना
Container Registry पर जाएं. अगर यह पहले से चालू नहीं है, तो चालू करें को चुनें. इसका इस्तेमाल, कस्टम ट्रेनिंग जॉब के लिए कंटेनर बनाने के लिए किया जाएगा.
तीसरा चरण: Vertex AI API चालू करना
Cloud Console के Vertex AI सेक्शन पर जाएं और Vertex AI API चालू करें पर क्लिक करें.

चौथा चरण: Vertex AI Workbench इंस्टेंस बनाना
Cloud Console के Vertex AI सेक्शन में जाकर, Workbench पर क्लिक करें:

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

चालू होने के बाद, मैनेज की गई नोटबुक पर क्लिक करें:

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

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

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

अगर टर्मिनल पहले से चालू नहीं है, तो सुरक्षा में जाकर "टर्मिनल चालू करें" को चुनें.

अन्य सभी ऐडवांस सेटिंग को डिफ़ॉल्ट रूप से सेट रहने दें.
इसके बाद, बनाएं पर क्लिक करें. इंस्टेंस को चालू होने में कुछ मिनट लगेंगे.
इंस्टेंस बन जाने के बाद, JupyterLab खोलें को चुनें.

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

5. ट्रेनिंग कोड लिखना
शुरू करने के लिए, लॉन्चर मेन्यू से अपने नोटबुक इंस्टेंस में टर्मिनल विंडो खोलें:

vertex-codelab नाम की एक नई डायरेक्ट्री बनाएं और उसमें cd करें.
mkdir vertex-codelab
cd vertex-codelab
ट्रेनिंग कोड के लिए डायरेक्ट्री बनाने और Python फ़ाइल बनाने के लिए, यहाँ दिया गया कोड चलाएँ. इस फ़ाइल में आपको कोड जोड़ना होगा:
mkdir trainer
touch trainer/task.py
अब आपकी vertex-codelab डायरेक्ट्री में ये फ़ाइलें होनी चाहिए:
+ trainer/
+ task.py
इसके बाद, अभी बनाई गई task.py फ़ाइल खोलें और नीचे दिया गया पूरा कोड चिपकाएं.
import tensorflow as tf
import tensorflow_datasets as tfds
import argparse
import hypertune
import os
NUM_EPOCHS = 10
BATCH_SIZE = 64
def get_args():
'''Parses args. Must include all hyperparameters you want to tune.'''
parser = argparse.ArgumentParser()
parser.add_argument(
'--learning_rate',
required=True,
type=float,
help='learning rate')
parser.add_argument(
'--momentum',
required=True,
type=float,
help='SGD momentum value')
parser.add_argument(
'--num_units',
required=True,
type=int,
help='number of units in last hidden layer')
args = parser.parse_args()
return args
def preprocess_data(image, label):
'''Resizes and scales images.'''
image = tf.image.resize(image, (150,150))
return tf.cast(image, tf.float32) / 255., label
def create_dataset(batch_size):
'''Loads Horses Or Humans dataset and preprocesses data.'''
data, info = tfds.load(name='horses_or_humans', as_supervised=True, with_info=True)
# Create train dataset
train_data = data['train'].map(preprocess_data)
train_data = train_data.shuffle(1000)
train_data = train_data.batch(batch_size)
# Create validation dataset
validation_data = data['test'].map(preprocess_data)
validation_data = validation_data.batch(batch_size)
return train_data, validation_data
def create_model(num_units, learning_rate, momentum):
'''Defines and compiles model.'''
inputs = tf.keras.Input(shape=(150, 150, 3))
x = tf.keras.layers.Conv2D(16, (3, 3), activation='relu')(inputs)
x = tf.keras.layers.MaxPooling2D((2, 2))(x)
x = tf.keras.layers.Conv2D(32, (3, 3), activation='relu')(x)
x = tf.keras.layers.MaxPooling2D((2, 2))(x)
x = tf.keras.layers.Conv2D(64, (3, 3), activation='relu')(x)
x = tf.keras.layers.MaxPooling2D((2, 2))(x)
x = tf.keras.layers.Flatten()(x)
x = tf.keras.layers.Dense(num_units, activation='relu')(x)
outputs = tf.keras.layers.Dense(1, activation='sigmoid')(x)
model = tf.keras.Model(inputs, outputs)
model.compile(
loss='binary_crossentropy',
optimizer=tf.keras.optimizers.SGD(learning_rate=learning_rate, momentum=momentum),
metrics=['accuracy'])
return model
def main():
args = get_args()
# Create distribution strategy
strategy = tf.distribute.MirroredStrategy()
# Get data
GLOBAL_BATCH_SIZE = BATCH_SIZE * strategy.num_replicas_in_sync
train_data, validation_data = create_dataset(GLOBAL_BATCH_SIZE)
# Wrap variable creation within strategy scope
with strategy.scope():
model = create_model(args.num_units, args.learning_rate, args.momentum)
# Train model
history = model.fit(train_data, epochs=NUM_EPOCHS, validation_data=validation_data)
# Define metric
hp_metric = history.history['val_accuracy'][-1]
hpt = hypertune.HyperTune()
hpt.report_hyperparameter_tuning_metric(
hyperparameter_metric_tag='accuracy',
metric_value=hp_metric,
global_step=NUM_EPOCHS)
if __name__ == "__main__":
main()
आइए, कोड के बारे में ज़्यादा जानें. साथ ही, डिस्ट्रिब्यूटेड ट्रेनिंग और हाइपरपैरामीटर ट्यूनिंग से जुड़े कॉम्पोनेंट की जांच करें.
डिस्ट्रिब्यूटेड ट्रेनिंग
main()फ़ंक्शन में,MirroredStrategyऑब्जेक्ट बनाया जाता है. इसके बाद, आपको रणनीति के स्कोप में अपने मॉडल वैरिएबल बनाने होंगे. इस चरण में, TensorFlow को यह बताया जाता है कि किन वैरिएबल को सभी GPU में कॉपी किया जाना चाहिए.- बैच के साइज़ को
num_replicas_in_syncके हिसाब से बढ़ाया जाता है. TensorFlow में सिंक्रोनस डेटा पैरललिज़्म की रणनीतियों का इस्तेमाल करते समय, बैच साइज़ को बढ़ाना सबसे सही तरीका है. आपको यहां ज़्यादा जानकारी मिल सकती है.
हाइपर पैरामीटर ट्यूनिंग
- यह स्क्रिप्ट,
hypertuneलाइब्रेरी को इंपोर्ट करती है. बाद में, कंटेनर इमेज बनाते समय हमें यह पक्का करना होगा कि हमने इस लाइब्रेरी को इंस्टॉल किया हो. get_args()फ़ंक्शन, हर उस हाइपरपैरामीटर के लिए कमांड-लाइन आर्ग्युमेंट तय करता है जिसे आपको ट्यून करना है. इस उदाहरण में, जिन हाइपरपैरामीटर को ट्यून किया जाएगा वे हैं लर्निंग रेट, ऑप्टिमाइज़र में मोमेंटम वैल्यू, और मॉडल की आखिरी हिडन लेयर में यूनिट की संख्या. हालांकि, आपके पास अन्य हाइपरपैरामीटर के साथ एक्सपेरिमेंट करने का विकल्प भी है. इसके बाद, उन आर्ग्युमेंट में पास की गई वैल्यू का इस्तेमाल, कोड में हाइपरपैरामीटर सेट करने के लिए किया जाता है (जैसे,learning_rate = args.learning_rateसेट करें)main()फ़ंक्शन के आखिर में,hypertuneलाइब्रेरी का इस्तेमाल करके उस मेट्रिक को तय किया जाता है जिसे आपको ऑप्टिमाइज़ करना है. TensorFlow में, Kerasmodel.fitतरीका,Historyऑब्जेक्ट दिखाता है.History.historyएट्रिब्यूट, ट्रेनिंग के दौरान हुए नुकसान की वैल्यू और लगातार होने वाले इपॉक में मेट्रिक की वैल्यू का रिकॉर्ड होता है. अगर आपने पुष्टि करने से जुड़ा डेटाmodel.fitएट्रिब्यूट को भेजा है, तोHistory.historyएट्रिब्यूट में पुष्टि करने से होने वाले नुकसान और मेट्रिक की वैल्यू भी शामिल होंगी. उदाहरण के लिए, अगर आपने पुष्टि करने के लिए इस्तेमाल किए गए डेटा के साथ तीन इपोक के लिए किसी मॉडल को ट्रेन किया है औरaccuracyको मेट्रिक के तौर पर दिया है, तोaccuracyएट्रिब्यूट, इस डिक्शनरी की तरह दिखेगा.History.history
{
"accuracy": [
0.7795261740684509,
0.9471358060836792,
0.9870933294296265
],
"loss": [
0.6340447664260864,
0.16712145507335663,
0.04546636343002319
],
"val_accuracy": [
0.3795261740684509,
0.4471358060836792,
0.4870933294296265
],
"val_loss": [
2.044623374938965,
4.100203514099121,
3.0728273391723633
]
अगर आपको हाइपरपैरामीटर ट्यूनिंग सेवा को ऐसी वैल्यू का पता लगाने के लिए कहना है जिनसे मॉडल की पुष्टि करने की सटीकता को ज़्यादा से ज़्यादा किया जा सके, तो मेट्रिक को val_accuracy सूची की आखिरी एंट्री (या NUM_EPOCS - 1) के तौर पर तय करें. इसके बाद, इस मेट्रिक को HyperTune के किसी इंस्टेंस पर पास करें. hyperparameter_metric_tag के लिए, अपनी पसंद की कोई भी स्ट्रिंग चुनी जा सकती है. हालांकि, हाइपरपैरामीटर ट्यूनिंग का काम शुरू करते समय, आपको इस स्ट्रिंग का फिर से इस्तेमाल करना होगा.
6. कोड को कंटेनर में बदलना
अपने कोड को कंटेनर में रखने के लिए, सबसे पहले Dockerfile बनाएं. Dockerfile में, इमेज को चलाने के लिए ज़रूरी सभी कमांड शामिल करें. इससे सभी ज़रूरी लाइब्रेरी इंस्टॉल हो जाएंगी और ट्रेनिंग कोड के लिए एंट्री पॉइंट सेट अप हो जाएगा.
पहला चरण: Dockerfile लिखना
अपने टर्मिनल में, पक्का करें कि आप vertex-codelab डायरेक्ट्री में हों. इसके बाद, एक खाली Dockerfile बनाएं:
touch Dockerfile
अब आपकी vertex-codelab डायरेक्ट्री में ये फ़ाइलें होनी चाहिए:
+ Dockerfile
+ trainer/
+ task.py
Dockerfile खोलें और इसमें यह कोड कॉपी करें:
FROM gcr.io/deeplearning-platform-release/tf2-gpu.2-7
WORKDIR /
# Installs hypertune library
RUN pip install cloudml-hypertune
# Copies the trainer code to the docker image.
COPY trainer /trainer
# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "-m", "trainer.task"]
इस Dockerfile में, Deep Learning Container TensorFlow Enterprise 2.7 GPU Docker इमेज का इस्तेमाल किया गया है. Google Cloud पर मौजूद डीप लर्निंग कंटेनर में, एमएल और डेटा साइंस के कई सामान्य फ़्रेमवर्क पहले से इंस्टॉल होते हैं. उस इमेज को डाउनलोड करने के बाद, यह Dockerfile ट्रेनिंग कोड के लिए एंट्रीपॉइंट सेट अप करता है.
दूसरा चरण: कंटेनर बनाना
अपने टर्मिनल से, अपने प्रोजेक्ट के लिए एनवायरमेंट वैरिएबल तय करने के लिए, यहां दिया गया कमांड चलाएं. साथ ही, यह पक्का करें कि आपने your-cloud-project की जगह अपने प्रोजेक्ट का आईडी डाला हो:
PROJECT_ID='your-cloud-project'
Google Container Registry में, अपने कंटेनर इमेज के यूआरआई के साथ एक वैरिएबल तय करें:
IMAGE_URI="gcr.io/$PROJECT_ID/horse-human-codelab:latest"
Docker को कॉन्फ़िगर करना
gcloud auth configure-docker
इसके बाद, vertex-codelab डायरेक्ट्री के रूट से यह कमांड चलाकर कंटेनर बनाएं:
docker build ./ -t $IMAGE_URI
आखिर में, इसे Google Container Registry पर पुश करें:
docker push $IMAGE_URI
तीसरा चरण: Cloud Storage बकेट बनाना
ट्रेनिंग जॉब में, हम स्टेजिंग बकेट का पाथ पास करेंगे.
अपने प्रोजेक्ट में नया बकेट बनाने के लिए, टर्मिनल में यह कमांड चलाएं.
BUCKET_NAME="gs://${PROJECT_ID}-hptune-bucket"
gsutil mb -l us-central1 $BUCKET_NAME
7. हाइपरपैरामीटर ट्यूनिंग का काम लॉन्च करना
पहला चरण: हाइपरपैरामीटर ट्यूनिंग की सुविधा के साथ कस्टम ट्रेनिंग जॉब बनाना
लॉन्चर से, TensorFlow 2 की नई नोटबुक खोलें.

Vertex AI Python SDK इंपोर्ट करें.
from google.cloud import aiplatform
from google.cloud.aiplatform import hyperparameter_tuning as hpt
हाइपरपैरामीटर ट्यूनिंग जॉब लॉन्च करने के लिए, आपको सबसे पहले worker_pool_specs तय करना होगा. इससे मशीन टाइप और Docker इमेज के बारे में पता चलता है. यहां दिए गए स्पेसिफ़िकेशन में, दो NVIDIA Tesla V100 जीपीयू वाली एक मशीन के बारे में बताया गया है.
आपको image_uri में मौजूद {PROJECT_ID} को अपने प्रोजेक्ट से बदलना होगा.
# The spec of the worker pools including machine type and Docker image
# Be sure to replace PROJECT_ID in the "image_uri" with your project.
worker_pool_specs = [{
"machine_spec": {
"machine_type": "n1-standard-4",
"accelerator_type": "NVIDIA_TESLA_V100",
"accelerator_count": 2
},
"replica_count": 1,
"container_spec": {
"image_uri": "gcr.io/{PROJECT_ID}/horse-human-codelab:latest"
}
}]
इसके बाद, parameter_spec तय करें. यह एक डिक्शनरी है, जिसमें उन पैरामीटर की जानकारी दी जाती है जिन्हें आपको ऑप्टिमाइज़ करना है. डिक्शनरी की, हर हाइपरपैरामीटर के लिए कमांड लाइन आर्ग्युमेंट को असाइन की गई स्ट्रिंग होती है. वहीं, डिक्शनरी वैल्यू, पैरामीटर स्पेसिफ़िकेशन होती है.
आपको हर हाइपरपैरामीटर के लिए, टाइप के साथ-साथ उन वैल्यू की सीमाएं भी तय करनी होंगी जिन्हें ट्यूनिंग सेवा आज़माएगी. हाइपरपैरामीटर, Double, Integer, Categorical या Discrete टाइप के हो सकते हैं. डबल या पूर्णांक टाइप चुनने पर, आपको कम से कम और ज़्यादा से ज़्यादा वैल्यू देनी होगी. अगर आपने कैटगरी के हिसाब से या अलग-अलग वैल्यू चुनी हैं, तो आपको वैल्यू देनी होंगी. डबल और पूर्णांक टाइप के लिए, आपको स्केलिंग वैल्यू भी देनी होगी. सबसे सही स्केल चुनने के बारे में ज़्यादा जानने के लिए, यह वीडियो देखें.
# Dictionary representing parameters to optimize.
# The dictionary key is the parameter_id, which is passed into your training
# job as a command line argument,
# And the dictionary value is the parameter specification of the metric.
parameter_spec = {
"learning_rate": hpt.DoubleParameterSpec(min=0.001, max=1, scale="log"),
"momentum": hpt.DoubleParameterSpec(min=0, max=1, scale="linear"),
"num_units": hpt.DiscreteParameterSpec(values=[64, 128, 512], scale=None)
}
इसके बाद, metric_spec को तय करना होता है. यह एक डिक्शनरी है, जो ऑप्टिमाइज़ की जाने वाली मेट्रिक को दिखाती है. डिक्शनरी की, hyperparameter_metric_tag होती है. इसे ट्रेनिंग ऐप्लिकेशन कोड में सेट किया जाता है. वैल्यू, ऑप्टिमाइज़ेशन का लक्ष्य होती है.
# Dicionary representing metrics to optimize.
# The dictionary key is the metric_id, which is reported by your training job,
# And the dictionary value is the optimization goal of the metric.
metric_spec={'accuracy':'maximize'}
स्पेसिफ़िकेशन तय हो जाने के बाद, आपको CustomJob बनाना होगा. यह एक सामान्य स्पेसिफ़िकेशन है. इसका इस्तेमाल, हाइपरपैरामीटर ट्यूनिंग के हर ट्रायल पर आपके काम को चलाने के लिए किया जाएगा.
आपको {YOUR_BUCKET} को उस बकेट से बदलना होगा जिसे आपने पहले बनाया था.
# Replace YOUR_BUCKET
my_custom_job = aiplatform.CustomJob(display_name='horses-humans',
worker_pool_specs=worker_pool_specs,
staging_bucket='gs://{YOUR_BUCKET}')
इसके बाद, HyperparameterTuningJob बनाएं और उसे चलाएं.
hp_job = aiplatform.HyperparameterTuningJob(
display_name='horses-humans',
custom_job=my_custom_job,
metric_spec=metric_spec,
parameter_spec=parameter_spec,
max_trial_count=6,
parallel_trial_count=2,
search_algorithm=None)
hp_job.run()
इन बातों का ध्यान रखें:
- max_trial_count: आपको यह तय करना होगा कि सेवा कितने ट्रायल चलाएगी. आम तौर पर, ज़्यादा ट्रायल करने से बेहतर नतीजे मिलते हैं. हालांकि, एक समय के बाद ट्रायल करने से कोई फ़ायदा नहीं होता. इसके बाद, अतिरिक्त ट्रायल का उस मेट्रिक पर कोई असर नहीं पड़ता जिसे ऑप्टिमाइज़ करने की कोशिश की जा रही है. सबसे सही तरीका यह है कि कम संख्या में ट्रायल शुरू किए जाएं. इससे आपको यह पता चल जाएगा कि चुने गए हाइपरपैरामीटर कितने असरदार हैं. इसके बाद, ट्रायल की संख्या बढ़ाई जा सकती है.
- parallel_trial_count: पैरलल ट्रायल का इस्तेमाल करने पर, सेवा कई ट्रेनिंग प्रोसेसिंग क्लस्टर उपलब्ध कराती है. पैरलल ट्रायल की संख्या बढ़ाने से, हाइपरपैरामीटर ट्यूनिंग जॉब को पूरा होने में कम समय लगता है. हालांकि, इससे जॉब की कुल परफ़ॉर्मेंस कम हो सकती है. ऐसा इसलिए होता है, क्योंकि डिफ़ॉल्ट ट्यूनिंग की रणनीति में, पिछले ट्रायल के नतीजों का इस्तेमाल किया जाता है. इससे आने वाले ट्रायल में वैल्यू असाइन करने के बारे में जानकारी मिलती है.
- search_algorithm: खोज के एल्गोरिदम को ग्रिड, रैंडम या डिफ़ॉल्ट (कोई नहीं) पर सेट किया जा सकता है. डिफ़ॉल्ट विकल्प, हाइपरपैरामीटर की संभावित वैल्यू के स्पेस को खोजने के लिए बेज़ियन ऑप्टिमाइज़ेशन लागू करता है. साथ ही, यह सुझाया गया एल्गोरिदम है. इस एल्गोरिदम के बारे में ज़्यादा जानने के लिए, यहां जाएं.
टास्क शुरू होने के बाद, हाइपरपैरामीटर ट्यूनिंग के टास्क टैब में जाकर, यूज़र इंटरफ़ेस (यूआई) में टास्क का स्टेटस ट्रैक किया जा सकता है.

टास्क पूरा होने के बाद, अपने ट्रायल के नतीजे देखे जा सकते हैं और उन्हें क्रम से लगाया जा सकता है. इससे, हाइपरपैरामीटर वैल्यू का सबसे अच्छा कॉम्बिनेशन खोजा जा सकता है.

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

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