ভার্টেক্স এআই: টেনসরফ্লো সহ মাল্টি-ওয়ার্কার ট্রেনিং এবং ট্রান্সফার লার্নিং

1. ওভারভিউ

এই ল্যাবে, আপনি টেনসরফ্লো মডেলের জন্য বহু-কর্মী প্রশিক্ষণের কাজ চালানোর জন্য Vertex AI ব্যবহার করবেন।

আপনি কি শিখুন

আপনি কিভাবে শিখবেন:

  • বহু-কর্মী প্রশিক্ষণের জন্য প্রশিক্ষণ অ্যাপ্লিকেশন কোড পরিবর্তন করুন
  • Vertex AI UI থেকে একটি বহু-কর্মী প্রশিক্ষণের কাজ কনফিগার করুন এবং চালু করুন
  • Vertex SDK-এর সাথে একটি বহু-কর্মী প্রশিক্ষণের কাজ কনফিগার করুন এবং চালু করুন

Google ক্লাউডে এই ল্যাবটি চালানোর জন্য মোট খরচ প্রায় $5

2. ভার্টেক্স এআই-এর ভূমিকা

এই ল্যাবটি Google ক্লাউডে উপলব্ধ নতুন AI পণ্য অফার ব্যবহার করে। Vertex AI Google ক্লাউড জুড়ে ML অফারগুলিকে একটি নিরবচ্ছিন্ন বিকাশের অভিজ্ঞতায় সংহত করে৷ পূর্বে, অটোএমএল এবং কাস্টম মডেলগুলির সাথে প্রশিক্ষিত মডেলগুলি পৃথক পরিষেবার মাধ্যমে অ্যাক্সেসযোগ্য ছিল। নতুন অফারটি অন্যান্য নতুন পণ্যের সাথে একটি একক API-এ উভয়কে একত্রিত করে। আপনি বিদ্যমান প্রকল্পগুলিকে Vertex AI-তে স্থানান্তর করতে পারেন। আপনার কোন প্রতিক্রিয়া থাকলে, অনুগ্রহ করে সমর্থন পৃষ্ঠাটি দেখুন।

Vertex AI এন্ড-টু-এন্ড ML ওয়ার্কফ্লো সমর্থন করার জন্য বিভিন্ন পণ্য অন্তর্ভুক্ত করে। এই ল্যাবটি নীচে হাইলাইট করা পণ্যগুলিতে ফোকাস করবে: প্রশিক্ষণ এবং ওয়ার্কবেঞ্চ৷

ভার্টেক্স পণ্য ওভারভিউ

3. কেস ওভারভিউ ব্যবহার করুন

এই ল্যাবে আপনি টেনসরফ্লো ডেটাসেট থেকে কাসাভা ডেটাসেটে একটি ইমেজ ক্লাসিফিকেশন মডেল প্রশিক্ষণের জন্য ট্রান্সফার লার্নিং ব্যবহার করবেন। আপনি যে আর্কিটেকচারটি ব্যবহার করবেন তা হল ইমেজনেট ডেটাসেটে পূর্বপ্রশিক্ষিত tf.keras.applications লাইব্রেরির একটি ResNet50 মডেল।

কেন বিতরণ করা প্রশিক্ষণ?

আপনার যদি একটি একক GPU থাকে, TensorFlow এই এক্সিলারেটরটি ব্যবহার করে মডেল প্রশিক্ষণের গতি বাড়ানোর জন্য আপনার পক্ষ থেকে কোনো অতিরিক্ত কাজ ছাড়াই হবে। যাইহোক, যদি আপনি একটি একক মেশিন বা একাধিক মেশিনে একাধিক GPU ব্যবহার করে অতিরিক্ত বুস্ট পেতে চান (প্রতিটি সম্ভাব্য একাধিক GPU সহ), তাহলে আপনাকে tf.distribute ব্যবহার করতে হবে, যা একাধিক জুড়ে একটি গণনা চালানোর জন্য TensorFlow এর লাইব্রেরি। ডিভাইস একটি ডিভাইস একটি CPU বা অ্যাক্সিলারেটরকে বোঝায়, যেমন GPUs বা TPUs, এমন কিছু মেশিনে যা TensorFlow অপারেশন চালাতে পারে।

