ভার্টেক্স এআই: হাইপারপ্যারামিটার টিউনিং

1. সংক্ষিপ্ত বিবরণ

এই ল্যাবে, আপনি একটি TensorFlow মডেলের জন্য হাইপারপ্যারামিটার টিউনিং কাজ চালানোর জন্য Vertex AI ব্যবহার করবেন। যদিও এই ল্যাব মডেল কোডের জন্য TensorFlow ব্যবহার করে, ধারণাগুলি অন্যান্য ML ফ্রেমওয়ার্কের ক্ষেত্রেও প্রযোজ্য।

তুমি যা শিখো

তুমি শিখবে কিভাবে:

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

গুগল ক্লাউডে এই ল্যাবটি পরিচালনা করতে মোট খরচ প্রায় $3 মার্কিন ডলার।

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

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

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

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

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

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

ধাপ ১: কম্পিউট ইঞ্জিন API সক্ষম করুন

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

ধাপ ২: কন্টেইনার রেজিস্ট্রি API সক্রিয় করুন

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

ধাপ ৩: ভার্টেক্স এআই এপিআই সক্ষম করুন

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

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

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

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

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

যদি Notebooks API ইতিমধ্যেই না থাকে, তাহলে তা সক্রিয় করুন।

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

একবার সক্রিয় হয়ে গেলে, MANAGED NOTEBOOKS এ ক্লিক করুন:

নোটবুক_UI

তারপর NEW NOTEBOOK নির্বাচন করুন।

নতুন_নোটবুক

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

নোটবুক তৈরি করুন

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

নিষ্ক্রিয়_সময়সীমা

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

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

আপনি অন্যান্য সমস্ত উন্নত সেটিংস যেমন আছে তেমন রেখে যেতে পারেন।

এরপর, Create এ ক্লিক করুন। ইনস্ট্যান্সটি প্রভিশন হতে কয়েক মিনিট সময় লাগবে।

একবার ইনস্ট্যান্স তৈরি হয়ে গেলে, Open JupyterLab নির্বাচন করুন।

ওপেন_জুপিটারল্যাব

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

প্রমাণীকরণ করা

৪. প্রশিক্ষণ আবেদন কোড কনটেইনারাইজ করুন

এই ল্যাবে আপনি যে মডেলটিকে প্রশিক্ষণ এবং টিউন করবেন তা হল TensorFlow Datasets থেকে ঘোড়া বা মানুষের ডেটাসেটের উপর প্রশিক্ষিত একটি চিত্র শ্রেণীবিভাগ মডেল।

আপনার প্রশিক্ষণ অ্যাপ্লিকেশন কোডটি একটি ডকার কন্টেইনারে রেখে এবং এই কন্টেইনারটি Google Container Registry- তে পুশ করে আপনি এই হাইপারপ্যারামিটার টিউনিং কাজটি Vertex AI-তে জমা দেবেন। এই পদ্ধতি ব্যবহার করে, আপনি যেকোনো ফ্রেমওয়ার্ক দিয়ে তৈরি মডেলের জন্য হাইপারপ্যারামিটার টিউন করতে পারেন।

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

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

horses_or_humans নামে একটি নতুন ডিরেক্টরি তৈরি করুন এবং এতে cd দিন:

mkdir horses_or_humans
cd horses_or_humans

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

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

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

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

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

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

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

mkdir trainer
touch trainer/task.py

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

+ Dockerfile
+ trainer/
    + task.py

এরপর, আপনার তৈরি করা task.py ফাইলটি খুলুন এবং নীচের কোডটি কপি করুন।

import tensorflow as tf
import tensorflow_datasets as tfds
import argparse
import hypertune

