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

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

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

তুমি কি শিখেছ

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

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

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

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

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

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

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

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

এই কোডল্যাব চালানোর জন্য আপনার একটি 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 এর ধাপগুলি অনুসরণ করুন৷

প্রমাণীকরণ

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

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

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

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

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

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

mkdir horses_or_humans
cd horses_or_humans

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

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

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

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

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

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

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

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 লাইব্রেরি আমদানি করে। নোট করুন যে ধাপ 1 থেকে ডকারফাইলে এই লাইব্রেরিটি ইনস্টল করার জন্য নির্দেশাবলী অন্তর্ভুক্ত রয়েছে।
  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 এর জন্য আপনার পছন্দের স্ট্রিং বাছাই করতে পারেন, কিন্তু আপনি যখন হাইপারপ্যারামিটার টিউনিং কাজ শুরু করবেন তখন আপনাকে আবার স্ট্রিংটি ব্যবহার করতে হবে।

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

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

PROJECT_ID='your-cloud-project'

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

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

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

gcloud auth configure-docker

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

docker build ./ -t $IMAGE_URI

সবশেষে, এটিকে Google কন্টেইনার রেজিস্ট্রিতে পুশ করুন:

docker push $IMAGE_URI

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

5. Vertex AI-তে একটি হাইপারপ্যারামিটার টিউনিং কাজ চালান

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

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

uCAIP মেনু

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

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

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

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

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

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

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

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

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

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

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

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

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

শেখার_হার_প্রকারশেখার_হার_নাম

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

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

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

Momentum_config

numneruons_config

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

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

metric_config

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

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

প্রদর্শনের উদ্দেশ্যে, আপনি ট্রায়ালের সংখ্যা 15 এবং সমান্তরাল ট্রায়ালের সর্বাধিক সংখ্যা 3 সেট করতে পারেন। আপনি বিভিন্ন সংখ্যা নিয়ে পরীক্ষা করতে পারেন, তবে এর ফলে টিউনিং সময় এবং উচ্চ খরচ হতে পারে।

trial_config

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

algorithm_config

অবিরত ক্লিক করুন.

ধাপ 3: গণনা কনফিগার করুন

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

যন্ত্রের প্রকার

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

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

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

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

🎉 অভিনন্দন! 🎉

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

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

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

6. [ঐচ্ছিক] Vertex 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()

7. পরিষ্কার করা

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

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

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

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