১. সংক্ষিপ্ত বিবরণ
এই ল্যাবে, আপনি পাইটর্চ (PyTorch) ব্যবহার করে আপনার মডেল তৈরি করার জন্য গুগল ক্লাউডে একটি সম্পূর্ণ এমএল (ML) ট্রেনিং ওয়ার্কফ্লো ধাপে ধাপে অনুসরণ করবেন। ক্লাউড এআই প্ল্যাটফর্ম নোটবুকস (Cloud AI Platform Notebooks) পরিবেশ থেকে, আপনি শিখবেন কীভাবে হাইপারপ্যারামিটার টিউনিং সহ এআই প্ল্যাটফর্ম ট্রেনিং-এ (AI Platform Training) চালানোর জন্য আপনার ট্রেনিং জবটি প্যাকেজ করতে হয়।
আপনি যা শিখবেন
আপনি শিখবেন কীভাবে:
- একটি এআই প্ল্যাটফর্ম নোটবুক ইনস্ট্যান্স তৈরি করুন
- একটি পাইটর্চ মডেল তৈরি করুন
- এআই প্ল্যাটফর্ম ট্রেনিং-এ হাইপারপ্যারামিটার টিউনিং ব্যবহার করে আপনার মডেলকে প্রশিক্ষণ দিন।
গুগল ক্লাউডে এই ল্যাবটি চালানোর মোট খরচ প্রায় ১ ডলার ।
২. আপনার পরিবেশ প্রস্তুত করুন
এই কোডল্যাবটি চালানোর জন্য আপনার বিলিং চালু করা একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট প্রয়োজন হবে। প্রজেক্ট তৈরি করতে, এখানের নির্দেশাবলী অনুসরণ করুন।
ধাপ ১: ক্লাউড এআই প্ল্যাটফর্ম মডেলস এপিআই সক্রিয় করুন
আপনার ক্লাউড কনসোলের AI প্ল্যাটফর্ম মডেল বিভাগে যান এবং যদি এটি আগে থেকে সক্রিয় না থাকে তবে 'সক্রিয় করুন' (Enable) বোতামে ক্লিক করুন।

ধাপ ২: কম্পিউট ইঞ্জিন এপিআই সক্রিয় করুন
Compute Engine- এ যান এবং যদি আগে থেকে সক্রিয় করা না থাকে তবে 'Enable' নির্বাচন করুন। আপনার নোটবুক ইনস্ট্যান্স তৈরি করার জন্য এটি প্রয়োজন হবে।
ধাপ ৩: একটি এআই প্ল্যাটফর্ম নোটবুক ইনস্ট্যান্স তৈরি করুন
আপনার ক্লাউড কনসোলের AI প্ল্যাটফর্ম নোটবুকস বিভাগে যান এবং নিউ ইনস্ট্যান্স-এ ক্লিক করুন। তারপর সর্বশেষ পাইটর্চ ইনস্ট্যান্স টাইপটি (GPU ছাড়া) নির্বাচন করুন:

ডিফল্ট অপশনগুলো ব্যবহার করুন অথবা চাইলে একটি কাস্টম নাম দিন, এবং তারপর Create-এ ক্লিক করুন। ইনস্ট্যান্সটি তৈরি হয়ে গেলে, Open JupyterLab নির্বাচন করুন:

এরপর, লঞ্চার থেকে একটি পাইথন ৩ নোটবুক ইনস্ট্যান্স খুলুন:

আপনি শুরু করার জন্য প্রস্তুত!
ধাপ ৫: পাইথন প্যাকেজগুলো ইম্পোর্ট করুন
আপনার নোটবুকের প্রথম সেলে, নিম্নলিখিত ইম্পোর্টগুলো যোগ করুন এবং সেলটি রান করুন। আপনি উপরের মেনুতে থাকা ডান তীর বোতামটি চেপে অথবা কমান্ড-এন্টার চেপে এটি রান করতে পারেন:
import datetime
import numpy as np
import os
import pandas as pd
import time
আপনি লক্ষ্য করবেন যে আমরা এখানে পাইটর্চ (PyTorch) ইম্পোর্ট করছি না। এর কারণ হলো, আমরা ট্রেনিং জবটি আমাদের নোটবুক ইনস্ট্যান্স থেকে নয়, বরং এআই প্ল্যাটফর্ম ট্রেনিং (AI Platform Training) থেকে চালাচ্ছি।
৩. প্রশিক্ষণ কাজের জন্য একটি প্যাকেজ তৈরি করুন।
এআই প্ল্যাটফর্ম ট্রেনিং-এ আমাদের ট্রেনিং জবটি চালানোর জন্য, আমাদের ট্রেনিং কোডটি স্থানীয়ভাবে নোটবুকস ইনস্ট্যান্সে প্যাকেজ করা এবং জবটির অ্যাসেট সংরক্ষণের জন্য একটি ক্লাউড স্টোরেজ বাকেট প্রয়োজন হবে। প্রথমে, আমরা একটি স্টোরেজ বাকেট তৈরি করব। আপনার কাছে আগে থেকেই একটি থাকলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।
ধাপ ১: আমাদের মডেলের জন্য একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন।
চলুন প্রথমে কিছু এনভায়রনমেন্ট ভেরিয়েবল নির্ধারণ করে নিই, যেগুলো আমরা এই কোডল্যাবের বাকি অংশে ব্যবহার করব। নিচের ভ্যালুগুলোতে আপনার গুগল ক্লাউড প্রজেক্টের নাম এবং আপনি যে ক্লাউড স্টোরেজ বাকেটটি তৈরি করতে চান তার নাম পূরণ করুন (নামটি অবশ্যই বিশ্বব্যাপী অনন্য হতে হবে):
# Update these to your own GCP project, model, and version names
GCP_PROJECT = 'your-gcp-project'
BOCKET_URL = 'gs://storage_bucket_name'
এখন আমরা একটি স্টোরেজ বাকেট তৈরি করতে প্রস্তুত, যেটি আমরা আমাদের ট্রেনিং জবটি শুরু করার সময় নির্দেশ করব।
একটি বাকেট তৈরি করতে আপনার নোটবুকের ভেতর থেকে এই gsutil কমান্ডটি চালান:
!gsutil mb $BUCKET_URL
ধাপ ২: আমাদের পাইথন প্যাকেজের জন্য প্রাথমিক ফাইলগুলো তৈরি করুন।
এআই প্ল্যাটফর্মে একটি ট্রেনিং জব চালানোর জন্য, আমাদের কোডটিকে একটি পাইথন প্যাকেজ হিসেবে কনফিগার করতে হবে। এর জন্য আমাদের রুট ডিরেক্টরিতে একটি setup.py ফাইল প্রয়োজন, যেখানে যেকোনো এক্সটার্নাল প্যাকেজ ডিপেন্ডেন্সি উল্লেখ করা থাকে; সাথে আমাদের প্যাকেজের নামে একটি সাবডিরেক্টরি (এখানে আমরা এর নাম দেব trainer/ ); এবং এই সাবডিরেক্টরির ভেতরে একটি খালি __init__.py ফাইল।
প্রথমে, চলুন আমাদের setup.py ফাইলটি লিখি। ফাইলটি আমাদের ইনস্ট্যান্সে সেভ করার জন্য আমরা iPython-এর %%writefile ম্যাজিক ব্যবহার করছি। এখানে আমরা ৩টি এক্সটার্নাল লাইব্রেরি উল্লেখ করেছি যা আমরা আমাদের ট্রেনিং কোডে ব্যবহার করব: PyTorch, Scikit-learn, এবং Pandas।
%%writefile setup.py
from setuptools import find_packages
from setuptools import setup
REQUIRED_PACKAGES = ['torch>=1.5', 'scikit-learn>=0.20', 'pandas>=1.0']
setup(
name='trainer',
version='0.1',
install_requires=REQUIRED_PACKAGES,
packages=find_packages(),
include_package_data=True,
description='My training application package.'
)
এরপর চলুন আমাদের trainer/ ডিরেক্টরি এবং এর ভেতরে একটি খালি init.py ফাইল তৈরি করি। পাইথন এটিকে একটি প্যাকেজ হিসেবে শনাক্ত করতে এই ফাইলটি ব্যবহার করে:
!mkdir trainer
!touch trainer/__init__.py
এখন আমরা আমাদের প্রশিক্ষণ কার্যক্রমটি তৈরি করা শুরু করতে প্রস্তুত।
৪. ডেটাসেটটির প্রিভিউ দেখুন
এই ল্যাবের মূল লক্ষ্য হলো মডেল প্রশিক্ষণের জন্য ব্যবহৃত টুলিং, কিন্তু চলুন আমরা যে ডেটাসেটটি আমাদের মডেলকে বুঝতে শেখানোর জন্য ব্যবহার করব, সেটির উপর দ্রুত একবার চোখ বুলিয়ে নেওয়া যাক। আমরা BigQuery-তে উপলব্ধ ন্যাটিলিটি ডেটাসেটটি ব্যবহার করব। এতে বেশ কয়েক দশক ধরে মার্কিন যুক্তরাষ্ট্রের জন্ম সংক্রান্ত তথ্য রয়েছে। আমরা একটি শিশুর জন্মকালীন ওজন অনুমান করার জন্য ডেটাসেটটির কয়েকটি কলাম ব্যবহার করব। মূল ডেটাসেটটি বেশ বড়, এবং আমরা এর একটি উপসেট ব্যবহার করব যা আমরা আপনার জন্য একটি ক্লাউড স্টোরেজ বাকেটে উপলব্ধ করেছি।
ধাপ ১: BigQuery জন্মহার ডেটাসেট ডাউনলোড করা
চলুন, ক্লাউড স্টোরেজে আপনার জন্য উপলব্ধ করা ডেটাসেটের সংস্করণটি একটি পান্ডাস ডেটাফ্রেমে ডাউনলোড করে সেটির প্রিভিউ দেখি।
natality = pd.read_csv('https://storage.googleapis.com/ml-design-patterns/natality.csv')
natality.head()
এই ডেটাসেটটিতে প্রায় ১,০০,০০০ সারি রয়েছে। একটি শিশুর জন্মকালীন ওজন অনুমান করার জন্য আমরা ৫টি বৈশিষ্ট্য ব্যবহার করব: মা ও বাবার বয়স, গর্ভকালীন সপ্তাহ, পাউন্ডে মায়ের ওজন বৃদ্ধি এবং শিশুর লিঙ্গ (যা একটি বুলিয়ান হিসেবে উপস্থাপিত)।
৫. হাইপারপ্যারামিটার টিউনিং সহ ট্রেনিং জবটি সংজ্ঞায়িত করুন
আমরা আগে তৈরি করা trainer/ সাবডিরেক্টরির মধ্যে model.py নামের একটি ফাইলে আমাদের ট্রেনিং স্ক্রিপ্টটি লিখব। আমাদের ট্রেনিং জবটি এআই প্ল্যাটফর্ম ট্রেনিং-এ চলবে এবং এটি বেসিয়ান অপটিমাইজেশন ব্যবহার করে আমাদের মডেলের জন্য সর্বোত্তম হাইপারপ্যারামিটার খুঁজে বের করতে এআই প্ল্যাটফর্মের হাইপারপ্যারামিটার টিউনিং পরিষেবাটিও ব্যবহার করবে।
ধাপ ১: প্রশিক্ষণ স্ক্রিপ্টটি তৈরি করুন
প্রথমে, চলুন আমাদের ট্রেনিং স্ক্রিপ্ট সহ পাইথন ফাইলটি তৈরি করি। তারপর আমরা দেখব এর ভেতরে কী ঘটছে। এই %%writefile কমান্ডটি চালালে মডেল কোডটি একটি লোকাল পাইথন ফাইলে লেখা হবে:
%%writefile trainer/model.py
import argparse
import hypertune
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
import torch.optim as optim
from sklearn.utils import shuffle
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import normalize
def get_args():
"""Argument parser.
Returns:
Dictionary of arguments.
"""
parser = argparse.ArgumentParser(description='PyTorch MNIST')
parser.add_argument('--job-dir', # handled automatically by AI Platform
help='GCS location to write checkpoints and export ' \
'models')
parser.add_argument('--lr', # Specified in the config file
type=float,
default=0.01,
help='learning rate (default: 0.01)')
parser.add_argument('--momentum', # Specified in the config file
type=float,
default=0.5,
help='SGD momentum (default: 0.5)')
parser.add_argument('--hidden-layer-size', # Specified in the config file
type=int,
default=8,
help='hidden layer size')
args = parser.parse_args()
return args
def train_model(args):
# Get the data
natality = pd.read_csv('https://storage.googleapis.com/ml-design-patterns/natality.csv')
natality = natality.dropna()
natality = shuffle(natality, random_state = 2)
natality.head()
natality_labels = natality['weight_pounds']
natality = natality.drop(columns=['weight_pounds'])
train_size = int(len(natality) * 0.8)
traindata_natality = natality[:train_size]
trainlabels_natality = natality_labels[:train_size]
testdata_natality = natality[train_size:]
testlabels_natality = natality_labels[train_size:]
# Normalize and convert to PT tensors
normalized_train = normalize(np.array(traindata_natality.values), axis=0)
normalized_test = normalize(np.array(testdata_natality.values), axis=0)
train_x = torch.Tensor(normalized_train)
train_y = torch.Tensor(np.array(trainlabels_natality))
test_x = torch.Tensor(normalized_test)
test_y = torch.Tensor(np.array(testlabels_natality))
# Define our data loaders
train_dataset = torch.utils.data.TensorDataset(train_x, train_y)
train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=128, shuffle=True)
test_dataset = torch.utils.data.TensorDataset(test_x, test_y)
test_dataloader = torch.utils.data.DataLoader(test_dataset, batch_size=128, shuffle=False)
# Define the model, while tuning the size of our hidden layer
model = nn.Sequential(nn.Linear(len(train_x[0]), args.hidden_layer_size),
nn.ReLU(),
nn.Linear(args.hidden_layer_size, 1))
criterion = nn.MSELoss()
# Tune hyperparameters in our optimizer
optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=args.momentum)
epochs = 20
for e in range(epochs):
for batch_id, (data, label) in enumerate(train_dataloader):
optimizer.zero_grad()
y_pred = model(data)
label = label.view(-1,1)
loss = criterion(y_pred, label)
loss.backward()
optimizer.step()
val_mse = 0
num_batches = 0
# Evaluate accuracy on our test set
with torch.no_grad():
for i, (data, label) in enumerate(test_dataloader):
num_batches += 1
y_pred = model(data)
mse = criterion(y_pred, label.view(-1,1))
val_mse += mse.item()
avg_val_mse = (val_mse / num_batches)
# Report the metric we're optimizing for to AI Platform's HyperTune service
# In this example, we're mimizing error on our test set
hpt = hypertune.HyperTune()
hpt.report_hyperparameter_tuning_metric(
hyperparameter_metric_tag='val_mse',
metric_value=avg_val_mse,
global_step=epochs
)
def main():
args = get_args()
print('in main', args)
train_model(args)
if __name__ == '__main__':
main()
প্রশিক্ষণের কাজটি দুটি বিভাগ নিয়ে গঠিত, যেখানে সিংহভাগ কাজ সম্পন্ন হয়।
-
get_args(): এটি আমাদের ট্রেনিং জব তৈরি করার সময় পাস করা কমান্ড লাইন আর্গুমেন্টগুলোকে পার্স করে, সাথে সেই হাইপারপ্যারামিটারগুলোও পার্স করে যেগুলো আমরা AI Platform-কে অপটিমাইজ করতে চাই। এই উদাহরণে, আমাদের আর্গুমেন্টের তালিকায় শুধুমাত্র সেই হাইপারপ্যারামিটারগুলো অন্তর্ভুক্ত রয়েছে যেগুলো আমরা অপটিমাইজ করব – আমাদের মডেলের লার্নিং রেট, মোমেন্টাম এবং আমাদের হিডেন লেয়ারের নিউরনের সংখ্যা। -
train_model(): এখানে আমরা ডেটা একটি Pandas DataFrame-এ ডাউনলোড করি, সেটিকে নর্মালাইজ করি, PyTorch Tensor-এ রূপান্তর করি এবং তারপর আমাদের মডেল সংজ্ঞায়িত করি। আমাদের মডেল তৈরি করতে আমরা PyTorch-এরnn.SequentialAPI ব্যবহার করছি, যা আমাদের মডেলকে লেয়ারের একটি স্ট্যাক হিসাবে সংজ্ঞায়িত করতে দেয়:
model = nn.Sequential(nn.Linear(len(train_x[0]), args.hidden_layer_size),
nn.ReLU(),
nn.Linear(args.hidden_layer_size, 1))
লক্ষ্য করুন যে, আমাদের মডেলের হিডেন লেয়ারের সাইজ হার্ডকোড করার পরিবর্তে, আমরা এটিকে একটি হাইপারপ্যারামিটার বানাচ্ছি যা এআই প্ল্যাটফর্ম আমাদের জন্য টিউন করে দেবে। এ বিষয়ে পরবর্তী বিভাগে আরও আলোচনা করা হবে।
ধাপ ২: এআই প্ল্যাটফর্মের হাইপারপ্যারামিটার টিউনিং পরিষেবা ব্যবহার করা
প্রতিবার ম্যানুয়ালি বিভিন্ন হাইপারপ্যারামিটার ভ্যালু চেষ্টা করে এবং আমাদের মডেলকে পুনরায় প্রশিক্ষণ দেওয়ার পরিবর্তে, আমরা ক্লাউড এআই প্ল্যাটফর্মের হাইপারপ্যারামিটার অপ্টিমাইজেশন পরিষেবা ব্যবহার করব। যদি আমরা হাইপারপ্যারামিটার আর্গুমেন্ট সহ আমাদের ট্রেনিং জব সেট আপ করি, তাহলে এআই প্ল্যাটফর্ম আমাদের নির্দিষ্ট করা হাইপারপ্যারামিটারগুলির জন্য আদর্শ মান খুঁজে বের করতে বেসিয়ান অপ্টিমাইজেশন ব্যবহার করবে।
হাইপারপ্যারামিটার টিউনিং-এ, একটি একক ট্রায়াল হলো হাইপারপ্যারামিটার মানগুলির একটি নির্দিষ্ট সংমিশ্রণ সহ আমাদের মডেলের একটি প্রশিক্ষণ রান। আমরা কতগুলি ট্রায়াল চালাই তার উপর নির্ভর করে, এআই প্ল্যাটফর্ম ভবিষ্যতের জন্য নির্বাচিত হাইপারপ্যারামিটারগুলিকে অপ্টিমাইজ করতে সম্পন্ন ট্রায়ালগুলির ফলাফল ব্যবহার করবে। হাইপারপ্যারামিটার টিউনিং কনফিগার করার জন্য, আমাদের প্রশিক্ষণ কাজটি শুরু করার সময় একটি কনফিগারেশন ফাইল পাস করতে হবে, যেখানে আমরা যে হাইপারপ্যারামিটারগুলি অপ্টিমাইজ করছি তার প্রতিটির কিছু ডেটা থাকবে।
এরপরে, স্থানীয়ভাবে সেই কনফিগারেশন ফাইলটি তৈরি করুন:
%%writefile config.yaml
trainingInput:
hyperparameters:
goal: MINIMIZE
maxTrials: 10
maxParallelTrials: 5
hyperparameterMetricTag: val_mse
enableTrialEarlyStopping: TRUE
params:
- parameterName: lr
type: DOUBLE
minValue: 0.0001
maxValue: 0.1
scaleType: UNIT_LINEAR_SCALE
- parameterName: momentum
type: DOUBLE
minValue: 0.0
maxValue: 1.0
scaleType: UNIT_LINEAR_SCALE
- parameterName: hidden-layer-size
type: INTEGER
minValue: 8
maxValue: 32
scaleType: UNIT_LINEAR_SCALE
প্রতিটি হাইপারপ্যারামিটারের জন্য, আমরা এর ধরণ, যে মানের পরিসরে অনুসন্ধান করতে চাই এবং বিভিন্ন ট্রায়াল জুড়ে যে স্কেলে মান বৃদ্ধি করতে চাই, তা নির্দিষ্ট করে দিই।
জবটির শুরুতে আমরা যে মেট্রিকটির জন্য অপটিমাইজ করছি, সেটিও নির্দিষ্ট করে দিই। লক্ষ্য করুন যে, উপরে আমাদের train_model() ফাংশনের শেষে, প্রতিটি ট্রায়াল সম্পন্ন হওয়ার পর আমরা এই মেট্রিকটি AI Platform-কে রিপোর্ট করি। এখানে আমরা আমাদের মডেলের মিন স্কোয়ার্ড এরর (mean squared error) সর্বনিম্ন করছি, এবং তাই আমরা সেই হাইপারপ্যারামিটারগুলো ব্যবহার করতে চাই যা আমাদের মডেলের জন্য সর্বনিম্ন মিন স্কোয়ার্ড এরর প্রদান করে। এই মেট্রিকটির নাম ( val_mse ) সেই নামের সাথে মিলে যায় যা আমরা একটি ট্রায়ালের শেষে report_hyperparameter_tuning_metric() কল করার সময় এটিকে রিপোর্ট করতে ব্যবহার করি।
৬. এআই প্ল্যাটফর্মে একটি প্রশিক্ষণ কাজ চালান
এই অংশে আমরা এআই প্ল্যাটফর্মে হাইপারপ্যারামিটার টিউনিংয়ের মাধ্যমে আমাদের মডেল প্রশিক্ষণের কাজটি শুরু করব।
ধাপ ১: কিছু এনভায়রনমেন্ট ভেরিয়েবল নির্ধারণ করুন
চলুন প্রথমে কিছু এনভায়রনমেন্ট ভেরিয়েবল নির্ধারণ করে নিই যা আমরা আমাদের ট্রেনিং জবটি শুরু করতে ব্যবহার করব। আপনি যদি আপনার জবটি অন্য কোনো অঞ্চলে চালাতে চান, তাহলে নিচের REGION ভেরিয়েবলটি আপডেট করুন:
MAIN_TRAINER_MODULE = "trainer.model"
TRAIN_DIR = os.getcwd() + '/trainer'
JOB_DIR = BUCKET_URL + '/output'
REGION = "us-central1"
এআই প্ল্যাটফর্মের প্রতিটি ট্রেনিং জবের একটি অনন্য নাম থাকা উচিত। টাইমস্ট্যাম্প ব্যবহার করে আপনার জবের নামের জন্য একটি ভ্যারিয়েবল নির্ধারণ করতে নিম্নলিখিত কমান্ডটি চালান:
timestamp = str(datetime.datetime.now().time())
JOB_NAME = 'caip_training_' + str(int(time.time()))
ধাপ ২: প্রশিক্ষণের কাজটি শুরু করুন।
আমরা গুগল ক্লাউড সিএলআই (gcloud CLI) ব্যবহার করে আমাদের ট্রেনিং জবটি তৈরি করব। আমরা উপরে সংজ্ঞায়িত ভেরিয়েবলগুলো উল্লেখ করে এই কমান্ডটি সরাসরি আমাদের নোটবুকে চালাতে পারি:
!gcloud ai-platform jobs submit training $JOB_NAME \
--scale-tier basic \
--package-path $TRAIN_DIR \
--module-name $MAIN_TRAINER_MODULE \
--job-dir $JOB_DIR \
--region $REGION \
--runtime-version 2.1 \
--python-version 3.7 \
--config config.yaml
আপনার জবটি সঠিকভাবে তৈরি হয়ে থাকলে, লগগুলো নিরীক্ষণ করতে আপনার এআই প্ল্যাটফর্ম কনসোলের জবস বিভাগে যান।
ধাপ ৩: আপনার কাজ পর্যবেক্ষণ করুন
একবার আপনি কনসোলের জবস বিভাগে প্রবেশ করলে, বিস্তারিত দেখতে আপনার সদ্য শুরু করা জবটির উপর ক্লিক করুন:

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