বিতরণ করা প্রশিক্ষণ দিয়ে শুরু করার সবচেয়ে সহজ উপায় হল একাধিক GPU ডিভাইস সহ একটি একক মেশিন। tf.distribute মডিউল থেকে একটি TensorFlow বিতরণ কৌশল সমস্ত GPU তে ডেটা বিতরণ এবং গ্রেডিয়েন্ট আপডেটের সমন্বয় পরিচালনা করবে। আপনি যদি একক হোস্ট প্রশিক্ষণে দক্ষতা অর্জন করে থাকেন এবং আরও বেশি স্কেল করতে চান, তাহলে আপনার ক্লাস্টারে একাধিক মেশিন যুক্ত করা আপনাকে আরও বেশি কর্মক্ষমতা বৃদ্ধি পেতে সাহায্য করতে পারে। আপনি মেশিনের একটি ক্লাস্টার ব্যবহার করতে পারেন যা শুধুমাত্র CPU, অথবা প্রতিটিতে এক বা একাধিক GPU আছে। এই ল্যাবটি পরবর্তী কেসটি কভার করে এবং দেখায় কিভাবে Vertex AI-তে একাধিক মেশিনে একটি TensorFlow মডেলের প্রশিক্ষণ বিতরণ করতে MultiWorkerMirroredStrategy ব্যবহার করতে হয়।

MultiWorkerMirroredStrategy হল একটি সিঙ্ক্রোনাস ডেটা সমান্তরাল কৌশল যা আপনি শুধুমাত্র কয়েকটি কোড পরিবর্তনের সাথে ব্যবহার করতে পারেন। আপনার ক্লাস্টারের প্রতিটি ডিভাইসে মডেলের একটি অনুলিপি তৈরি করা হয়েছে। পরবর্তী গ্রেডিয়েন্ট আপডেটগুলি সিঙ্ক্রোনাস পদ্ধতিতে ঘটবে। এর মানে হল যে প্রতিটি কর্মী ডিভাইস ইনপুট ডেটার একটি ভিন্ন স্লাইসে মডেলের মধ্য দিয়ে ফরওয়ার্ড এবং পশ্চাদগামী পাস গণনা করে। এই স্লাইসগুলির প্রতিটি থেকে গণনা করা গ্রেডিয়েন্টগুলি তারপরে একটি মেশিনের সমস্ত ডিভাইস এবং ক্লাস্টারের সমস্ত মেশিনে একত্রিত করা হয় এবং অল-রিডুস নামে পরিচিত একটি প্রক্রিয়াতে হ্রাস করা হয় (সাধারণত একটি গড়)। অপ্টিমাইজার তারপর এই হ্রাসকৃত গ্রেডিয়েন্টগুলির সাথে প্যারামিটার আপডেটগুলি সম্পাদন করে যার ফলে ডিভাইসগুলিকে সিঙ্কে রাখা হয়। TensorFlow এর সাথে বিতরণ করা প্রশিক্ষণ সম্পর্কে আরও জানতে, নীচের ভিডিওটি দেখুন:

4. আপনার পরিবেশ সেট আপ করুন

এই কোডল্যাব চালানোর জন্য আপনার একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্পের প্রয়োজন হবে যাতে বিলিং সক্ষম থাকে৷ একটি প্রকল্প তৈরি করতে, এখানে নির্দেশাবলী অনুসরণ করুন।

ধাপ 1: Compute Engine API সক্ষম করুন

কম্পিউট ইঞ্জিনে নেভিগেট করুন এবং সক্ষম নির্বাচন করুন যদি এটি ইতিমধ্যে সক্ষম না থাকে। আপনার নোটবুক উদাহরণ তৈরি করতে আপনার এটির প্রয়োজন হবে৷

ধাপ 2: কন্টেইনার রেজিস্ট্রি API সক্ষম করুন

কন্টেইনার রেজিস্ট্রিতে নেভিগেট করুন এবং সক্ষম নির্বাচন করুন যদি এটি ইতিমধ্যে না থাকে। আপনি আপনার কাস্টম প্রশিক্ষণ কাজের জন্য একটি ধারক তৈরি করতে এটি ব্যবহার করবেন।

