1. खास जानकारी
इस लैब में, आपको TensorFlow के मॉडल के लिए, मल्टी-वर्कर ट्रेनिंग जॉब चलाने के लिए Vertex AI का इस्तेमाल करना होगा.
आपको ये सब सीखने को मिलेगा
आपको, इनके बारे में जानकारी मिलेगी:
- कई कर्मचारियों वाली ट्रेनिंग के लिए, ट्रेनिंग ऐप्लिकेशन कोड में बदलाव करें
- Vertex AI यूज़र इंटरफ़ेस (यूआई) की मदद से, मल्टी-वर्कर ट्रेनिंग जॉब को कॉन्फ़िगर और लॉन्च करें
- Vertex SDK टूल की मदद से, मल्टी-वर्कर ट्रेनिंग जॉब को कॉन्फ़िगर और लॉन्च करें
Google Cloud पर इस लैब को चलाने की कुल लागत करीब $5 है.
2. Vertex AI के बारे में जानकारी
यह लैब, Google Cloud पर उपलब्ध एआई (AI) प्रॉडक्ट के सबसे नए वर्शन का इस्तेमाल करती है. Vertex AI, Google Cloud के सभी मशीन लर्निंग प्लैटफ़ॉर्म को आसानी से डेवलप करने के लिए इंटिग्रेट करता है. पहले, AutoML और कस्टम मॉडल की मदद से ट्रेन किए गए मॉडल अलग-अलग सेवाओं से ऐक्सेस किए जा सकते थे. नई सेवा में, एक एपीआई से नए प्रॉडक्ट और इन दोनों का इस्तेमाल किया जा सकता है. आपके पास मौजूदा प्रोजेक्ट को Vertex AI पर माइग्रेट करने का विकल्प भी है. अगर आपकी कोई शिकायत है, तो कृपया सहायता पेज पर जाएं.
Vertex AI में कई तरह के प्रॉडक्ट शामिल हैं, जो मशीन लर्निंग के वर्कफ़्लो को मैनेज करने में मदद करते हैं. यह लैब, यहां हाइलाइट किए गए प्रॉडक्ट पर फ़ोकस करेगी: ट्रेनिंग और वर्कबेंच
3. इस्तेमाल के उदाहरण की खास जानकारी
इस लैब में, TensorFlow डेटासेट से कैसावा के डेटासेट पर इमेज क्लासिफ़िकेशन मॉडल को ट्रेनिंग देने के लिए, ट्रांसफ़र लर्निंग का इस्तेमाल किया जाएगा. आपको जिस आर्किटेक्चर का इस्तेमाल करना है वह ResNet50 मॉडल है. इसे tf.keras.applications
लाइब्रेरी से लिया गया है, जिसे Imagenet डेटासेट पर पहले से ट्रेन किया गया है.
डिस्ट्रिब्यूटेड ट्रेनिंग क्यों?
अगर आपके पास एक ही जीपीयू है, तो TensorFlow, इस ऐक्सेलरेटर का इस्तेमाल करके मॉडल ट्रेनिंग की रफ़्तार को तेज़ करेगा. इसके लिए आपको अलग से कुछ नहीं करना होगा. हालांकि, अगर आपको एक या कई मशीनों (हर एक के लिए एक से ज़्यादा जीपीयू हो) पर कई जीपीयू इस्तेमाल करने की वजह से और ज़्यादा फ़ायदा चाहिए, तो आपको tf.distribute
का इस्तेमाल करना होगा. यह, कई डिवाइस पर कंप्यूटेशन (गिनती) करने के लिए, TensorFlow की लाइब्रेरी है. डिवाइस का मतलब सीपीयू या ऐक्सेलरेटर (जैसे कि जीपीयू या TPU) से कुछ ऐसी मशीन पर होता है जिस पर TensorFlow काम कर सकता है.
डिस्ट्रिब्यूटेड ट्रेनिंग शुरू करने का सबसे आसान तरीका, एक ऐसी मशीन है जिसमें कई जीपीयू डिवाइस होते हैं. tf.distribute
मॉड्यूल से ली गई TensorFlow की डिस्ट्रिब्यूशन रणनीति की मदद से, सभी जीपीयू में डेटा डिस्ट्रिब्यूशन और ग्रेडिएंट अपडेट को मैनेज किया जा सकेगा. अगर आपने एक होस्ट वाली ट्रेनिंग में महारत हासिल कर ली है और आपको अपना दायरा बढ़ाना है, तो अपने क्लस्टर में कई मशीनें जोड़ने से आपकी परफ़ॉर्मेंस बेहतर हो सकती है. ऐसी मशीनों के क्लस्टर का इस्तेमाल किया जा सकता है जो सिर्फ़ सीपीयू की सुविधा देते हों या हर एक में एक या एक से ज़्यादा जीपीयू हों. इस लैब में, बाद के मामले को कवर किया गया है. साथ ही, यह बताया गया है कि Vertex AI की मदद से, कई मशीनों पर TensorFlow मॉडल की ट्रेनिंग देने के लिए, MultiWorkerMirroredStrategy
का इस्तेमाल कैसे किया जाए.
MultiWorkerMirroredStrategy
एक सिंक्रोनस डेटा समानता रणनीति है, जिसका इस्तेमाल आप सिर्फ़ कुछ कोड बदलावों के साथ कर सकते हैं. आपके क्लस्टर में मौजूद हर डिवाइस के लिए, इस मॉडल की एक कॉपी बनाई जाती है. बाद के ग्रेडिएंट अपडेट सिंक्रोनस तरीके से होंगे. इसका मतलब है कि हर वर्कर डिवाइस, इनपुट डेटा के अलग-अलग स्लाइस के आधार पर, मॉडल से आगे और पीछे वाले पास की गणना करता है. इसके बाद, इनमें से हर स्लाइस से कंप्यूट किए गए ग्रेडिएंट को एक मशीन और क्लस्टर की सभी मशीनों में एग्रीगेट किया जाता है और ऑल-रिड्यूस यानी ऑल-रिड्यूस नाम की प्रोसेस में कम (आम तौर पर औसत) किया जाता है. इसके बाद, ऑप्टिमाइज़र इन कम ग्रेडिएंट के साथ पैरामीटर को अपडेट करता है, जिससे डिवाइस सिंक में रहते हैं. TensorFlow के साथ उपलब्ध कराई गई ट्रेनिंग के बारे में ज़्यादा जानने के लिए, यहां दिया गया वीडियो देखें:
4. अपना एनवायरमेंट सेट अप करें
इस कोडलैब को चलाने के लिए, आपके पास Google Cloud Platform का ऐसा प्रोजेक्ट होना चाहिए जिसमें बिलिंग की सुविधा चालू हो. प्रोजेक्ट बनाने के लिए, यहां दिए गए निर्देशों का पालन करें.
पहला चरण: Compute Engine API चालू करना
Compute Engine पर जाएं और अगर यह पहले से चालू नहीं है, तो चालू करें को चुनें. आपको अपना notebook इंस्टेंस बनाने के लिए इसकी ज़रूरत होगी.
दूसरा चरण: Container Registry API को चालू करना
कंटेनर रजिस्ट्री पर जाएं और अगर पहले से ऐसा नहीं हुआ है, तो चालू करें को चुनें. अपनी पसंद के मुताबिक ट्रेनिंग जॉब के लिए कंटेनर बनाने में इसका इस्तेमाल किया जा सकता है.
तीसरा चरण: Vertex AI API को चालू करना
अपने Cloud Console के Vertex AI सेक्शन पर जाएं और Vertex AI API को चालू करें पर क्लिक करें.
चौथा चरण: Vertex AI Workbench इंस्टेंस बनाना
अपने Cloud Console के Vertex AI सेक्शन में जाकर, Workbench पर क्लिक करें:
अगर Notebooks API पहले से चालू नहीं है, तो उसे चालू करें.
इसके बाद, मैनेज की गई किताबें पर क्लिक करें:
इसके बाद, नई नोटबुक चुनें.
अपनी नोटबुक को कोई नाम दें और फिर बेहतर सेटिंग पर क्लिक करें.
'बेहतर सेटिंग' में जाकर, डिवाइस को कुछ समय तक इस्तेमाल न करने पर, उसे बंद करने की सुविधा चालू करें और फिर उसे 60 मिनट पर सेट करें. इसका मतलब है कि इस्तेमाल न किए जाने पर, आपकी notebook अपने-आप बंद हो जाएगी. इससे आपको बेवजह खर्च नहीं करना पड़ेगा.
सुरक्षा में जाकर, "टर्मिनल चालू करें" चुनें अगर यह पहले से चालू नहीं है.
अन्य सभी बेहतर सेटिंग को वैसे ही रहने दिया जा सकता है.
इसके बाद, बनाएं पर क्लिक करें. इस इंस्टेंस को सेट अप होने में कुछ मिनट लगेंगे.
इंस्टेंस बनाने के बाद, JupyterLab खोलें को चुनें.
पहली बार किसी नए इंस्टेंस का इस्तेमाल करने पर, आपसे पुष्टि करने के लिए कहा जाएगा. ऐसा करने के लिए, यूज़र इंटरफ़ेस (यूआई) में दिया गया तरीका अपनाएं.
5. ट्रेनिंग ऐप्लिकेशन कोड को कंटेनर में बदलें
आपको इस ट्रेनिंग जॉब को Vertex में सबमिट करने के लिए, Docker कंटेनर में अपना ट्रेनिंग ऐप्लिकेशन कोड डालना होगा. इसके बाद, इस कंटेनर को Google Container Registry में भेजना होगा. इस तरीके का इस्तेमाल करके, किसी भी फ़्रेमवर्क के साथ बनाए गए मॉडल को ट्रेनिंग दी जा सकती है.
शुरू करने के लिए, लॉन्चर मेन्यू में जाकर, अपने notebook के इंस्टेंस में टर्मिनल विंडो खोलें:
cassava
नाम की एक नई डायरेक्ट्री बनाएं और उसमें सीडी लें:
mkdir cassava
cd cassava
पहला चरण: Dockerfile बनाएं
अपने कोड को कंटेनर बनाने के लिए सबसे पहले, Dockerfile बनाएं. Dockerfile में, आप इमेज को चलाने के लिए ज़रूरी सभी कमांड शामिल करेंगे. यह सभी ज़रूरी लाइब्रेरी को इंस्टॉल करेगा और ट्रेनिंग कोड के लिए एंट्री पॉइंट सेट अप करेगा.
अपने Terminal से, एक खाली Dockerfile बनाएं:
touch Dockerfile
Dockerfile खोलें और इसमें यहां दी गई जानकारी कॉपी करें:
FROM gcr.io/deeplearning-platform-release/tf2-gpu.2-7
WORKDIR /
# 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, डीप लर्निंग कंटेनर TensorFlow Enterprise 2.7 जीपीयू Docker इमेज का इस्तेमाल करता है. Google Cloud पर डीप लर्निंग कंटेनर में, कई सामान्य एमएल और डेटा साइंस फ़्रेमवर्क पहले से इंस्टॉल होते हैं. इमेज को डाउनलोड करने के बाद, Dockerfile ट्रेनिंग कोड के लिए एंट्रीपॉइंट सेट अप करता है. आपने अभी तक ये फ़ाइलें नहीं बनाई हैं – अगले चरण में, आपको मॉडल की ट्रेनिंग और इसे ट्यून करने के लिए कोड जोड़ना होगा.
दूसरा चरण: Cloud Storage बकेट बनाना
इस ट्रेनिंग जॉब में, आपको ट्रेन किए गए TensorFlow के मॉडल को Cloud Storage बकेट में एक्सपोर्ट करना होगा. अपने प्रोजेक्ट के लिए env वैरिएबल तय करने के लिए, अपने Terminal से, इसे चलाएं और your-cloud-project
को अपने प्रोजेक्ट के आईडी से बदलना न भूलें:
PROJECT_ID='your-cloud-project'
इसके बाद, अपने प्रोजेक्ट में नया बकेट बनाने के लिए, इसे अपने Terminal में चलाएं.
BUCKET="gs://${PROJECT_ID}-bucket"
gsutil mb -l us-central1 $BUCKET
तीसरा चरण: मॉडल ट्रेनिंग कोड जोड़ना
अपने Terminal से, ट्रेनिंग कोड और Python फ़ाइल की डायरेक्ट्री बनाने के लिए इन कोड को चलाएं, जिनमें कोड जोड़ना है:
mkdir trainer
touch trainer/task.py
अब आपकी cassava/
डायरेक्ट्री में यह जानकारी होनी चाहिए:
+ Dockerfile
+ trainer/
+ task.py
इसके बाद, अभी-अभी बनाई गई task.py
फ़ाइल खोलें और नीचे दिए गए कोड को कॉपी करें. आपको {your-gcs-bucket}
को उस Cloud Storage बकेट के नाम से बदलना होगा जिसे आपने अभी-अभी बनाया है.
import tensorflow as tf
import tensorflow_datasets as tfds
import os
PER_REPLICA_BATCH_SIZE = 64
EPOCHS = 2
# TODO: replace {your-gcs-bucket} with the name of the Storage bucket you created earlier
BUCKET = 'gs://{your-gcs-bucket}/mwms'
def preprocess_data(image, label):
'''Resizes and scales images.'''
image = tf.image.resize(image, (300,300))
return tf.cast(image, tf.float32) / 255., label
def create_dataset(batch_size):
'''Loads Cassava dataset and preprocesses data.'''
data, info = tfds.load(name='cassava', as_supervised=True, with_info=True)
number_of_classes = info.features['label'].num_classes
train_data = data['train'].map(preprocess_data,
num_parallel_calls=tf.data.experimental.AUTOTUNE)
train_data = train_data.shuffle(1000)
train_data = train_data.batch(batch_size)
train_data = train_data.prefetch(tf.data.experimental.AUTOTUNE)
# Set AutoShardPolicy
options = tf.data.Options()
options.experimental_distribute.auto_shard_policy = tf.data.experimental.AutoShardPolicy.DATA
train_data = train_data.with_options(options)
return train_data, number_of_classes
def create_model(number_of_classes):
'''Creates and compiles pretrained ResNet50 model.'''
base_model = tf.keras.applications.ResNet50(weights='imagenet', include_top=False)
x = base_model.output
x = tf.keras.layers.GlobalAveragePooling2D()(x)
x = tf.keras.layers.Dense(1016, activation='relu')(x)
predictions = tf.keras.layers.Dense(number_of_classes, activation='softmax')(x)
model = tf.keras.Model(inputs=base_model.input, outputs=predictions)
model.compile(
loss='sparse_categorical_crossentropy',
optimizer=tf.keras.optimizers.Adam(0.0001),
metrics=['accuracy'])
return model
def _is_chief(task_type, task_id):
'''Helper function. Determines if machine is chief.'''
return task_type == 'chief'
def _get_temp_dir(dirpath, task_id):
'''Helper function. Gets temporary directory for saving model.'''
base_dirpath = 'workertemp_' + str(task_id)
temp_dir = os.path.join(dirpath, base_dirpath)
tf.io.gfile.makedirs(temp_dir)
return temp_dir
def write_filepath(filepath, task_type, task_id):
'''Helper function. Gets filepath to save model.'''
dirpath = os.path.dirname(filepath)
base = os.path.basename(filepath)
if not _is_chief(task_type, task_id):
dirpath = _get_temp_dir(dirpath, task_id)
return os.path.join(dirpath, base)
def main():
# Create strategy
strategy = tf.distribute.MultiWorkerMirroredStrategy()
# Get data
global_batch_size = PER_REPLICA_BATCH_SIZE * strategy.num_replicas_in_sync
train_data, number_of_classes = create_dataset(global_batch_size)
# Wrap variable creation within strategy scope
with strategy.scope():
model = create_model(number_of_classes)
model.fit(train_data, epochs=EPOCHS)
# Determine type and task of the machine from
# the strategy cluster resolver
task_type, task_id = (strategy.cluster_resolver.task_type,
strategy.cluster_resolver.task_id)
# Based on the type and task, write to the desired model path
write_model_path = write_filepath(BUCKET, task_type, task_id)
model.save(write_model_path)
if __name__ == "__main__":
main()
कंटेनर बनाने से पहले, आइए कोड के बारे में ज़्यादा जानें. यह कोड, tf.distribute.Strategy
एपीआई के MultiWorkerMirroredStrategy
का इस्तेमाल करता है.
कोड में कुछ कॉम्पोनेंट होते हैं, जो आपके कोड को MultiWorkerMirroredStrategy
के साथ काम करने के लिए ज़रूरी होते हैं.
- डेटा को शार्ड किया जाना चाहिए. इसका मतलब है कि हर वर्कर को पूरे डेटासेट का एक सबसेट असाइन किया गया है. इसलिए, हर चरण में हर वर्कर, ओवरलैप न होने वाले डेटासेट एलिमेंट का ग्लोबल बैच साइज़ प्रोसेस करेगा. यह शार्डिंग
tf.data.experimental.AutoShardPolicy
के साथ अपने आप होती है, जिसेFILE
याDATA
पर सेट किया जा सकता है. इस उदाहरण में,create_dataset()
फ़ंक्शनAutoShardPolicy
कोDATA
पर सेट करता है, क्योंकि कसावा के डेटासेट को एक से ज़्यादा फ़ाइलों के तौर पर डाउनलोड नहीं किया गया है. हालांकि, अगर आपने इस नीति कोDATA
पर सेट नहीं किया है, तो डिफ़ॉल्टAUTO
नीति लागू होगी और नतीजा भी वही होगा.MultiWorkerMirroredStrategy
की मदद से डेटासेट शेयर करने के बारे में ज़्यादा जानें. main()
फ़ंक्शन में,MultiWorkerMirroredStrategy
ऑब्जेक्ट बनाया जाता है. इसके बाद, मॉडल वैरिएबल बनाने की सुविधा को रणनीति के स्कोप में शामिल करें. इस अहम चरण से TensorFlow का पता चलता है कि सभी प्रतियों में कौनसे वैरिएबल डुप्लीकेट होने चाहिए.- बैच का साइज़,
num_replicas_in_sync
के हिसाब से बढ़ाया गया है. इससे यह पक्का होता है कि हर चरण में हर एक प्रतिकृति, उदाहरणों की एक जैसी संख्या प्रोसेस करती है. TensorFlow में सिंक्रोनस डेटा पैरलिज़्म रणनीतियों का इस्तेमाल करते समय बैच साइज़ को स्केल करना सबसे सही तरीका है. - बहु-कर्मचारी मामले में अपने मॉडल को सहेजना कुछ अधिक जटिल है क्योंकि प्रत्येक कर्मियों के लिए गंतव्य भिन्न होना चाहिए. मुख्य वर्कर को अपनी पसंद की मॉडल डायरेक्ट्री में सेव करना होगा, जबकि दूसरे वर्कर मॉडल को अस्थायी डायरेक्ट्री में सेव करेंगे. यह ज़रूरी है कि ये अस्थायी डायरेक्ट्री यूनीक हों, ताकि कई काम करने वाले लोग एक ही जगह पर न लिखें. बचत करने के लिए सामूहिक कार्रवाइयां भी की जा सकती हैं. इसका मतलब है कि सिर्फ़ अधिकारी को ही नहीं, बल्कि सभी कर्मचारियों को भी बचाना होगा.
_is_chief()
,_get_temp_dir()
,write_filepath()
, औरmain()
फ़ंक्शन में बॉयलरप्लेट कोड शामिल होता है, जो मॉडल को सेव करने में मदद करता है.
ध्यान दें कि अगर आपने MultiWorkerMirroredStrategy
का इस्तेमाल किसी दूसरे एनवायरमेंट में किया है, तो हो सकता है कि आपने TF_CONFIG
एनवायरमेंट वैरिएबल सेट अप किया हो. Vertex AI आपके लिए TF_CONFIG
को अपने-आप सेट कर देता है. इसलिए, आपको अपने क्लस्टर की हर मशीन पर, इस वैरिएबल को तय करने की ज़रूरत नहीं है.
चौथा चरण: कंटेनर बनाना
अपने प्रोजेक्ट के लिए env वैरिएबल तय करने के लिए, अपने Terminal से, इसे चलाएं और your-cloud-project
को अपने प्रोजेक्ट के आईडी से बदलना न भूलें:
PROJECT_ID='your-cloud-project'
Google Container Registry में, अपनी कंटेनर इमेज के यूआरआई के साथ वैरिएबल तय करें:
IMAGE_URI="gcr.io/$PROJECT_ID/multiworker:cassava"
डॉकर कॉन्फ़िगर करें
gcloud auth configure-docker
इसके बाद, अपनी cassava
डायरेक्ट्री के रूट से नीचे दिए गए निर्देशों को चलाकर कंटेनर बनाएं:
docker build ./ -t $IMAGE_URI
आखिर में, इसे Google कंटेनर रजिस्ट्री में भेजें:
docker push $IMAGE_URI
कंटेनर रजिस्ट्री में भेजे गए कंटेनर के साथ, अब आप ट्रेनिंग का काम शुरू करने के लिए तैयार हैं.
6. Vertex AI में मल्टीवर्कर ट्रेनिंग का काम करें
यह लैब, Google Container Registry पर मौजूद कस्टम कंटेनर के ज़रिए कस्टम ट्रेनिंग का इस्तेमाल करती है. हालांकि, पहले से बने कंटेनर की मदद से भी ट्रेनिंग दी जा सकती है.
शुरू करने के लिए, अपने Cloud Console के Vertex सेक्शन में, ट्रेनिंग सेक्शन पर जाएं:
पहला चरण: ट्रेनिंग जॉब कॉन्फ़िगर करना
अपने ट्रेनिंग जॉब के पैरामीटर डालने के लिए, बनाएं पर क्लिक करें.
- डेटासेट में जाकर, मैनेज किया जा रहा कोई डेटासेट नहीं है चुनें
- इसके बाद, ट्रेनिंग के तरीके के तौर पर कस्टम ट्रेनिंग (ऐडवांस) चुनें और जारी रखें पर क्लिक करें.
- मॉडल का नाम के लिए
multiworker-cassava
(या जिसे भी आप अपने मॉडल को पुकारना चाहते हैं) डालें - जारी रखें पर क्लिक करें
कंटेनर सेटिंग चरण में, कस्टम कंटेनर चुनें:
पहले बॉक्स (कंटेनर इमेज) में, पिछले सेक्शन से अपने IMAGE_URI
वैरिएबल की वैल्यू डालें. यह आपके प्रोजेक्ट आईडी के साथ gcr.io/your-cloud-project/multiworker:cassava
होना चाहिए. बाकी फ़ील्ड को खाली छोड़ दें और जारी रखें पर क्लिक करें.
जारी रखें पर दोबारा क्लिक करके, Hhyperपैरामीटर चरण को छोड़ें.
दूसरा चरण: कंप्यूट क्लस्टर को कॉन्फ़िगर करें
Vertex AI में अलग-अलग तरह के मशीन से होने वाले टास्क को पूरा करने के लिए, चार वर्कर पूल उपलब्ध हैं.
वर्कर पूल 0, प्राइमरी, चीफ़, शेड्यूलर या "मास्टर" को कॉन्फ़िगर करता है. MultiWorkerMirroredStrategy
में, सभी मशीनों को वर्कर के तौर पर दर्ज किया जाता है. ये ऐसी फ़िज़िकल मशीन होती हैं जिन पर डुप्लीकेट कंप्यूटेशन इस्तेमाल किया जाता है. हर मशीन के काम करने के अलावा, एक कर्मचारी की ज़रूरत होती है, जो कुछ और काम भी करे. जैसे, चेकपॉइंट सेव करना और TensorBoard में खास जानकारी वाली फ़ाइलें लिखना. इस मशीन को चीफ़ के नाम से जाना जाता है. यहां सिर्फ़ एक चीफ़ वर्कर होता है. इसलिए, वर्कर पूल 0 के लिए आपके वर्कर की संख्या हमेशा 1 होगी.
कंप्यूट और कीमत में, चुने गए क्षेत्र को वैसे ही रहने दें और वर्कर पूल 0 को इस तरह से कॉन्फ़िगर करें:
वर्कर पूल 1 में, अपने क्लस्टर के लिए वर्कर को कॉन्फ़िगर किया जाता है.
वर्कर पूल 1 को इस तरह कॉन्फ़िगर करें:
क्लस्टर को अब सिर्फ़ दो सीपीयू वाली मशीनों के लिए कॉन्फ़िगर किया गया है. ट्रेनिंग ऐप्लिकेशन कोड चलने पर, MultiWorkerMirroredStrategy
दोनों मशीनों पर ट्रेनिंग देगा.
MultiWorkerMirroredStrategy
में सिर्फ़ मुख्य और कर्मचारी वाले टास्क टाइप होते हैं. इसलिए, अतिरिक्त वर्कर पूल को कॉन्फ़िगर करने की ज़रूरत नहीं होती. हालांकि, अगर TensorFlow के ParameterServerStrategy
का इस्तेमाल किया जाता, तो आपको वर्कर पूल 2 में अपने पैरामीटर सर्वर कॉन्फ़िगर करने होते. अगर आपको अपने क्लस्टर में कोई समीक्षक जोड़ना है, तो आपको उस मशीन को वर्कर पूल 3 में कॉन्फ़िगर करना होगा.
हाइपर पैरामीटर ट्यूनिंग जॉब को शुरू करने के लिए, ट्रेनिंग शुरू करें पर क्लिक करें. आपको अपने कंसोल के ट्रेनिंग सेक्शन में, ट्रेनिंग पाइपलाइन टैब के नीचे, लॉन्च की गई नई नौकरी दिखेगी:
🎉 बधाई हो! 🎉
आपने Vertex AI को इस्तेमाल करने का तरीका जान लिया है, ताकि:
- कस्टम कंटेनर में दिए गए ट्रेनिंग कोड के लिए, मल्टी-वर्कर ट्रेनिंग जॉब लॉन्च करना. आपने इस उदाहरण में TensorFlow मॉडल का इस्तेमाल किया है, लेकिन आप कस्टम या बिल्ट-इन कंटेनर का इस्तेमाल करके किसी भी फ़्रेमवर्क के साथ बनाए गए मॉडल को ट्रेनिंग दे सकते हैं.
Vertex के अलग-अलग हिस्सों के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
7. [ज़रूरी नहीं] Vertex SDK टूल का इस्तेमाल करना
पिछले सेक्शन में, यूज़र इंटरफ़ेस (यूआई) के ज़रिए ट्रेनिंग जॉब को लॉन्च करने का तरीका दिखाया गया था. इस सेक्शन में, Vertex Python API का इस्तेमाल करके, ट्रेनिंग जॉब सबमिट करने का एक अन्य तरीका बताया गया है.
अपने notebook के इंस्टेंस पर वापस जाएं और लॉन्चर से TensorFlow 2 नोटबुक बनाएं:
Vertex AI SDK टूल इंपोर्ट करें.
from google.cloud import aiplatform
मल्टी-वर्कर ट्रेनिंग जॉब को लॉन्च करने के लिए, आपको सबसे पहले वर्कर पूल की स्पेसिफ़िकेशन तय करनी होगी. ध्यान दें कि खास जानकारी में जीपीयू का इस्तेमाल करना ज़रूरी नहीं है. अगर आपको पिछले सेक्शन में दिखाया गया है, तो सिर्फ़ सीपीयू वाला क्लस्टर करवाने के लिए, accelerator_type
और accelerator_count
को हटाया जा सकता है.
# The spec of the worker pools including machine type and Docker image
# Be sure to replace {YOUR-PROJECT-ID} with your project ID.
worker_pool_specs=[
{
"replica_count": 1,
"machine_spec": {
"machine_type": "n1-standard-8", "accelerator_type": "NVIDIA_TESLA_V100", "accelerator_count": 1
},
"container_spec": {"image_uri": "gcr.io/{YOUR-PROJECT-ID}/multiworker:cassava"}
},
{
"replica_count": 1,
"machine_spec": {
"machine_type": "n1-standard-8", "accelerator_type": "NVIDIA_TESLA_V100", "accelerator_count": 1
},
"container_spec": {"image_uri": "gcr.io/{YOUR-PROJECT-ID}/multiworker:cassava"}
}
]
इसके बाद, CustomJob
बनाएं और चलाएं. स्टेजिंग के लिए, आपको अपने प्रोजेक्ट में {YOUR_BUCKET}
को बकेट से बदलना होगा. आप उसी बकेट का इस्तेमाल कर सकते हैं जिसे आपने पहले बनाया था.
# Replace YOUR_BUCKET
my_multiworker_job = aiplatform.CustomJob(display_name='multiworker-cassava-sdk',
worker_pool_specs=worker_pool_specs,
staging_bucket='gs://{YOUR_BUCKET}')
my_multiworker_job.run()
पसंद के मुताबिक बनाई गई नौकरियां टैब में, आपके कंसोल के ट्रेनिंग सेक्शन में आपको अपनी ट्रेनिंग की नौकरी दिखेगी:
8. साफ़-सफ़ाई सेवा
हमने notebook को इस तरह से कॉन्फ़िगर किया है कि उसका समय 60 मिनट बाद बंद हो जाए. इसलिए, हमें इंस्टेंस बंद होने की चिंता करने की ज़रूरत नहीं है. अगर आपको मैन्युअल तरीके से इंस्टेंस शट डाउन करना है, तो कंसोल के Vertex AI Workbench सेक्शन में, 'रोकें' बटन पर क्लिक करें. अगर आपको नोटबुक को पूरी तरह से मिटाना है, तो मिटाएं बटन पर क्लिक करें.
अपने Cloud Console में नेविगेशन मेन्यू का इस्तेमाल करके, स्टोरेज बकेट मिटाने के लिए स्टोरेज पर जाएं. इसके बाद, अपनी बकेट चुनें और मिटाएं पर क्लिक करें: