Vertex AI এর সাথে একটি মডেল তৈরি করুন এবং স্থাপন করুন

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

এই ল্যাবে, আপনি শিখবেন কীভাবে গুগল ক্লাউডের সদ্য ঘোষিত ম্যানেজড এমএল প্ল্যাটফর্ম— ভার্টেক্স এআই (Vertex AI) ব্যবহার করে এন্ড-টু-এন্ড এমএল ওয়ার্কফ্লো তৈরি করতে হয়। আপনি শিখবেন কীভাবে র ডেটা থেকে ডেপ্লয়েড মডেল তৈরি করতে হয়, এবং এই ওয়ার্কশপ শেষে আপনি ভার্টেক্স এআই ব্যবহার করে আপনার নিজস্ব এমএল প্রজেক্ট ডেভেলপ ও প্রোডাকশনাইজ করার জন্য প্রস্তুত থাকবেন। এই ল্যাবে, আমরা ভার্টেক্স এআই দিয়ে ট্রেনিংয়ের জন্য কাস্টম কন্টেইনার প্রদর্শন করতে ক্লাউড শেল (Cloud Shell) ব্যবহার করে একটি কাস্টম ডকার ইমেজ তৈরি করছি।

যদিও আমরা এখানে মডেল কোডের জন্য টেনসরফ্লো ব্যবহার করছি, আপনি সহজেই এটিকে অন্য কোনো ফ্রেমওয়ার্ক দিয়ে প্রতিস্থাপন করতে পারেন।

আপনি যা শিখবেন

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

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

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

২. ভার্টেক্স এআই-এর পরিচিতি

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

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

ভার্টেক্স পরিষেবা

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

স্ব-গতিতে পরিবেশ সেটআপ

ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। (যদি আপনার আগে থেকে কোনো Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)।

এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।

এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ধাপ ১: ক্লাউড শেল চালু করুন

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

ক্লাউড শেল অনুমোদন করুন

ক্লাউড শেল সক্রিয় করুন

ক্লাউড কনসোলের উপরের ডান দিক থেকে, ক্লাউড শেল সক্রিয় করতে নিচের বোতামটিতে ক্লিক করুন:

ক্লাউড শেল সক্রিয় করুন

আপনি যদি আগে কখনো ক্লাউড শেল চালু না করে থাকেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন (নিচে দেওয়া আছে) আপনার সামনে আসবে। যদি তাই হয়, তাহলে 'Continue'-তে ক্লিক করুন (এবং আপনি এটি আর কখনো দেখতে পাবেন না)। একবারের জন্য আসা সেই স্ক্রিনটি দেখতে এইরকম:

ক্লাউড শেল সেটআপ

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

ক্লাউড শেল ইনিট

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

ক্লাউড শেলে সংযুক্ত হওয়ার পর আপনি দেখতে পাবেন যে, আপনাকে ইতিমধ্যেই প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।

আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

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

echo $GOOGLE_CLOUD_PROJECT

ধাপ ২: এপিআই সক্রিয় করুন

পরবর্তী ধাপগুলোতে আপনি দেখতে পাবেন এই সার্ভিসগুলো কোথায় (এবং কেন) প্রয়োজন, কিন্তু আপাতত, আপনার প্রোজেক্টকে Compute Engine, Container Registry, এবং Vertex AI সার্ভিসগুলোতে অ্যাক্সেস দেওয়ার জন্য এই কমান্ডটি চালান:

gcloud services enable compute.googleapis.com         \
                       containerregistry.googleapis.com  \
                       aiplatform.googleapis.com

এর ফলে এইটির মতো একটি সফল বার্তা তৈরি হওয়া উচিত:

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

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

Vertex AI-তে একটি ট্রেনিং জব চালানোর জন্য, আমাদের সংরক্ষিত মডেল অ্যাসেটগুলো রাখার জন্য একটি স্টোরেজ বাকেট প্রয়োজন হবে। একটি বাকেট তৈরি করতে আপনার ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডগুলো চালান:

BUCKET_NAME=gs://$GOOGLE_CLOUD_PROJECT-bucket
gsutil mb -l us-central1 $BUCKET_NAME

ধাপ ৪: পাইথন ৩ এর অ্যালিয়াস তৈরি করুন

এই ল্যাবের কোডে পাইথন ৩ ব্যবহার করা হয়েছে। এই ল্যাবে আপনি যে স্ক্রিপ্টগুলো তৈরি করবেন, সেগুলো চালানোর সময় যাতে পাইথন ৩ ব্যবহার নিশ্চিত হয়, তা করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালিয়ে একটি অ্যালিয়াস তৈরি করুন:

alias python=python3

এই ল্যাবে আমরা যে মডেলটি প্রশিক্ষণ দেব এবং পরিবেশন করব, তা টেনসরফ্লো ডক্সের এই টিউটোরিয়ালটির উপর ভিত্তি করে তৈরি। টিউটোরিয়ালটি একটি গাড়ির জ্বালানি দক্ষতার পূর্বাভাস দেওয়ার জন্য ক্যাগল-এর অটো এমপিজি ডেটাসেট ব্যবহার করে।

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

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

ধাপ ১: ফাইলগুলো সেট আপ করুন

শুরুতে, ক্লাউড শেলের টার্মিনাল থেকে আমাদের ডকার কন্টেইনারের জন্য প্রয়োজনীয় ফাইলগুলো তৈরি করতে নিম্নলিখিত কমান্ডগুলো চালান:

mkdir mpg
cd mpg
touch Dockerfile
mkdir trainer
touch trainer/train.py

এখন আপনার একটি mpg/ ডিরেক্টরি থাকবে যা দেখতে নিচের ছবির মতো:

+ Dockerfile
+ trainer/
    + train.py

এই ফাইলগুলো দেখতে ও সম্পাদনা করতে, আমরা ক্লাউড শেলের বিল্ট-ইন কোড এডিটর ব্যবহার করব। ক্লাউড শেলের উপরের ডানদিকের মেনু বারে থাকা বোতামে ক্লিক করে আপনি এডিটর এবং টার্মিনালের মধ্যে পরিবর্তন করতে পারবেন:

ক্লাউড শেলে এডিটরে স্যুইচ করুন

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

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

ক্লাউড শেল ফাইল এডিটর থেকে, আপনার mpg/ ডিরেক্টরিটি খুলুন এবং তারপরে Dockerfile-টি খোলার জন্য ডাবল-ক্লিক করুন:

ডকারফাইল খুলুন

তারপর নিচের বিষয়গুলো এই ফাইলে কপি করুন:

FROM gcr.io/deeplearning-platform-release/tf2-cpu.2-3
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.train"]

এই ডকারফাইলটি ডিপ লার্নিং কন্টেইনার টেনসরফ্লো এন্টারপ্রাইজ ২.৩ ডকার ইমেজ ব্যবহার করে। গুগল ক্লাউডের ডিপ লার্নিং কন্টেইনারগুলোতে অনেক প্রচলিত এমএল এবং ডেটা সায়েন্স ফ্রেমওয়ার্ক আগে থেকেই ইনস্টল করা থাকে। আমরা যেটি ব্যবহার করছি, তাতে টিএফ এন্টারপ্রাইজ ২.৩, পান্ডাস, সাইকিট-লার্ন এবং অন্যান্য ফ্রেমওয়ার্ক অন্তর্ভুক্ত রয়েছে। ইমেজটি ডাউনলোড করার পর, এই ডকারফাইলটি আমাদের ট্রেনিং কোডের জন্য এন্ট্রিপয়েন্ট সেট আপ করে, যা আমরা পরবর্তী ধাপে যোগ করব।

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

এরপর ক্লাউড শেল এডিটর থেকে train.py ফাইলটি খুলুন এবং নিচের কোডটি কপি করুন (এটি টেনসরফ্লো ডক্সের টিউটোরিয়াল থেকে নেওয়া)।

# This will be replaced with your bucket name after running the `sed` command in the tutorial
BUCKET = "BUCKET_NAME"

import numpy as np
import pandas as pd
import pathlib
import tensorflow as tf

from tensorflow import keras
from tensorflow.keras import layers

print(tf.__version__)

"""## The Auto MPG dataset

The dataset is available from the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/).

### Get the data
First download the dataset.
"""

"""Import it using pandas"""

dataset_path = "https://storage.googleapis.com/io-vertex-codelab/auto-mpg.csv"
dataset = pd.read_csv(dataset_path, na_values = "?")

dataset.tail()

"""### Clean the data

The dataset contains a few unknown values.
"""

dataset.isna().sum()

"""To keep this initial tutorial simple drop those rows."""

dataset = dataset.dropna()

"""The `"origin"` column is really categorical, not numeric. So convert that to a one-hot:"""

dataset['origin'] = dataset['origin'].map({1: 'USA', 2: 'Europe', 3: 'Japan'})

dataset = pd.get_dummies(dataset, prefix='', prefix_sep='')
dataset.tail()

"""### Split the data into train and test

Now split the dataset into a training set and a test set.

We will use the test set in the final evaluation of our model.
"""

train_dataset = dataset.sample(frac=0.8,random_state=0)
test_dataset = dataset.drop(train_dataset.index)

"""### Inspect the data

Have a quick look at the joint distribution of a few pairs of columns from the training set.

Also look at the overall statistics:
"""

train_stats = train_dataset.describe()
train_stats.pop("mpg")
train_stats = train_stats.transpose()
train_stats

"""### Split features from labels

Separate the target value, or "label", from the features. This label is the value that you will train the model to predict.
"""

train_labels = train_dataset.pop('mpg')
test_labels = test_dataset.pop('mpg')

"""### Normalize the data

Look again at the `train_stats` block above and note how different the ranges of each feature are.

It is good practice to normalize features that use different scales and ranges. Although the model *might* converge without feature normalization, it makes training more difficult, and it makes the resulting model dependent on the choice of units used in the input.

Note: Although we intentionally generate these statistics from only the training dataset, these statistics will also be used to normalize the test dataset. We need to do that to project the test dataset into the same distribution that the model has been trained on.
"""

def norm(x):
  return (x - train_stats['mean']) / train_stats['std']
normed_train_data = norm(train_dataset)
normed_test_data = norm(test_dataset)

"""This normalized data is what we will use to train the model.

Caution: The statistics used to normalize the inputs here (mean and standard deviation) need to be applied to any other data that is fed to the model, along with the one-hot encoding that we did earlier.  That includes the test set as well as live data when the model is used in production.

## The model

### Build the model

Let's build our model. Here, we'll use a `Sequential` model with two densely connected hidden layers, and an output layer that returns a single, continuous value. The model building steps are wrapped in a function, `build_model`, since we'll create a second model, later on.
"""

def build_model():
  model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=[len(train_dataset.keys())]),
    layers.Dense(64, activation='relu'),
    layers.Dense(1)
  ])

  optimizer = tf.keras.optimizers.RMSprop(0.001)

  model.compile(loss='mse',
                optimizer=optimizer,
                metrics=['mae', 'mse'])
  return model

model = build_model()

"""### Inspect the model

Use the `.summary` method to print a simple description of the model
"""

model.summary()

"""Now try out the model. Take a batch of `10` examples from the training data and call `model.predict` on it.

It seems to be working, and it produces a result of the expected shape and type.

### Train the model

Train the model for 1000 epochs, and record the training and validation accuracy in the `history` object.

Visualize the model's training progress using the stats stored in the `history` object.

This graph shows little improvement, or even degradation in the validation error after about 100 epochs. Let's update the `model.fit` call to automatically stop training when the validation score doesn't improve. We'll use an *EarlyStopping callback* that tests a training condition for  every epoch. If a set amount of epochs elapses without showing improvement, then automatically stop the training.

You can learn more about this callback [here](https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/EarlyStopping).
"""

model = build_model()

EPOCHS = 1000

# The patience parameter is the amount of epochs to check for improvement
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)

early_history = model.fit(normed_train_data, train_labels, 
                    epochs=EPOCHS, validation_split = 0.2, 
                    callbacks=[early_stop])


# Export model and save to GCS
model.save(BUCKET + '/mpg/model')

উপরের কোডটি mpg/trainer/train.py ফাইলে কপি করার পর, আপনার ক্লাউড শেলের টার্মিনালে ফিরে যান এবং ফাইলটিতে আপনার নিজের বাকেটের নাম যোগ করতে নিম্নলিখিত কমান্ডটি চালান:

sed -i "s|BUCKET_NAME|$BUCKET_NAME|g" trainer/train.py

ধাপ ৪: কন্টেইনারটি স্থানীয়ভাবে বিল্ড এবং টেস্ট করুন

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

IMAGE_URI="gcr.io/$GOOGLE_CLOUD_PROJECT/mpg:v1"

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

docker build ./ -t $IMAGE_URI

কন্টেইনারটি তৈরি হয়ে গেলে, সেটিকে গুগল কন্টেইনার রেজিস্ট্রি-তে পুশ করুন:

docker push $IMAGE_URI