ধাপ 3: Vertex AI API সক্ষম করুন

আপনার ক্লাউড কনসোলের Vertex AI বিভাগে নেভিগেট করুন এবং Vertex AI API সক্ষম করুন ক্লিক করুন।

ভার্টেক্স এআই ড্যাশবোর্ড

ধাপ 4: একটি ভার্টেক্স এআই ওয়ার্কবেঞ্চ উদাহরণ তৈরি করুন

আপনার ক্লাউড কনসোলের ভার্টেক্স এআই বিভাগ থেকে, ওয়ার্কবেঞ্চে ক্লিক করুন:

ভার্টেক্স এআই মেনু

নোটবুক API সক্রিয় করুন যদি এটি ইতিমধ্যে না থাকে।

নোটবুক_এপিআই

একবার সক্রিয় হলে, ম্যানেজড নোটবুক ক্লিক করুন:

নোটবুক_ইউআই

তারপর নতুন নোটবুক নির্বাচন করুন।

নতুন_নোটবুক

আপনার নোটবুকে একটি নাম দিন, এবং তারপর Advanced Settings এ ক্লিক করুন।

তৈরি_নোটবুক

উন্নত সেটিংসের অধীনে, নিষ্ক্রিয় শাটডাউন সক্ষম করুন এবং মিনিটের সংখ্যা 60 এ সেট করুন। এর অর্থ হল আপনার নোটবুক ব্যবহার না করার সময় স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে যাতে আপনার অপ্রয়োজনীয় খরচ না হয়।

নিষ্ক্রিয়_সময় শেষ

নিরাপত্তার অধীনে "টার্মিনাল সক্ষম করুন" নির্বাচন করুন যদি এটি ইতিমধ্যে সক্ষম না থাকে।

সক্ষম_টার্মিনাল

আপনি অন্যান্য উন্নত সেটিংসের মতোই ছেড়ে যেতে পারেন।

পরবর্তী, তৈরি করুন ক্লিক করুন। দৃষ্টান্তের ব্যবস্থা করতে কয়েক মিনিট সময় লাগবে।

একবার উদাহরণ তৈরি হয়ে গেলে, JupyterLab খুলুন নির্বাচন করুন।

open_jupyterlab

আপনি যখন প্রথমবার একটি নতুন উদাহরণ ব্যবহার করবেন, আপনাকে প্রমাণীকরণ করতে বলা হবে। এটি করার জন্য UI এর ধাপগুলি অনুসরণ করুন৷

প্রমাণীকরণ

5. প্রশিক্ষণ অ্যাপ্লিকেশন কোড ধারণ করুন

আপনি একটি ডকার কন্টেইনারে আপনার প্রশিক্ষণ অ্যাপ্লিকেশন কোড রেখে এবং এই কন্টেইনারটিকে Google কন্টেইনার রেজিস্ট্রিতে পুশ করে ভার্টেক্সে এই প্রশিক্ষণের কাজটি জমা দেবেন। এই পদ্ধতি ব্যবহার করে, আপনি যে কোনও কাঠামোর সাথে নির্মিত একটি মডেলকে প্রশিক্ষণ দিতে পারেন।

শুরু করতে, লঞ্চার মেনু থেকে, আপনার নোটবুকের উদাহরণে একটি টার্মিনাল উইন্ডো খুলুন:

নোটবুকে টার্মিনাল খুলুন

cassava নামে একটি নতুন ডিরেক্টরি তৈরি করুন এবং এতে সিডি করুন:

mkdir cassava
cd cassava

ধাপ 1: একটি ডকারফাইল তৈরি করুন

আপনার কোড কন্টেইনারাইজ করার প্রথম ধাপ হল একটি ডকারফাইল তৈরি করা। ডকারফাইলে আপনি চিত্রটি চালানোর জন্য প্রয়োজনীয় সমস্ত কমান্ড অন্তর্ভুক্ত করবেন। এটি সমস্ত প্রয়োজনীয় লাইব্রেরি ইনস্টল করবে এবং প্রশিক্ষণ কোডের জন্য এন্ট্রি পয়েন্ট সেট আপ করবে।

