এআই প্ল্যাটফর্ম নোটবুকের প্রোটোটাইপিং মডেল

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

এই ল্যাবে আপনাকে এআই প্ল্যাটফর্ম নোটবুকের বিভিন্ন টুল ব্যবহার করে আপনার ডেটা বিশ্লেষণ করতে এবং এমএল মডেলের প্রোটোটাইপ তৈরি করতে শেখানো হবে।

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

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

  • একটি এআই প্ল্যাটফর্ম নোটবুক ইনস্ট্যান্স তৈরি এবং কাস্টমাইজ করুন
  • AI প্ল্যাটফর্ম নোটবুক-এর সাথে সরাসরি সমন্বিত git-এর মাধ্যমে আপনার নোটবুকের কোড ট্র্যাক করুন।
  • আপনার নোটবুকের মধ্যে থাকা What-If টুলটি ব্যবহার করুন

গুগল ক্লাউডে এই ল্যাবটি চালানোর মোট খরচ প্রায় ১ ডলার । এআই প্ল্যাটফর্ম নোটবুকের মূল্য সংক্রান্ত সম্পূর্ণ বিবরণ এখানে পাওয়া যাবে।

২. একটি এআই প্ল্যাটফর্ম নোটবুক ইনস্ট্যান্স তৈরি করুন

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

ধাপ ২: কম্পিউট ইঞ্জিন এপিআই সক্রিয় করুন

Compute Engine- এ যান এবং যদি আগে থেকে সক্রিয় করা না থাকে তবে 'Enable' নির্বাচন করুন। আপনার নোটবুক ইনস্ট্যান্স তৈরি করার জন্য এটি প্রয়োজন হবে।

ধাপ ৩: একটি নোটবুক ইনস্ট্যান্স তৈরি করুন

আপনার ক্লাউড কনসোলের AI প্ল্যাটফর্ম নোটবুকস বিভাগে যান এবং নিউ ইনস্ট্যান্স-এ ক্লিক করুন। তারপর GPU ছাড়া সর্বশেষ TensorFlow 2 Enterprise ইনস্ট্যান্স টাইপটি নির্বাচন করুন:

9f2bb4dec1ba4f4f.png

আপনার ইনস্ট্যান্সটির একটি নাম দিন অথবা ডিফল্ট নামটি ব্যবহার করুন। এরপর আমরা কাস্টমাইজেশন অপশনগুলো দেখব। কাস্টমাইজ বাটনে ক্লিক করুন:

63be602ba45ca7c9.png

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

27101d232f765a17.png

আমরা কোনো জিপিইউ (GPU) যোগ করব না এবং বুট ডিস্ক, নেটওয়ার্কিং ও পারমিশনের জন্য ডিফল্ট সেটিংস ব্যবহার করব। আপনার ইনস্ট্যান্স তৈরি করতে 'Create' নির্বাচন করুন। এটি সম্পন্ন হতে কয়েক মিনিট সময় লাগবে।

ইনস্ট্যান্সটি তৈরি হয়ে গেলে আপনি নোটবুক UI-তে এর পাশে একটি সবুজ টিক চিহ্ন দেখতে পাবেন। আপনার ইনস্ট্যান্সটি খুলতে এবং প্রোটোটাইপিং শুরু করতে 'Open JupyterLab' নির্বাচন করুন:

3598f414887ea9a8.png

ইনস্ট্যান্সটি খোলার পর, codelab নামে একটি নতুন ডিরেক্টরি তৈরি করুন। এই ল্যাব জুড়ে আমরা এই ডিরেক্টরিটি থেকেই কাজ করব:

c16a821546acd92.png

আপনার সদ্য তৈরি করা কোডল্যাব ডিরেক্টরিতে ডাবল-ক্লিক করে প্রবেশ করুন এবং তারপরে লঞ্চার থেকে পাইথন ৩ নোটবুক নির্বাচন করুন:

4390b1614ae8eae4.png

নোটবুকটির নাম পরিবর্তন করে demo.ipynb রাখুন, অথবা আপনার পছন্দমতো যেকোনো নাম দিন।

ধাপ ৪: পাইথন প্যাকেজগুলো ইম্পোর্ট করুন