আপনার ইমেজটি কন্টেইনার রেজিস্ট্রি-তে পুশ করা হয়েছে কিনা তা যাচাই করতে, আপনার কনসোলের কন্টেইনার রেজিস্ট্রি বিভাগে গেলে আপনি এইরকম কিছু দেখতে পাবেন:

কন্টেইনার রেজিস্ট্রি প্রিভিউ

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

৫. ভার্টেক্স এআই-তে একটি ট্রেনিং জব চালান।

ভার্টেক্স আপনাকে মডেল প্রশিক্ষণের জন্য দুটি বিকল্প দেয়:

  • অটোএমএল : ন্যূনতম পরিশ্রম ও এমএল দক্ষতা দিয়ে উন্নত মানের মডেল তৈরি করুন।
  • কাস্টম প্রশিক্ষণ : গুগল ক্লাউডের আগে থেকে তৈরি কন্টেইনারগুলোর একটি ব্যবহার করে অথবা আপনার নিজের কন্টেইনার ব্যবহার করে ক্লাউডে আপনার কাস্টম প্রশিক্ষণ অ্যাপ্লিকেশনগুলো চালান।

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

ভার্টেক্স সাইডবার মেনু - প্রশিক্ষণ

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

আপনার ট্রেনিং জব এবং ডেপ্লয়েড মডেলের প্যারামিটারগুলো প্রবেশ করাতে ক্রিয়েট-এ ক্লিক করুন:

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

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

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

প্রথম বক্সে (কন্টেইনার ইমেজ), ব্রাউজ-এ ক্লিক করুন এবং আপনি এইমাত্র কন্টেইনার রেজিস্ট্রি-তে পুশ করা কন্টেইনারটি খুঁজুন। এটি দেখতে অনেকটা এইরকম হবে:

কন্টেইনার খুঁজুন

বাকি ঘরগুলো খালি রেখে ' চালিয়ে যান'- এ ক্লিক করুন।

এই টিউটোরিয়ালে আমরা হাইপারপ্যারামিটার টিউনিং ব্যবহার করব না, তাই ‘Enable hyperparameter tuning’ বক্সটি আনচেক করে ‘Continue’ ক্লিক করুন।

কম্পিউট এবং প্রাইসিং- এ, নির্বাচিত অঞ্চলটি অপরিবর্তিত রাখুন এবং আপনার মেশিনের ধরণ হিসেবে n1-standard-4 নির্বাচন করুন:

মেশিনের ধরন

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

প্রেডিকশন কন্টেইনার ধাপের অধীনে, 'কোনো প্রেডিকশন কন্টেইনার নেই ' নির্বাচন করুন:

কোন পূর্বাভাস কন্টেইনার নেই

৬. একটি মডেল এন্ডপয়েন্ট স্থাপন করুন

এই ধাপে আমরা আমাদের প্রশিক্ষিত মডেলের জন্য একটি এন্ডপয়েন্ট তৈরি করব। এটি ব্যবহার করে আমরা ভার্টেক্স এআই এপিআই (Vertex AI API) এর মাধ্যমে আমাদের মডেলের প্রেডিকশন পেতে পারি। এই কাজটি করার জন্য, আমরা এক্সপোর্ট করা প্রশিক্ষিত মডেল অ্যাসেটগুলোর একটি সংস্করণ একটি পাবলিক জিসিএস বাকেটে (GCS bucket) উপলব্ধ করেছি

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

এখানে আমরা Vertex AI SDK ব্যবহার করে একটি মডেল তৈরি করব, সেটিকে একটি এন্ডপয়েন্টে ডেপ্লয় করব এবং একটি প্রেডিকশন পাব।

ধাপ ১: Vertex SDK ইনস্টল করুন

আপনার ক্লাউড শেল টার্মিনাল থেকে ভার্টেক্স এআই এসডিকে ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:

pip3 install google-cloud-aiplatform --upgrade --user

আমরা এই SDK ব্যবহার করে Vertex-এর বিভিন্ন অংশের সাথে যোগাযোগ করতে পারি।

ধাপ ২: মডেল তৈরি করুন এবং এন্ডপয়েন্ট স্থাপন করুন

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

ক্লাউড শেলে নতুন ফাইল

ফাইলটির নাম দিন deploy.py । আপনার এডিটরে এই ফাইলটি খুলুন এবং নিচের কোডটি কপি করুন:

from google.cloud import aiplatform