আপনার টার্মিনাল থেকে, একটি খালি ডকারফাইল তৈরি করুন:

touch 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"]

এই ডকারফাইলটি ডিপ লার্নিং কন্টেইনার টেনসরফ্লো এন্টারপ্রাইজ 2.7 জিপিইউ ডকার ইমেজ ব্যবহার করে। Google ক্লাউডে ডিপ লার্নিং কন্টেনারগুলি অনেক সাধারণ ML এবং ডেটা সায়েন্স ফ্রেমওয়ার্ক আগে থেকে ইনস্টল করা আছে। সেই ছবিটি ডাউনলোড করার পরে, এই ডকারফাইল প্রশিক্ষণ কোডের জন্য এন্ট্রিপয়েন্ট সেট আপ করে। আপনি এখনও এই ফাইলগুলি তৈরি করেননি – পরবর্তী ধাপে, আপনি মডেলটি প্রশিক্ষণ এবং টিউন করার জন্য কোড যোগ করবেন।

ধাপ 2: একটি ক্লাউড স্টোরেজ বালতি তৈরি করুন

এই প্রশিক্ষণের কাজে, আপনি প্রশিক্ষিত টেনসরফ্লো মডেলটিকে একটি ক্লাউড স্টোরেজ বাকেটে রপ্তানি করবেন। আপনার টার্মিনাল থেকে, আপনার প্রকল্পের জন্য একটি env ভেরিয়েবল সংজ্ঞায়িত করতে নিম্নলিখিতটি চালান, আপনার প্রকল্পের আইডি দিয়ে your-cloud-project প্রতিস্থাপন নিশ্চিত করুন:

PROJECT_ID='your-cloud-project'

এরপরে, আপনার প্রকল্পে একটি নতুন বালতি তৈরি করতে আপনার টার্মিনালে নিম্নলিখিতটি চালান।

BUCKET="gs://${PROJECT_ID}-bucket"
gsutil mb -l us-central1 $BUCKET

ধাপ 3: মডেল প্রশিক্ষণ কোড যোগ করুন

আপনার টার্মিনাল থেকে, প্রশিক্ষণ কোডের জন্য একটি ডিরেক্টরি এবং একটি পাইথন ফাইল তৈরি করতে নিম্নলিখিতটি চালান যেখানে আপনি কোডটি যোগ করবেন:

mkdir trainer
touch trainer/task.py

এখন আপনার cassava/ ডিরেক্টরিতে নিম্নলিখিতগুলি থাকা উচিত:

+ Dockerfile
+ trainer/
    + task.py

এরপর, আপনি এইমাত্র তৈরি করা task.py ফাইলটি খুলুন এবং নীচের কোডটি অনুলিপি করুন৷ আপনার তৈরি করা ক্লাউড স্টোরেজ বাকেটের নামের সাথে আপনাকে {your-gcs-bucket} প্রতিস্থাপন করতে হবে।

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 API থেকে MultiWorkerMirroredStrategy ব্যবহার করে।