নোটবুকে একটি নতুন সেল তৈরি করুন এবং এই কোডল্যাবে আমরা যে লাইব্রেরিগুলো ব্যবহার করব সেগুলো ইম্পোর্ট করুন:

import pandas as pd
import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

import numpy as np
import json

from sklearn.model_selection import train_test_split
from sklearn.utils import shuffle
from google.cloud import bigquery
from witwidget.notebook.visualization import WitWidget, WitConfigBuilder

৩. BigQuery ডেটা আপনার নোটবুকের সাথে সংযুক্ত করুন

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

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

ধাপ ১: BigQuery ডেটা আমাদের নোটবুকে ডাউনলোড করুন

আমরা BigQuery-এর পাইথন ক্লায়েন্ট লাইব্রেরি ব্যবহার করে ডেটাগুলোকে একটি Pandas DataFrame-এ ডাউনলোড করব। মূল ডেটাসেটটির আকার ২১ জিবি এবং এতে ১২৩ মিলিয়ন সারি রয়েছে। কাজটি সহজ রাখার জন্য আমরা ডেটাসেটটি থেকে মাত্র ১০,০০০টি সারি ব্যবহার করব।

নিম্নলিখিত কোড ব্যবহার করে কোয়েরিটি তৈরি করুন এবং ফলাফলস্বরূপ প্রাপ্ত ডেটাফ্রেমটির প্রিভিউ দেখুন। এখানে আমরা মূল ডেটাসেট থেকে ৪টি ফিচার নিচ্ছি, সাথে থাকছে শিশুর ওজন (যা আমাদের মডেল প্রেডিক্ট করবে)। ডেটাসেটটি অনেক বছর আগের হলেও, এই মডেলের জন্য আমরা শুধুমাত্র ২০০০ সালের পরের ডেটা ব্যবহার করব:

query="""
SELECT
  weight_pounds,
  is_male,
  mother_age,
  plurality,
  gestation_weeks
FROM
  publicdata.samples.natality
WHERE year > 2000
LIMIT 10000
"""
df = bigquery.Client().query(query).to_dataframe()
df.head()

আমাদের ডেটাসেটের সংখ্যাসূচক বৈশিষ্ট্যগুলির সারাংশ পেতে, চালান:

df.describe()

এটি আমাদের সংখ্যাসূচক কলামগুলোর গড়, আদর্শ বিচ্যুতি, সর্বনিম্ন মান এবং অন্যান্য মেট্রিকগুলো দেখায়। সবশেষে, চলুন শিশুর লিঙ্গ নির্দেশকারী আমাদের বুলিয়ান কলামটির কিছু ডেটা সংগ্রহ করা যাক। আমরা Pandas-এর value_counts মেথড ব্যবহার করে এটি করতে পারি:

df['is_male'].value_counts()

দেখে মনে হচ্ছে ডেটাসেটটি লিঙ্গভেদে প্রায় ৫০/৫০ ভারসাম্যপূর্ণ।

ধাপ ২: প্রশিক্ষণের জন্য ডেটাসেট প্রস্তুত করুন।

এখন যেহেতু আমরা ডেটাসেটটি একটি Pandas DataFrame হিসেবে আমাদের নোটবুকে ডাউনলোড করে ফেলেছি, আমরা কিছু প্রি-প্রসেসিং করে এটিকে ট্রেনিং এবং টেস্ট সেটে ভাগ করতে পারি।

প্রথমে, ডেটাসেট থেকে নাল (null) মানযুক্ত সারিগুলো বাদ দিয়ে ডেটা শাফেল (shuffle) করা যাক:

df = df.dropna()
df = shuffle(df, random_state=2)

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

labels = df['weight_pounds']
data = df.drop(columns=['weight_pounds'])
data['is_male'] = data['is_male'].astype(int)

এখন যদি আপনি data.head() রান করে আমাদের ডেটাসেটটি প্রিভিউ করেন, তাহলে আপনি প্রশিক্ষণের জন্য ব্যবহৃত চারটি বৈশিষ্ট্য দেখতে পাবেন।

৪. গিট চালু করুন

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

ধাপ ১: একটি গিট রিপোজিটরি শুরু করুন

আপনার কোডল্যাব ডিরেক্টরি থেকে, JupyterLab-এর উপরের মেনু বার থেকে Git এবং তারপর Init নির্বাচন করুন:

d9f1729358f18e58.png

যখন এই ডিরেক্টরিটিকে একটি গিট রিপো বানাতে চান কিনা জিজ্ঞাসা করা হবে, তখন 'হ্যাঁ' নির্বাচন করুন। এরপর আপনার ফাইল ও কমিটগুলোর অবস্থা দেখতে বাম সাইডবারে থাকা গিট আইকনটি নির্বাচন করুন:

1648d6828f11a6db.png

ধাপ ২: আপনার প্রথম কমিটটি করুন।

এই UI-তে, আপনি একটি কমিটে ফাইল যোগ করতে, ফাইলের পার্থক্য দেখতে (আমরা পরে এ বিষয়ে আলোচনা করব), এবং আপনার পরিবর্তনগুলো কমিট করতে পারবেন। চলুন, এইমাত্র যোগ করা নোটবুক ফাইলটি কমিট করার মাধ্যমে শুরু করা যাক।

কমিটের জন্য আপনার demo.ipynb নোটবুক ফাইলটি স্টেজ করতে এর পাশের বক্সে টিক দিন (আপনি .ipynb_checkpoints/ ডিরেক্টরিটি উপেক্ষা করতে পারেন)। টেক্সট বক্সে একটি কমিট মেসেজ লিখুন এবং তারপর আপনার পরিবর্তনগুলো কমিট করতে টিক চিহ্নে ক্লিক করুন:

fe7366522a3a268f.png

অনুরোধ করা হলে আপনার নাম ও ইমেল লিখুন। তারপর আপনার প্রথম কমিটটি দেখতে হিস্ট্রি ট্যাবে ফিরে যান:

d03567c3592afb77.png

উল্লেখ্য যে, এই ল্যাবটি প্রকাশিত হওয়ার পর আপডেটের কারণে স্ক্রিনশটগুলো আপনার UI-এর সাথে হুবহু নাও মিলতে পারে।

৫. একটি টেনসরফ্লো মডেল তৈরি ও প্রশিক্ষণ দিন

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

ধাপ ১: আপনার ডেটাকে ট্রেন এবং টেস্ট সেটে ভাগ করুন।

আমাদের মডেল তৈরি করার আগে ডেটা ভাগ করার জন্য আমরা Scikit Learn-এর train_test_split ইউটিলিটি ব্যবহার করব:

x,y = data,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)

এখন আমরা আমাদের টেনসরফ্লো মডেল তৈরি করতে প্রস্তুত!

ধাপ ২: টেনসরফ্লো মডেলটি তৈরি এবং প্রশিক্ষণ দিন

আমরা এই মডেলটি tf.keras Sequential মডেল এপিআই ব্যবহার করে তৈরি করব, যা আমাদের মডেলকে লেয়ারের একটি স্ট্যাক হিসাবে সংজ্ঞায়িত করতে দেয়। আমাদের মডেল তৈরি করার জন্য প্রয়োজনীয় সমস্ত কোড এখানে রয়েছে:

model = Sequential([
    Dense(64, activation='relu', input_shape=(len(x_train.iloc[0]),)),
    Dense(32, activation='relu'),
    Dense(1)]
)

এরপর আমরা আমাদের মডেলটি কম্পাইল করব যাতে আমরা এটিকে ট্রেইন করতে পারি। এখানে আমরা মডেলের অপটিমাইজার, লস ফাংশন এবং যেসব মেট্রিক্স আমরা ট্রেইনিংয়ের সময় মডেলটিকে লগ করতে দেখতে চাই, তা বেছে নেব। যেহেতু এটি একটি রিগ্রেশন মডেল (যা একটি সাংখ্যিক মান প্রেডিক্ট করে), তাই আমরা আমাদের মেট্রিক্স হিসেবে অ্যাকুরেসির পরিবর্তে মিন স্কোয়ার্ড এরর ব্যবহার করছি:

model.compile(optimizer=tf.keras.optimizers.RMSprop(),
              loss=tf.keras.losses.MeanSquaredError(),
              metrics=['mae', 'mse'])

