1. সংক্ষিপ্ত বিবরণ
এই ল্যাবে, আপনি GCP-এর উপর একটি সম্পূর্ণ ML ওয়ার্কফ্লো দেখবেন। একটি ক্লাউড AI প্ল্যাটফর্ম নোটবুক পরিবেশ থেকে, আপনি একটি BigQuery পাবলিক ডেটাসেট থেকে ডেটা গ্রহণ করবেন, একটি XGBoost মডেল তৈরি এবং প্রশিক্ষণ দেবেন এবং ভবিষ্যদ্বাণীর জন্য মডেলটিকে AI প্ল্যাটফর্মে স্থাপন করবেন।
তুমি যা শিখো
তুমি শিখবে কিভাবে:
- AI প্ল্যাটফর্ম নোটবুকগুলিতে একটি BigQuery ডেটাসেট গ্রহণ এবং বিশ্লেষণ করুন
- একটি XGBoost মডেল তৈরি করুন
- XGBoost মডেলটি AI প্ল্যাটফর্মে স্থাপন করুন এবং পূর্বাভাস পান
গুগল ক্লাউডে এই ল্যাবটি পরিচালনা করতে মোট খরচ প্রায় $1 ।
2. আপনার পরিবেশ সেটআপ করুন
এই কোডল্যাবটি চালানোর জন্য আপনার বিলিং সক্ষম একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্পের প্রয়োজন হবে। একটি প্রকল্প তৈরি করতে, এখানে নির্দেশাবলী অনুসরণ করুন।
ধাপ ১: ক্লাউড এআই প্ল্যাটফর্ম মডেল এপিআই সক্ষম করুন
আপনার ক্লাউড কনসোলের AI প্ল্যাটফর্ম মডেল বিভাগে যান এবং যদি এটি ইতিমধ্যেই সক্ষম না থাকে তবে সক্ষম করুন-এ ক্লিক করুন।

ধাপ ২: কম্পিউট ইঞ্জিন API সক্ষম করুন
কম্পিউট ইঞ্জিনে নেভিগেট করুন এবং যদি এটি ইতিমধ্যেই সক্রিয় না থাকে তবে সক্ষম করুন নির্বাচন করুন। আপনার নোটবুক ইনস্ট্যান্স তৈরি করতে আপনার এটির প্রয়োজন হবে।
ধাপ ৩: একটি AI প্ল্যাটফর্ম নোটবুক ইনস্ট্যান্স তৈরি করুন
আপনার ক্লাউড কনসোলের AI প্ল্যাটফর্ম নোটবুক বিভাগে যান এবং New Instance এ ক্লিক করুন। তারপর সর্বশেষ Python ইনস্ট্যান্স টাইপ নির্বাচন করুন:

ডিফল্ট বিকল্পগুলি ব্যবহার করুন এবং তারপর Create এ ক্লিক করুন। একবার ইনস্ট্যান্স তৈরি হয়ে গেলে, JupyterLab খুলুন নির্বাচন করুন:
ধাপ ৪: XGBoost ইনস্টল করুন
আপনার JupyterLab ইনস্ট্যান্সটি খোলা হয়ে গেলে, আপনাকে XGBoost প্যাকেজটি যোগ করতে হবে।
এটি করার জন্য, লঞ্চার থেকে টার্মিনাল নির্বাচন করুন:

তারপর AI প্ল্যাটফর্ম দ্বারা সমর্থিত XGBoost এর সর্বশেষ সংস্করণটি ইনস্টল করতে নিম্নলিখিতটি চালান:
pip3 install xgboost==0.82
এটি সম্পন্ন হওয়ার পর, লঞ্চার থেকে একটি Python 3 Notebook ইনস্ট্যান্স খুলুন। আপনি আপনার নোটবুকে শুরু করার জন্য প্রস্তুত!
ধাপ ৫: পাইথন প্যাকেজ আমদানি করুন
আপনার নোটবুকের প্রথম ঘরে, নিম্নলিখিত আমদানিগুলি যোগ করুন এবং সেলটি চালান। আপনি উপরের মেনুতে ডান তীর বোতাম টিপে অথবা কমান্ড-এন্টার টিপে এটি চালাতে পারেন:
import pandas as pd
import xgboost as xgb
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.utils import shuffle
from google.cloud import bigquery
৩. BigQuery ডেটাসেট অন্বেষণ করা
BigQuery আপনার অনুসন্ধানের জন্য অনেক ডেটাসেট সর্বজনীনভাবে উপলব্ধ করেছে। এই ল্যাবের জন্য, আমরা ন্যাটালিটি ডেটাসেট ব্যবহার করব। এতে ৪০ বছর ধরে মার্কিন যুক্তরাষ্ট্রে প্রায় প্রতিটি জন্মের তথ্য রয়েছে, যার মধ্যে শিশুর জন্মের ওজন এবং শিশুর বাবা-মায়ের জনসংখ্যার তথ্য অন্তর্ভুক্ত রয়েছে। আমরা একটি শিশুর জন্মের ওজন পূর্বাভাস দেওয়ার জন্য বৈশিষ্ট্যগুলির একটি উপসেট ব্যবহার করব।
ধাপ ১: আমাদের নোটবুকে BigQuery ডেটা ডাউনলোড করুন।
আমরা Pandas DataFrame-এ ডেটা ডাউনলোড করার জন্য BigQuery-এর জন্য Python ক্লায়েন্ট লাইব্রেরি ব্যবহার করব। মূল ডেটাসেটটি 21GB এবং এতে 123M সারি রয়েছে। সহজভাবে বলতে গেলে, আমরা ডেটাসেট থেকে মাত্র 10,000 সারি ব্যবহার করব।
কোয়েরিটি তৈরি করুন এবং নিম্নলিখিত কোডটি ব্যবহার করে ফলাফলের ডেটাফ্রেমের পূর্বরূপ দেখুন। এখানে আমরা মূল ডেটাসেট থেকে ৪টি বৈশিষ্ট্য পাচ্ছি, সাথে শিশুর ওজন (যা আমাদের মডেল ভবিষ্যদ্বাণী করবে)। ডেটাসেটটি অনেক বছর আগের, তবে এই মডেলের জন্য আমরা শুধুমাত্র ২০০০ সালের পরের ডেটা ব্যবহার করব:
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()
এটি আমাদের সংখ্যাসূচক কলামের গড়, আদর্শ বিচ্যুতি, সর্বনিম্ন এবং অন্যান্য মেট্রিক্স দেখায়। অবশেষে, আসুন আমাদের বুলিয়ান কলামের কিছু তথ্য পাই যা শিশুর লিঙ্গ নির্দেশ করে। আমরা পান্ডাসের value_counts পদ্ধতি ব্যবহার করে এটি করতে পারি:
df['is_male'].value_counts()
দেখে মনে হচ্ছে ডেটাসেটটি লিঙ্গ অনুসারে প্রায় ৫০/৫০ ভারসাম্যপূর্ণ।
৪. প্রশিক্ষণের জন্য তথ্য প্রস্তুত করুন
এই বিভাগে, আমরা আমাদের মডেলকে প্রশিক্ষণের জন্য প্রস্তুত করার জন্য ডেটাগুলিকে ট্রেন এবং টেস্ট সেটে ভাগ করব।
ধাপ ১: লেবেল কলামটি বের করুন
প্রথমে ডেটাসেট থেকে শূন্য মান সহ সারিগুলি বাদ দিন এবং ডেটা এলোমেলো করুন:
df = df.dropna()
df = shuffle(df, random_state=2)
এরপর, লেবেল কলামটি একটি পৃথক ভেরিয়েবলে এক্সট্র্যাক্ট করুন এবং শুধুমাত্র আমাদের বৈশিষ্ট্যগুলি সহ একটি ডেটাফ্রেম তৈরি করুন:
labels = df['weight_pounds']
data = df.drop(columns=['weight_pounds'])
এখন যদি আপনি data.head() চালিয়ে আমাদের ডেটাসেটের প্রিভিউ দেখেন, তাহলে আপনি প্রশিক্ষণের জন্য আমরা যে চারটি বৈশিষ্ট্য ব্যবহার করব তা দেখতে পাবেন।
ধাপ ২: শ্রেণীগত বৈশিষ্ট্যগুলিকে পূর্ণসংখ্যায় রূপান্তর করুন
যেহেতু XGBoost-এর জন্য সমস্ত ডেটা সংখ্যাসূচক হতে হবে, তাই আমাদের is_male কলামে ডেটা উপস্থাপনের পদ্ধতি পরিবর্তন করতে হবে, যা বর্তমানে True / False স্ট্রিং। আমরা কেবল সেই কলামের ধরণ পরিবর্তন করে এটি করতে পারি:
data['is_male'] = data['is_male'].astype(int)
ধাপ ৩: ডেটা ট্রেন এবং টেস্ট সেটে বিভক্ত করুন
আমরা Scikit Learn এর train_test_split ইউটিলিটি ব্যবহার করব যা আমরা নোটবুকের শুরুতে আমদানি করেছিলাম আমাদের ডেটা ট্রেন এবং টেস্ট সেটে বিভক্ত করার জন্য:
x,y = data,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)
এখন আমরা আমাদের মডেল তৈরি এবং প্রশিক্ষণের জন্য প্রস্তুত!
৫. একটি দ্রুত XGBoost প্রাইমার
XGBoost হল একটি মেশিন লার্নিং ফ্রেমওয়ার্ক যা ভবিষ্যদ্বাণীমূলক মডেল তৈরি করতে ডিসিশন ট্রি এবং গ্রেডিয়েন্ট বুস্টিং ব্যবহার করে। এটি একটি গাছের বিভিন্ন লিফ নোডের সাথে সম্পর্কিত স্কোরের উপর ভিত্তি করে একাধিক ডিসিশন ট্রি একত্রিত করে কাজ করে।
নীচের চিত্রটি একটি মডেলের জন্য একটি এনসেম্বল ট্রি নেটওয়ার্কের সরলীকৃত ভিজ্যুয়ালাইজেশন যা মূল্যায়ন করে যে কেউ একটি নির্দিষ্ট কম্পিউটার গেম পছন্দ করবে কিনা (এটি XGBoost ডক্স থেকে নেওয়া):