কোডটিতে কয়েকটি উপাদান রয়েছে যা MultiWorkerMirroredStrategy এর সাথে কাজ করার জন্য আপনার কোডের জন্য প্রয়োজনীয়।

  1. ডেটা শার্ড করা প্রয়োজন, যার অর্থ প্রতিটি কর্মীকে সমগ্র ডেটাসেটের একটি উপসেট বরাদ্দ করা হয়। অতএব, প্রতিটি ধাপে প্রতিটি কর্মীর দ্বারা অ ওভারল্যাপিং ডেটাসেট উপাদানগুলির একটি গ্লোবাল ব্যাচ আকার প্রক্রিয়া করা হবে। এই শার্ডিংটি tf.data.experimental.AutoShardPolicy এর সাথে স্বয়ংক্রিয়ভাবে ঘটে, যা FILE বা DATA তে সেট করা যেতে পারে। এই উদাহরণে, create_dataset() ফাংশন AutoShardPolicy DATA তে সেট করে কারণ কাসাভা ডেটাসেট একাধিক ফাইল হিসাবে ডাউনলোড করা হয় না। যাইহোক, আপনি যদি নীতিটি DATA তে সেট না করেন, ডিফল্ট AUTO নীতি চালু হবে এবং শেষ ফলাফল একই হবে৷ আপনি এখানে MultiWorkerMirroredStrategy এর সাথে ডেটাসেট শার্ডিং সম্পর্কে আরও জানতে পারেন।
  2. main() ফাংশনে, MultiWorkerMirroredStrategy অবজেক্ট তৈরি করা হয়। এর পরে, আপনি কৌশলের সুযোগের মধ্যে আপনার মডেল ভেরিয়েবলের তৈরিকে মোড়ানো। এই গুরুত্বপূর্ণ পদক্ষেপটি টেনসরফ্লোকে বলে যে কোন ভেরিয়েবলগুলি প্রতিলিপি জুড়ে মিরর করা উচিত।
  3. ব্যাচের আকার num_replicas_in_sync দ্বারা স্কেল করা হয়েছে। এটি নিশ্চিত করে যে প্রতিটি প্রতিলিপি প্রতিটি ধাপে একই সংখ্যক উদাহরণ প্রক্রিয়া করে। টেনসরফ্লোতে সিঙ্ক্রোনাস ডেটা সমান্তরাল কৌশলগুলি ব্যবহার করার সময় ব্যাচের আকার স্কেল করা একটি সর্বোত্তম অনুশীলন।
  4. আপনার মডেল সংরক্ষণ করা মাল্টি-ওয়ার্কার ক্ষেত্রে একটু বেশি জটিল কারণ প্রতিটি শ্রমিকের জন্য গন্তব্য আলাদা হতে হবে। প্রধান কর্মী পছন্দসই মডেল ডিরেক্টরিতে সংরক্ষণ করবে, অন্য কর্মীরা মডেলটিকে অস্থায়ী ডিরেক্টরিতে সংরক্ষণ করবে। একাধিক কর্মীকে একই স্থানে লেখা থেকে বিরত রাখার জন্য এই অস্থায়ী ডিরেক্টরিগুলি অনন্য হওয়া গুরুত্বপূর্ণ। সঞ্চয় সম্মিলিত ক্রিয়াকলাপগুলিকে ধারণ করতে পারে, যার অর্থ হল সমস্ত কর্মীদের সংরক্ষণ করতে হবে এবং কেবল প্রধান নয়। ফাংশন _is_chief() , _get_temp_dir() , write_filepath() , পাশাপাশি main() ফাংশনের মধ্যে রয়েছে বয়লারপ্লেট কোড যা মডেল সংরক্ষণ করতে সাহায্য করে।

মনে রাখবেন যে আপনি যদি একটি ভিন্ন পরিবেশে MultiWorkerMirroredStrategy ব্যবহার করে থাকেন, তাহলে আপনি TF_CONFIG এনভায়রনমেন্ট ভেরিয়েবল সেট আপ করতে পারেন। Vertex AI স্বয়ংক্রিয়ভাবে আপনার জন্য TF_CONFIG সেট করে, তাই আপনাকে আপনার ক্লাস্টারের প্রতিটি মেশিনে এই ভেরিয়েবলটি সংজ্ঞায়িত করতে হবে না।

ধাপ 4: ধারক তৈরি করুন

আপনার টার্মিনাল থেকে, আপনার প্রকল্পের জন্য একটি env ভেরিয়েবল সংজ্ঞায়িত করতে নিম্নলিখিতটি চালান, আপনার প্রকল্পের আইডি দিয়ে your-cloud-project প্রতিস্থাপন নিশ্চিত করুন:

PROJECT_ID='your-cloud-project'

Google কন্টেইনার রেজিস্ট্রিতে আপনার কন্টেইনার ইমেজের URI সহ একটি পরিবর্তনশীল সংজ্ঞায়িত করুন:

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 কন্টেইনার রেজিস্ট্রিতে একটি কাস্টম কন্টেইনারের মাধ্যমে কাস্টম প্রশিক্ষণ ব্যবহার করে, তবে আপনি পূর্ব-নির্মিত কন্টেইনারগুলির সাথে একটি প্রশিক্ষণের কাজও চালাতে পারেন৷