# Create a model resource from public model assets
model = aiplatform.Model.upload(
    display_name="mpg-imported",
    artifact_uri="gs://io-vertex-codelab/mpg-model/",
    serving_container_image_uri="gcr.io/cloud-aiplatform/prediction/tf2-cpu.2-3:latest"
)

# Deploy the above model to an endpoint
endpoint = model.deploy(
    machine_type="n1-standard-4"
)

এরপর, ক্লাউড শেলের টার্মিনালে ফিরে যান, আপনার রুট ডিরেক্টরিতে cd করুন এবং এইমাত্র তৈরি করা পাইথন স্ক্রিপ্টটি চালান:

cd ..
python3 deploy.py | tee deploy-output.txt

রিসোর্স তৈরি হওয়ার সাথে সাথে আপনার টার্মিনালে আপডেট লগ হতে দেখবেন। এটি চলতে ১০-১৫ মিনিট সময় লাগবে। এটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে, Vertex AI-তে আপনার কনসোলের Models বিভাগে যান:

ভার্টেক্স কনসোলে মডেল

mgp-imported- এ ক্লিক করুন এবং আপনি দেখতে পাবেন যে সেই মডেলটির জন্য আপনার এন্ডপয়েন্ট তৈরি হচ্ছে:

অপেক্ষমান শেষবিন্দু

আপনার এন্ডপয়েন্ট ডিপ্লয় সম্পন্ন হলে, আপনার ক্লাউড শেল টার্মিনালে নিম্নলিখিত লগের মতো কিছু দেখতে পাবেন:

Endpoint model deployed. Resource name: projects/your-project-id/locations/us-central1/endpoints/your-endpoint-id

আপনার ডেপ্লয় করা এন্ডপয়েন্টের পূর্বাভাস পেতে আপনি পরবর্তী ধাপে এটি ব্যবহার করবেন।

ধাপ ৩: ডেপ্লয় করা এন্ডপয়েন্টে প্রেডিকশনগুলো নিন।

আপনার ক্লাউড শেল এডিটরে, predict.py নামে একটি নতুন ফাইল তৈরি করুন:

পূর্বাভাস ফাইল তৈরি করুন

predict.py খুলুন এবং নিচের কোডটি এতে পেস্ট করুন:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="ENDPOINT_STRING"
)

# A test example we'll send to our model for prediction
test_mpg = [1.4838871833555929,
 1.8659883497083019,
 2.234620276849616,
 1.0187816540094903,
 -2.530890710602246,
 -1.6046416850441676,
 -0.4651483719733302,
 -0.4952254087173721,
 0.7746763768735953]

response = endpoint.predict([test_mpg])

print('API response: ', response)

print('Predicted MPG: ', response.predictions[0][0])

এরপর, আপনার টার্মিনালে ফিরে যান এবং predict ফাইলে থাকা ENDPOINT_STRING আপনার নিজের এন্ডপয়েন্ট দিয়ে প্রতিস্থাপন করতে নিম্নলিখিতটি লিখুন:

ENDPOINT=$(cat deploy-output.txt | sed -nre 's:.*Resource name\: (.*):\1:p' | tail -1)
sed -i "s|ENDPOINT_STRING|$ENDPOINT|g" predict.py

এখন আমাদের ডেপ্লয় করা মডেল এন্ডপয়েন্ট থেকে প্রেডিকশন পেতে predict.py ফাইলটি রান করার সময় হয়েছে:

python3 predict.py

আমাদের পরীক্ষার পূর্বাভাসের জন্য প্রত্যাশিত জ্বালানি দক্ষতার সাথে এপিআই-এর প্রতিক্রিয়াটিও লগ করা অবস্থায় দেখতে পাবেন।

🎉 অভিনন্দন! 🎉

আপনি শিখেছেন কীভাবে ভার্টেক্স এআই ব্যবহার করে:

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

Vertex AI-এর বিভিন্ন অংশ সম্পর্কে আরও জানতে, ডকুমেন্টেশন দেখুন। আপনি যদি ধাপ ৫-এ শুরু করা ট্রেনিং জবের ফলাফল দেখতে চান, তাহলে আপনার Vertex কনসোলের ট্রেনিং সেকশনে যান।

৭. পরিচ্ছন্নতা

আপনার ডিপ্লয় করা এন্ডপয়েন্টটি ডিলিট করতে, আপনার Vertex কনসোলের Endpoints সেকশনে যান এবং ডিলিট আইকনে ক্লিক করুন:

এন্ডপয়েন্ট মুছুন

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

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