ট্রায়ালগুলো সম্পন্ন হলে, আপনার অপটিমাইজেশন মেট্রিকের (এই ক্ষেত্রে val_mse ) প্রাপ্ত মান এখানে লগ করা হবে। কাজটি চলতে ১৫-২০ মিনিট সময় নেবে এবং কাজটি শেষ হলে ড্যাশবোর্ডটি দেখতে অনেকটা এইরকম হবে (সঠিক মান ভিন্ন হতে পারে):

সম্ভাব্য সমস্যা ডিবাগ করতে এবং আপনার কাজটি আরও বিস্তারিতভাবে নিরীক্ষণ করতে, কাজের বিবরণ পৃষ্ঠা থেকে 'লগ দেখুন' -এ ক্লিক করুন:

আপনার মডেল ট্রেনিং কোডের প্রতিটি print() স্টেটমেন্ট এখানে দেখা যাবে। যদি কোনো সমস্যা হয়, তবে আরও print স্টেটমেন্ট যোগ করে এবং একটি নতুন ট্রেনিং জব শুরু করে দেখুন।
আপনার ট্রেনিং জবটি সম্পন্ন হয়ে গেলে, সেই হাইপারপ্যারামিটারগুলো খুঁজে বের করুন যেগুলো সর্বনিম্ন val_mse দিয়েছে। আপনি এগুলো ব্যবহার করে আপনার মডেলের একটি চূড়ান্ত সংস্করণ ট্রেনিং ও এক্সপোর্ট করতে পারেন, অথবা অতিরিক্ত হাইপারপ্যারামিটার টিউনিং ট্রায়ালের মাধ্যমে আরেকটি ট্রেনিং জব শুরু করার জন্য নির্দেশিকা হিসেবে ব্যবহার করতে পারেন।
৭. পরিচ্ছন্নতা
আপনি যদি এই নোটবুকটি ব্যবহার করা চালিয়ে যেতে চান, তবে ব্যবহার না করার সময় এটি বন্ধ করে রাখার পরামর্শ দেওয়া হচ্ছে। আপনার ক্লাউড কনসোলের নোটবুকস UI থেকে, নোটবুকটি নির্বাচন করুন এবং তারপরে স্টপ (Stop ) নির্বাচন করুন।

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