শুরু করতে, আপনার ক্লাউড কনসোলের ভার্টেক্স বিভাগে প্রশিক্ষণ বিভাগে নেভিগেট করুন:

uCAIP মেনু

ধাপ 1: প্রশিক্ষণের কাজ কনফিগার করুন

আপনার প্রশিক্ষণ কাজের জন্য প্যারামিটার প্রবেশ করতে তৈরি করুন ক্লিক করুন.

  • ডেটাসেটের অধীনে, পরিচালিত ডেটাসেট নেই নির্বাচন করুন
  • তারপর আপনার প্রশিক্ষণ পদ্ধতি হিসাবে কাস্টম প্রশিক্ষণ (উন্নত) নির্বাচন করুন এবং চালিয়ে যান ক্লিক করুন।
  • মডেল নামের জন্য multiworker-cassava (বা আপনি যাকে আপনার মডেল বলতে চান) লিখুন
  • অবিরত ক্লিক করুন

ধারক সেটিংস ধাপে, কাস্টম ধারক নির্বাচন করুন:

কাস্টম ধারক বিকল্প

প্রথম বাক্সে ( ধারক চিত্র ), পূর্ববর্তী বিভাগ থেকে আপনার IMAGE_URI ভেরিয়েবলের মান লিখুন। এটি হওয়া উচিত: gcr.io/your-cloud-project/multiworker:cassava , আপনার নিজস্ব প্রজেক্ট আইডি সহ। বাকি ক্ষেত্রগুলো ফাঁকা রেখে Continue এ ক্লিক করুন।

আবার Continue-এ ক্লিক করে হাইপারপ্যারামিটার ধাপটি এড়িয়ে যান।

ধাপ 2: কম্পিউট ক্লাস্টার কনফিগার করুন

Vertex AI বিভিন্ন ধরনের মেশিনের কাজ কভার করার জন্য 4টি কর্মী পুল প্রদান করে।

কর্মী পুল 0 প্রাথমিক, প্রধান, সময়সূচী বা "মাস্টার" কনফিগার করে। MultiWorkerMirroredStrategy এ, সমস্ত মেশিনকে কর্মী হিসাবে মনোনীত করা হয়, যেগুলি হল ফিজিক্যাল মেশিন যার উপর প্রতিলিপিকৃত গণনা চালানো হয়। প্রতিটি মেশিনের একজন কর্মী ছাড়াও, একজন কর্মী থাকা প্রয়োজন যেটি কিছু অতিরিক্ত কাজ যেমন চেকপয়েন্ট সংরক্ষণ করা এবং টেনসরবোর্ডে সারাংশ ফাইল লেখার মতো কাজ করে। এই যন্ত্রটি প্রধান হিসেবে পরিচিত। শুধুমাত্র একজন প্রধান কর্মী থাকে, তাই কর্মী পুল 0 এর জন্য আপনার কর্মী সংখ্যা সর্বদা 1 হবে।

কম্পিউট এবং মূল্য নির্ধারণে , নির্বাচিত অঞ্চলটিকে যেমন আছে-এভাবে ছেড়ে দিন এবং নিম্নরূপ কর্মী পুল 0 কনফিগার করুন:

শ্রমিক_পুল_0

কর্মী পুল 1 হল যেখানে আপনি আপনার ক্লাস্টারের জন্য কর্মীদের কনফিগার করেন।

নিম্নরূপ কর্মী পুল 1 কনফিগার করুন:

শ্রমিক_পুল_1

ক্লাস্টারটি এখন শুধুমাত্র দুটি CPU মেশিন থাকার জন্য কনফিগার করা হয়েছে। যখন ট্রেনিং অ্যাপ্লিকেশান কোড চালানো হয়, MultiWorkerMirroredStrategy উভয় মেশিনে প্রশিক্ষণ বিতরণ করবে।