আপনার মডেলের প্রতিটি লেয়ারের গঠন এবং প্রশিক্ষণযোগ্য প্যারামিটারের সংখ্যা দেখতে, আপনি Keras-এর সুবিধাজনক model.summary() ফাংশনটি ব্যবহার করতে পারেন।

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

model.fit(x_train, y_train, epochs=10, validation_split=0.1)

ধাপ ৩: পরীক্ষার উদাহরণগুলোর উপর ভিত্তি করে পূর্বাভাস তৈরি করুন

আমাদের মডেলটি কেমন কাজ করছে তা দেখার জন্য, চলুন আমাদের টেস্ট ডেটাসেটের প্রথম ১০টি উদাহরণের উপর কিছু পরীক্ষামূলক প্রেডিকশন তৈরি করি।

num_examples = 10
predictions = model.predict(x_test[:num_examples])

এবং তারপরে আমরা আমাদের মডেলের পূর্বাভাসগুলিকে প্রকৃত মানের সাথে তুলনা করে পুনরাবৃত্তি করব:

for i in range(num_examples):
    print('Predicted val: ', predictions[i][0])
    print('Actual val: ',y_test.iloc[i])
    print()

ধাপ ৪: git diff ব্যবহার করুন এবং আপনার পরিবর্তনগুলো কমিট করুন।

এখন যেহেতু আপনি নোটবুকটিতে কিছু পরিবর্তন করেছেন, আপনি নোটবুকস গিট UI-তে উপলব্ধ git diff ফিচারটি ব্যবহার করে দেখতে পারেন। demo.ipynb নোটবুকটি এখন UI-এর "Changed" সেকশনের অধীনে থাকা উচিত। ফাইলনেমটির উপর মাউস রাখুন এবং diff আইকনটিতে ক্লিক করুন:

a370facb3632fb32.png

এর মাধ্যমে আপনি আপনার পরিবর্তনগুলোর একটি পার্থক্য দেখতে পাবেন, যেমনটি নিচে দেখানো হলো:

461c502bd3ab910e.png

এবার আমরা টার্মিনাল ব্যবহার করে কমান্ড লাইনের মাধ্যমে আমাদের পরিবর্তনগুলো কমিট করব। JupyterLab-এর উপরের মেনু বারে থাকা Git মেনু থেকে, ‘Git Command in Terminal’ নির্বাচন করুন। নিচের কমান্ডগুলো চালানোর সময় যদি আপনার বাম সাইডবারের git ট্যাবটি খোলা থাকে, তাহলে আপনি git UI-তে আপনার পরিবর্তনগুলো প্রতিফলিত হতে দেখতে পাবেন।

আপনার নতুন টার্মিনাল ইনস্ট্যান্সে, কমিটের জন্য আপনার নোটবুক ফাইলটি প্রস্তুত করতে নিম্নলিখিত কমান্ডটি চালান:

git add demo.ipynb

এবং তারপরে আপনার পরিবর্তনগুলি কমিট করতে নিম্নলিখিতটি চালান (আপনি আপনার পছন্দসই যেকোনো কমিট বার্তা ব্যবহার করতে পারেন):

git commit -m "Build and train TF model"

তাহলে আপনি ইতিহাসে আপনার সর্বশেষ কমিটটি দেখতে পাবেন:

a4b44045e97cb7a7.png

৬. আপনার নোটবুক থেকে সরাসরি হোয়াট-ইফ টুলটি ব্যবহার করুন।

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

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

ধাপ ১: হোয়াট-ইফ টুলের জন্য ডেটা প্রস্তুত করুন।

What-If Tool-এর সর্বোত্তম ব্যবহার করার জন্য, আমরা আমাদের টেস্ট সেট থেকে উদাহরণগুলো পাঠাবো এবং সাথে সেগুলোর গ্রাউন্ড ট্রুথ লেবেলও ( y_test ) পাঠাবো। এর মাধ্যমে আমরা আমাদের মডেলের প্রেডিকশনের সাথে গ্রাউন্ড ট্রুথের তুলনা করতে পারবো। আমাদের টেস্ট উদাহরণ এবং তাদের লেবেল দিয়ে একটি নতুন ডেটাফ্রেম তৈরি করতে নিচের কোড লাইনটি রান করুন:

wit_data = pd.concat([x_test, y_test], axis=1)

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