NUM_EPOCHS = 10


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():
  '''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(64)

  # Create validation dataset
  validation_data = data['test'].map(preprocess_data)
  validation_data  = validation_data.batch(64)

  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()
  train_data, validation_data = create_dataset()
  model = create_model(args.num_units, args.learning_rate, args.momentum)
  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()

কন্টেইনার তৈরি করার আগে, আসুন কোডটি আরও গভীরভাবে দেখে নেওয়া যাক। হাইপারপ্যারামিটার টিউনিং পরিষেবা ব্যবহারের জন্য নির্দিষ্ট কিছু উপাদান রয়েছে।

  1. স্ক্রিপ্টটি hypertune লাইব্রেরি আমদানি করে। মনে রাখবেন যে ধাপ ১ এর ডকারফাইলে এই লাইব্রেরিটি পিপ ইনস্টল করার নির্দেশাবলী অন্তর্ভুক্ত ছিল।
  2. get_args() ফাংশনটি আপনার টিউন করা প্রতিটি হাইপারপ্যারামিটারের জন্য একটি কমান্ড-লাইন আর্গুমেন্ট নির্ধারণ করে। এই উদাহরণে, যে হাইপারপ্যারামিটারগুলি টিউন করা হবে তা হল শেখার হার, অপ্টিমাইজারে ভরবেগ মান এবং মডেলের শেষ লুকানো স্তরে ইউনিটের সংখ্যা, তবে অন্যদের সাথে পরীক্ষা-নিরীক্ষা করতে দ্বিধা করবেন না। সেই আর্গুমেন্টগুলিতে পাস করা মানটি কোডে সংশ্লিষ্ট হাইপারপ্যারামিটার সেট করতে ব্যবহৃত হয়।
  3. main() ফাংশনের শেষে, hypertune লাইব্রেরি ব্যবহার করা হয় আপনি যে মেট্রিকটি অপ্টিমাইজ করতে চান তা নির্ধারণ করতে। TensorFlow-এ, keras model.fit পদ্ধতি একটি History অবজেক্ট ফেরত দেয়। History.history অ্যাট্রিবিউট হল ধারাবাহিক যুগে প্রশিক্ষণ ক্ষতির মান এবং মেট্রিক্স মানের একটি রেকর্ড। আপনি যদি model.fit এ বৈধতা ডেটা পাস করেন তবে History.history অ্যাট্রিবিউটে বৈধতা ক্ষতি এবং মেট্রিক্স মানও অন্তর্ভুক্ত থাকবে। উদাহরণস্বরূপ, আপনি যদি তিনটি যুগের জন্য একটি মডেলকে বৈধতা ডেটা সহ প্রশিক্ষণ দিয়ে থাকেন এবং মেট্রিক হিসাবে 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 এর জন্য আপনি যে স্ট্রিংটি পছন্দ করেন তা বেছে নিতে পারেন, তবে হাইপারপ্যারামিটার টিউনিং কাজ শুরু করার পরে আপনাকে আবার স্ট্রিংটি ব্যবহার করতে হবে।

ধাপ ৩: পাত্র তৈরি করুন

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

PROJECT_ID='your-cloud-project'

গুগল কন্টেইনার রেজিস্ট্রিতে আপনার কন্টেইনার ছবির URI দিয়ে একটি ভেরিয়েবল নির্ধারণ করুন:

IMAGE_URI="gcr.io/$PROJECT_ID/horse-human:hypertune"

ডকার কনফিগার করুন

gcloud auth configure-docker

তারপর, আপনার horses_or_humans ডিরেক্টরির রুট থেকে নিম্নলিখিতটি চালিয়ে কন্টেইনারটি তৈরি করুন:

docker build ./ -t $IMAGE_URI

অবশেষে, এটিকে Google Container Registry-এ পুশ করুন:

docker push $IMAGE_URI

কন্টেইনারটি কন্টেইনার রেজিস্ট্রিতে পুশ করার সাথে সাথে, আপনি এখন একটি কাস্টম মডেল হাইপারপ্যারামিটার টিউনিং কাজ শুরু করতে প্রস্তুত।

৫. ভার্টেক্স এআই-তে একটি হাইপারপ্যারামিটার টিউনিং কাজ চালান

এই ল্যাবটি Google Container Registry-তে একটি কাস্টম কন্টেইনারের মাধ্যমে কাস্টম প্রশিক্ষণ ব্যবহার করে, তবে আপনি Vertex AI প্রি-বিল্ট কন্টেইনার দিয়ে একটি হাইপারপ্যারামিটার টিউনিং কাজও চালাতে পারেন।

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

uCAIP মেনু

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

আপনার হাইপারপ্যারামিটার টিউনিং কাজের জন্য প্যারামিটারগুলি প্রবেশ করাতে তৈরি করুন এ ক্লিক করুন।

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

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

কাস্টম কন্টেইনার বিকল্প

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

ধাপ ২: হাইপারপ্যারামিটার টিউনিং কাজ কনফিগার করুন

হাইপারপ্যারামিটার টিউনিং সক্ষম করুন নির্বাচন করুন।

হাইপারপ্যারামিটার

হাইপারপ্যারামিটার কনফিগার করুন

এরপর, আপনাকে প্রশিক্ষণ অ্যাপ্লিকেশন কোডে কমান্ড লাইন আর্গুমেন্ট হিসেবে সেট করা হাইপারপ্যারামিটারগুলি যোগ করতে হবে। হাইপারপ্যারামিটার যোগ করার সময়, আপনাকে প্রথমে নামটি প্রদান করতে হবে। এটি আপনার argparse এ পাস করা আর্গুমেন্ট নামের সাথে মিলবে।

শেখার_রেট_নাম

তারপর, আপনি টিউনিং পরিষেবা যে মানগুলি চেষ্টা করবে তার জন্য টাইপ এবং সীমা নির্বাচন করবেন। আপনি যদি Double বা Integer টাইপ নির্বাচন করেন, তাহলে আপনাকে একটি সর্বনিম্ন এবং সর্বোচ্চ মান প্রদান করতে হবে। এবং যদি আপনি Categorical বা Discrete নির্বাচন করেন তবে আপনাকে মানগুলি প্রদান করতে হবে।

শেখার হারের ধরণশেখার_রেট_নাম

দ্বিগুণ এবং পূর্ণসংখ্যার ধরণের জন্য, আপনাকে স্কেলিং মানও প্রদান করতে হবে।

শেখার হারের স্কেল

learning_rate হাইপারপ্যারামিটার যোগ করার পর, momentum এবং num_units এর জন্য প্যারামিটার যোগ করুন।

মোমেন্টাম_কনফিগ

numneruons_config সম্পর্কে

মেট্রিক কনফিগার করুন

হাইপারপ্যারামিটার যোগ করার পর, আপনি যে মেট্রিকটি অপ্টিমাইজ করতে চান তার পাশাপাশি লক্ষ্যটিও প্রদান করবেন। এটি আপনার প্রশিক্ষণ অ্যাপ্লিকেশনে সেট করা hyperparameter_metric_tag মতো হওয়া উচিত।

মেট্রিক_কনফিগ

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

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

প্রদর্শনের উদ্দেশ্যে, আপনি পরীক্ষার সংখ্যা ১৫ এবং সমান্তরাল পরীক্ষার সর্বোচ্চ সংখ্যা ৩ নির্ধারণ করতে পারেন। আপনি বিভিন্ন সংখ্যা নিয়ে পরীক্ষা-নিরীক্ষা করতে পারেন, তবে এর ফলে টিউনিংয়ে দীর্ঘ সময় এবং খরচ বেশি হতে পারে।

ট্রায়াল_কনফিগ

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

অ্যালগরিদম_কনফিগ

চালিয়ে যান ক্লিক করুন।

ধাপ ৩: কম্পিউট কনফিগার করুন

কম্পিউট এবং প্রাইসিং -এ, নির্বাচিত অঞ্চলটি যেমন আছে তেমনই রেখে দিন এবং নিম্নরূপে ওয়ার্কার পুল 0 কনফিগার করুন।

মেশিনের ধরণ

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

হাইপারপ্যারাম চাকরি

এটি শেষ হয়ে গেলে, আপনি কাজের নামের উপর ক্লিক করতে পারবেন এবং টিউনিং ট্রায়ালের ফলাফল দেখতে পারবেন।

হাইপারপ্যারাম আউটপুট

🎉 অভিনন্দন! 🎉

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

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

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

৬. [ঐচ্ছিক] ভার্টেক্স SDK ব্যবহার করুন

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

লঞ্চার থেকে, একটি TensorFlow 2 নোটবুক তৈরি করুন।

নতুন_নোটবুক

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

from google.cloud import aiplatform
from google.cloud.aiplatform import hyperparameter_tuning as hpt

হাইপারপ্যারামিটার টিউনিং কাজটি শুরু করার জন্য, আপনাকে প্রথমে নিম্নলিখিত স্পেসিফিকেশনগুলি সংজ্ঞায়িত করতে হবে। আপনাকে 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": 1
    },
    "replica_count": 1,
    "container_spec": {
        "image_uri": "gcr.io/{PROJECT_ID}/horse-human:hypertune"
    }
}]


# Dictionary 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'}

# 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)
}

এরপর, একটি CustomJob তৈরি করুন। স্টেজিংয়ের জন্য আপনার প্রোজেক্টে {YOUR_BUCKET} একটি বাকেট দিয়ে প্রতিস্থাপন করতে হবে।

# Replace YOUR_BUCKET
my_custom_job = aiplatform.CustomJob(display_name='horses-humans-sdk-job',
                              worker_pool_specs=worker_pool_specs,
                              staging_bucket='gs://{YOUR_BUCKET}')

তারপর, HyperparameterTuningJob তৈরি করুন এবং চালান।

hp_job = aiplatform.HyperparameterTuningJob(
    display_name='horses-humans-sdk-job',
    custom_job=my_custom_job,
    metric_spec=metric_spec,
    parameter_spec=parameter_spec,
    max_trial_count=15,
    parallel_trial_count=3)

hp_job.run()

৭. পরিষ্কার-পরিচ্ছন্নতা

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

ইন্সট্যান্স বন্ধ করুন

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

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