MultiWorkerMirroredStrategy শুধুমাত্র প্রধান এবং কর্মী কাজের ধরন রয়েছে, তাই অতিরিক্ত কর্মী পুল কনফিগার করার প্রয়োজন নেই। যাইহোক, যদি আপনি TensorFlow-এর ParameterServerStrategy ব্যবহার করতে চান, আপনি কর্মী পুল 2 -এ আপনার প্যারামিটার সার্ভারগুলি কনফিগার করবেন। এবং আপনি যদি আপনার ক্লাস্টারে একটি মূল্যায়নকারী যোগ করতে চান, আপনি সেই মেশিনটিকে কর্মী পুল 3 এ কনফিগার করবেন।

হাইপারপ্যারামিটার টিউনিং কাজ শুরু করতে প্রশিক্ষণ শুরু করুন ক্লিক করুন। ট্রেনিং পাইপলাইন ট্যাবের অধীনে আপনার কনসোলের প্রশিক্ষণ বিভাগে আপনি আপনার সদ্য চালু হওয়া কাজটি দেখতে পাবেন:

প্রশিক্ষণের কাজ

🎉 অভিনন্দন! 🎉

আপনি শিখেছেন কিভাবে Vertex AI ব্যবহার করতে হয়:

  • একটি কাস্টম কন্টেইনারে প্রদত্ত প্রশিক্ষণ কোডের জন্য একটি বহু-কর্মী প্রশিক্ষণ কাজ চালু করুন। আপনি এই উদাহরণে একটি TensorFlow মডেল ব্যবহার করেছেন, কিন্তু আপনি কাস্টম বা বিল্ট-ইন কন্টেনার ব্যবহার করে যেকোন ফ্রেমওয়ার্কের সাথে তৈরি একটি মডেলকে প্রশিক্ষণ দিতে পারেন।

ভার্টেক্সের বিভিন্ন অংশ সম্পর্কে আরও জানতে, ডকুমেন্টেশন দেখুন।

7. [ঐচ্ছিক] Vertex SDK ব্যবহার করুন

পূর্ববর্তী বিভাগে দেখানো হয়েছে কিভাবে UI এর মাধ্যমে প্রশিক্ষণের কাজ শুরু করা যায়। এই বিভাগে, আপনি Vertex Python API ব্যবহার করে প্রশিক্ষণের কাজ জমা দেওয়ার একটি বিকল্প উপায় দেখতে পাবেন।

আপনার নোটবুকের উদাহরণে ফিরে যান এবং লঞ্চার থেকে একটি তৈরি করুন একটি টেনসরফ্লো 2 নোটবুক তৈরি করুন:

নতুন_নোটবুক

Vertex AI SDK আমদানি করুন।

from google.cloud import aiplatform

মাল্টি-ওয়ার্কার ট্রেনিং কাজ চালু করতে, আপনাকে প্রথমে ওয়ার্কার পুল স্পেক নির্ধারণ করতে হবে। উল্লেখ্য যে স্পেকের মধ্যে GPU গুলির ব্যবহার সম্পূর্ণ ঐচ্ছিক এবং আপনি যদি পূর্ববর্তী বিভাগে দেখানো হিসাবে শুধুমাত্র CPU ক্লাস্টার চান তাহলে আপনি 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. পরিষ্কার করা

যেহেতু আমরা নোটবুকটিকে 60 নিষ্ক্রিয় মিনিটের পরে টাইম আউট করার জন্য কনফিগার করেছি, আমাদের উদাহরণটি বন্ধ করার বিষয়ে চিন্তা করার দরকার নেই৷ আপনি যদি দৃষ্টান্তটি ম্যানুয়ালি বন্ধ করতে চান, তাহলে কনসোলের Vertex AI Workbench বিভাগে স্টপ বোতামে ক্লিক করুন। আপনি যদি নোটবুকটি সম্পূর্ণরূপে মুছে ফেলতে চান তবে মুছুন বোতামটি ক্লিক করুন।

উদাহরণ বন্ধ করুন

আপনার ক্লাউড কনসোলে নেভিগেশন মেনু ব্যবহার করে স্টোরেজ বাকেট মুছে ফেলতে, স্টোরেজ ব্রাউজ করুন, আপনার বালতি নির্বাচন করুন এবং মুছুন ক্লিক করুন:

স্টোরেজ মুছুন