def custom_predict(examples_to_infer):
    preds = model.predict(examples_to_infer)
    return preds

ধাপ ২: হোয়াট-ইফ টুলটি ইনস্ট্যানশিয়েট করুন

আমরা এইমাত্র তৈরি করা সংযুক্ত টেস্ট ডেটাসেট ও গ্রাউন্ড ট্রুথ লেবেল থেকে ৫০০টি উদাহরণ পাস করে হোয়াট-ইফ টুলটি ইনস্ট্যানশিয়েট করব। টুলটি সেট আপ করার জন্য আমরা WitConfigBuilder এর একটি ইনস্ট্যান্স তৈরি করি এবং এতে আমাদের ডেটা, উপরে সংজ্ঞায়িত কাস্টম প্রেডিক্ট ফাংশন, আমাদের টার্গেট (যা আমরা প্রেডিক্ট করছি) এবং মডেল টাইপ পাস করি।

config_builder = (WitConfigBuilder(wit_data[:500].values.tolist(), data.columns.tolist() + ['weight_pounds'])
  .set_custom_predict_fn(custom_predict)
  .set_target_feature('weight_pounds')
  .set_model_type('regression'))
WitWidget(config_builder, height=800)

হোয়াট-ইফ টুলটি লোড হলে আপনি এইরকম কিছু দেখতে পাবেন:

fcdc1cb7ed8e364e.png

এক্স-অক্ষে, আপনি মডেলের পূর্বাভাসিত ওজনের মান, weight_pounds অনুসারে আপনার পরীক্ষার ডেটা পয়েন্টগুলো ছড়িয়ে থাকতে দেখতে পাবেন।

ধাপ ৩: হোয়াট-ইফ টুলের সাহায্যে মডেলের আচরণ অন্বেষণ করুন।

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

2ba944f16240ff4b.png

বামদিকে আপনি আপনার নির্বাচিত ডেটা পয়েন্টের ফিচার ভ্যালুগুলো দেখতে পাবেন। আপনি সেই ডেটা পয়েন্টের গ্রাউন্ড ট্রুথ লেবেলের সাথে মডেল দ্বারা পূর্বাভাসিত মানটিও তুলনা করতে পারেন। বাম সাইডবারে, আপনি ফিচার ভ্যালুগুলো পরিবর্তন করতে পারেন এবং এই পরিবর্তনটি আপনার মডেলে কী প্রভাব ফেলেছে তা দেখতে মডেলের পূর্বাভাস পুনরায় চালাতে পারেন। উদাহরণস্বরূপ, আমরা এই ডেটা পয়েন্টটির উপর ডাবল-ক্লিক করে এবং পূর্বাভাস পুনরায় চালিয়ে এর জন্য gestation_weeks পরিবর্তন করে ৩০ করতে পারি:

aaa6a937c66758cf.png

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

cd2ce527a9044e7b.png

এরপর, বামদিকের 'Partial dependence plots' বাটনটি চেক করুন। এটি দেখায় যে প্রতিটি ফিচার কীভাবে মডেলের পূর্বাভাসকে প্রভাবিত করে। উদাহরণস্বরূপ, গর্ভকালীন সময় বাড়ার সাথে সাথে আমাদের মডেল দ্বারা পূর্বাভাসিত শিশুর ওজনও বৃদ্ধি পায়:

1fec2a64fb03f432.png

হোয়াট-ইফ টুল ব্যবহার করে আরও অনুসন্ধানের ধারণা পেতে এই বিভাগের শুরুতে দেওয়া লিঙ্কগুলো দেখুন।

৭. ঐচ্ছিক: আপনার লোকাল গিট রিপোকে গিটহাবের সাথে সংযুক্ত করুন।

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

ধাপ ১: গিটহাবে একটি নতুন রিপো তৈরি করুন

আপনার গিটহাব অ্যাকাউন্টে একটি নতুন রিপোজিটরি তৈরি করুন। এটির একটি নাম ও বিবরণ দিন, এটিকে পাবলিক করতে চান কিনা তা স্থির করুন এবং 'Create repository' নির্বাচন করুন (এর জন্য README ফাইল দিয়ে শুরু করার প্রয়োজন নেই)। পরবর্তী পৃষ্ঠায়, কমান্ড লাইন থেকে একটি বিদ্যমান রিপোজিটরি পুশ করার নির্দেশাবলী অনুসরণ করুন।