এই মডেলের জন্য আমরা কেন XGBoost ব্যবহার করছি? যদিও ঐতিহ্যবাহী নিউরাল নেটওয়ার্কগুলি ছবি এবং টেক্সটের মতো অসংগঠিত ডেটাতে সবচেয়ে ভালো পারফর্ম করে বলে প্রমাণিত হয়েছে, ডিসিশন ট্রিগুলি প্রায়শই এই কোডল্যাবে আমরা যে মর্টগেজ ডেটাসেট ব্যবহার করব তার মতো স্ট্রাকচার্ড ডেটাতে অত্যন্ত ভালো পারফর্ম করে।
৬. একটি XGBoost মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং মূল্যায়ন করুন
ধাপ ১: XGBoost মডেলটি সংজ্ঞায়িত করুন এবং প্রশিক্ষণ দিন
XGBoost-এ একটি মডেল তৈরি করা সহজ। মডেল তৈরি করতে আমরা XGBRegressor ক্লাস ব্যবহার করব, এবং আমাদের নির্দিষ্ট কাজের জন্য সঠিক objective প্যারামিটারটি পাস করতে হবে। এখানে আমরা একটি রিগ্রেশন মডেল ব্যবহার করছি কারণ আমরা একটি সংখ্যাসূচক মান (শিশুর ওজন) পূর্বাভাস দিচ্ছি। যদি আমরা পরিবর্তে আমাদের ডেটা ব্যবহার করে নির্ধারণ করতাম যে একটি শিশুর ওজন 6 পাউন্ডের বেশি নাকি কম, তাহলে আমরা একটি শ্রেণিবিন্যাস মডেল ব্যবহার করতাম।
এই ক্ষেত্রে আমরা আমাদের মডেলের উদ্দেশ্য হিসেবে reg:squarederror ব্যবহার করব।
নিম্নলিখিত কোডটি একটি XGBoost মডেল তৈরি করবে:
model = xgb.XGBRegressor(
objective='reg:linear'
)
আপনি মডেলটিকে এক লাইন কোড দিয়ে প্রশিক্ষণ দিতে পারেন, fit() পদ্ধতিটি কল করে এবং প্রশিক্ষণ ডেটা এবং লেবেলগুলি পাস করে।
model.fit(x_train, y_train)
ধাপ ২: পরীক্ষার তথ্যের উপর ভিত্তি করে আপনার মডেল মূল্যায়ন করুন
আমরা এখন আমাদের প্রশিক্ষিত মডেল ব্যবহার করে predict() ফাংশনের সাহায্যে আমাদের পরীক্ষার ডেটার উপর ভবিষ্যদ্বাণী তৈরি করতে পারি:
y_pred = model.predict(x_test)
আসুন দেখি আমাদের পরীক্ষার সেট থেকে প্রথম ২০টি মানের উপর মডেলটি কেমন পারফর্ম করেছে। নীচে আমরা প্রতিটি পরীক্ষার উদাহরণের জন্য পূর্বাভাসিত শিশুর ওজন এবং প্রকৃত শিশুর ওজন প্রিন্ট করব:
for i in range(20):
print('Predicted weight: ', y_pred[i])
print('Actual weight: ', y_test.iloc[i])
print()
ধাপ ৩: আপনার মডেলটি সংরক্ষণ করুন
মডেলটি স্থাপন করার জন্য, স্থানীয় ফাইলে সংরক্ষণ করতে নিম্নলিখিত কোডটি চালান:
model.save_model('model.bst')
৭. ক্লাউড এআই প্ল্যাটফর্মে মডেল স্থাপন করুন
আমাদের মডেলটি স্থানীয়ভাবে কাজ করছে, কিন্তু যদি আমরা যেকোনো জায়গা থেকে (শুধু এই নোটবুকটি নয়!) এটির উপর ভবিষ্যদ্বাণী করতে পারি তাহলে ভালো হয়। এই ধাপে আমরা এটিকে ক্লাউডে স্থাপন করব।
ধাপ ১: আমাদের মডেলের জন্য একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন
প্রথমে কিছু পরিবেশগত ভেরিয়েবল সংজ্ঞায়িত করা যাক যা আমরা কোডল্যাবের বাকি অংশ জুড়ে ব্যবহার করব। নীচের মানগুলি পূরণ করুন আপনার Google ক্লাউড প্রকল্পের নাম, আপনি যে ক্লাউড স্টোরেজ বাকেট তৈরি করতে চান তার নাম (যা অবশ্যই বিশ্বব্যাপী অনন্য হতে হবে) এবং আপনার মডেলের প্রথম সংস্করণের সংস্করণের নাম:
# Update these to your own GCP project, model, and version names
GCP_PROJECT = 'your-gcp-project'
MODEL_BUCKET = 'gs://storage_bucket_name'
VERSION_NAME = 'v1'
MODEL_NAME = 'baby_weight'
এখন আমরা আমাদের XGBoost মডেল ফাইলটি সংরক্ষণ করার জন্য একটি স্টোরেজ বাকেট তৈরি করতে প্রস্তুত। আমরা যখন এটি স্থাপন করব তখন আমরা ক্লাউড এআই প্ল্যাটফর্মটিকে এই ফাইলটির দিকে নির্দেশ করব।
একটি বাকেট তৈরি করতে আপনার নোটবুকের মধ্যে থেকে এই gsutil কমান্ডটি চালান:
!gsutil mb $MODEL_BUCKET
ধাপ ২: মডেল ফাইলটি ক্লাউড স্টোরেজে কপি করুন
এরপর, আমরা আমাদের XGBoost সংরক্ষিত মডেল ফাইলটি ক্লাউড স্টোরেজে কপি করব। নিম্নলিখিত gsutil কমান্ডটি চালান:
!gsutil cp ./model.bst $MODEL_BUCKET
ফাইলটি কপি করা হয়েছে কিনা তা নিশ্চিত করতে আপনার ক্লাউড কনসোলের স্টোরেজ ব্রাউজারে যান:

ধাপ ৩: মডেল তৈরি এবং স্থাপন করুন
নিম্নলিখিত ai-platform gcloud কমান্ডটি আপনার প্রকল্পে একটি নতুন মডেল তৈরি করবে। আমরা এটিকে xgb_mortgage বলব:
!gcloud ai-platform models create $MODEL_NAME
এখন মডেলটি স্থাপনের সময়। আমরা এই gcloud কমান্ড দিয়ে এটি করতে পারি:
!gcloud ai-platform versions create $VERSION_NAME \
--model=$MODEL_NAME \
--framework='XGBOOST' \
--runtime-version=1.15 \
--origin=$MODEL_BUCKET \
--python-version=3.7 \
--project=$GCP_PROJECT
এটি চলাকালীন, আপনার AI প্ল্যাটফর্ম কনসোলের মডেল বিভাগটি পরীক্ষা করুন। আপনি সেখানে আপনার নতুন সংস্করণটি স্থাপন করতে দেখবেন:

যখন স্থাপনাটি সফলভাবে সম্পন্ন হবে, তখন আপনি লোডিং স্পিনারটির অবস্থানের জায়গায় একটি সবুজ চেক চিহ্ন দেখতে পাবেন। স্থাপনাটি সম্পন্ন হতে ২-৩ মিনিট সময় লাগবে।
ধাপ ৪: মোতায়েন করা মডেলটি পরীক্ষা করুন
আপনার ডিপ্লয় করা মডেলটি কাজ করছে কিনা তা নিশ্চিত করতে, gcloud ব্যবহার করে এটি পরীক্ষা করে দেখুন এবং একটি ভবিষ্যদ্বাণী করুন। প্রথমে, আমাদের টেস্ট সেট থেকে দুটি উদাহরণ সহ একটি JSON ফাইল সংরক্ষণ করুন:
%%writefile predictions.json
[0.0, 33.0, 1.0, 27.0]
[1.0, 26.0, 1.0, 40.0]
নিম্নলিখিত gcloud কমান্ডের আউটপুট একটি ভেরিয়েবলে সংরক্ষণ করে এবং এটি প্রিন্ট করে আপনার মডেলটি পরীক্ষা করুন:
prediction = !gcloud ai-platform predict --model=$MODEL_NAME --json-instances=predictions.json --version=$VERSION_NAME
print(prediction.s)
আউটপুটে আপনার মডেলের ভবিষ্যদ্বাণী দেখতে পাবেন। এই দুটি উদাহরণের প্রকৃত শিশুর ওজন যথাক্রমে ১.৯ এবং ৮.১ পাউন্ড।
৮. পরিষ্কার-পরিচ্ছন্নতা
আপনি যদি এই নোটবুকটি ব্যবহার চালিয়ে যেতে চান, তাহলে ব্যবহার না করার সময় এটি বন্ধ করে দেওয়ার পরামর্শ দেওয়া হচ্ছে। আপনার ক্লাউড কনসোলের নোটবুকস UI থেকে, নোটবুকটি নির্বাচন করুন এবং তারপর "থামুন" নির্বাচন করুন:

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