একটি টার্মিনাল উইন্ডো খুলুন এবং আপনার নতুন রিপোজিটরিটি রিমোট হিসেবে যুক্ত করুন। নিচের রিপো URL-এ username জায়গায় আপনার GitHub ইউজারনেম এবং your-repo জায়গায় আপনার সদ্য তৈরি করা রিপোজিটরিটির নাম বসান:

git remote add origin git@github.com:username/your-repo.git

ধাপ ২: আপনার নোটবুক ইনস্ট্যান্সে গিটহাবে প্রমাণীকরণ করুন।

এরপর আপনাকে আপনার নোটবুক ইনস্ট্যান্সের ভেতর থেকে গিটহাবে প্রমাণীকরণ করতে হবে। গিটহাবে আপনার দ্বি-স্তরীয় প্রমাণীকরণ (two-factor authentication) চালু আছে কি না, তার ওপর নির্ভর করে এই প্রক্রিয়াটি ভিন্ন হয়।

কোথা থেকে শুরু করবেন তা যদি নিশ্চিত না হন, তাহলে একটি SSH কী তৈরি করতে GitHub ডকুমেন্টেশনের ধাপগুলো অনুসরণ করুন এবং তারপর নতুন কী-টি GitHub-এ যোগ করুন

ধাপ ৩: নিশ্চিত করুন যে আপনি আপনার গিটহাব রিপোটি সঠিকভাবে লিঙ্ক করেছেন।

সবকিছু সঠিকভাবে সেট আপ করা হয়েছে কিনা তা নিশ্চিত করতে, আপনার টার্মিনালে git remote -v চালান। আপনি আপনার নতুন রিপোজিটরিটি একটি রিমোট হিসেবে তালিকাভুক্ত দেখতে পাবেন। একবার আপনি আপনার গিটহাব রিপোর ইউআরএল দেখতে পেলে এবং আপনার নোটবুক থেকে গিটহাবে প্রমাণীকরণ সম্পন্ন করলে, আপনি আপনার নোটবুক ইনস্ট্যান্স থেকে সরাসরি গিটহাবে পুশ করার জন্য প্রস্তুত।

আপনার লোকাল নোটবুক গিট রিপোকে আপনার নতুন তৈরি করা গিটহাব রিপোর সাথে সিঙ্ক করতে, গিট সাইডবারের উপরে থাকা ক্লাউড আপলোড বোতামটিতে ক্লিক করুন:

eec001587bb9cfb1.png

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

নোটবুকস গিট UI-এর হিস্ট্রি ট্যাবে আপনি দেখতে পারেন যে আপনার লোকাল কমিটগুলো গিটহাবের সাথে সিঙ্ক হয়েছে কিনা। এই উদাহরণে, origin/master হলো গিটহাবে থাকা আমাদের রিপো:

2c3d1eb7cf95c24e.png

যখনই আপনি নতুন কমিট করবেন, সেই পরিবর্তনগুলো আপনার গিটহাব রিপোতে পুশ করার জন্য শুধু ক্লাউড আপলোড বাটনটিতে আবার ক্লিক করুন।

৮. অভিনন্দন!

আপনি এই ল্যাবে অনেক কাজ করেছেন 👏👏👏

সংক্ষেপে বলতে গেলে, আপনি শিখেছেন কীভাবে:

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

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

আপনি যদি এই নোটবুকটি ব্যবহার করা চালিয়ে যেতে চান, তবে ব্যবহার না করার সময় এটি বন্ধ করে রাখার পরামর্শ দেওয়া হচ্ছে। আপনার ক্লাউড কনসোলের নোটবুকস UI থেকে, নোটবুকটি নির্বাচন করুন এবং তারপরে স্টপ (Stop ) নির্বাচন করুন।

ba727f9a0aefbc30.png

আপনি যদি এই ল্যাবে তৈরি করা সমস্ত রিসোর্স মুছে ফেলতে চান, তাহলে নোটবুক ইনস্ট্যান্সটি বন্ধ করার পরিবর্তে সরাসরি ডিলিট করে দিন।

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