1. ওভারভিউ
এই ল্যাবে, আপনি GCP-এ একটি সম্পূর্ণ ML কার্যপ্রবাহের মধ্য দিয়ে যাবেন। একটি ক্লাউড AI প্ল্যাটফর্ম নোটবুক পরিবেশ থেকে, আপনি একটি BigQuery পাবলিক ডেটাসেট থেকে ডেটা গ্রহণ করবেন, একটি XGBoost মডেল তৈরি এবং প্রশিক্ষণ দেবেন এবং ভবিষ্যদ্বাণীর জন্য মডেলটিকে AI প্ল্যাটফর্মে স্থাপন করবেন৷
আপনি কি শিখুন
আপনি কিভাবে শিখবেন:
- AI প্ল্যাটফর্ম নোটবুকগুলিতে একটি BigQuery ডেটাসেট ইনজেস্ট করুন এবং বিশ্লেষণ করুন
- একটি XGBoost মডেল তৈরি করুন
- AI প্ল্যাটফর্মে XGBoost মডেলটি স্থাপন করুন এবং পূর্বাভাস পান
Google ক্লাউডে এই ল্যাবটি চালানোর জন্য মোট খরচ প্রায় $1 ।
2. আপনার পরিবেশ সেটআপ করুন
এই কোডল্যাব চালানোর জন্য আপনার একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্পের প্রয়োজন হবে যাতে বিলিং সক্ষম থাকে৷ একটি প্রকল্প তৈরি করতে, এখানে নির্দেশাবলী অনুসরণ করুন।
ধাপ 1: ক্লাউড এআই প্ল্যাটফর্ম মডেল এপিআই সক্ষম করুন
আপনার ক্লাউড কনসোলের AI প্ল্যাটফর্ম মডেল বিভাগে নেভিগেট করুন এবং সক্ষম করুন ক্লিক করুন যদি এটি ইতিমধ্যে সক্ষম না থাকে।
ধাপ 2: Compute Engine API সক্ষম করুন
কম্পিউট ইঞ্জিনে নেভিগেট করুন এবং সক্ষম নির্বাচন করুন যদি এটি ইতিমধ্যে সক্ষম না থাকে। আপনার নোটবুক উদাহরণ তৈরি করতে আপনার এটির প্রয়োজন হবে৷
ধাপ 3: একটি AI প্ল্যাটফর্ম নোটবুক উদাহরণ তৈরি করুন
আপনার ক্লাউড কনসোলের AI প্ল্যাটফর্ম নোটবুক বিভাগে নেভিগেট করুন এবং New Instance-এ ক্লিক করুন। তারপর সর্বশেষ পাইথন উদাহরণ টাইপ নির্বাচন করুন:
ডিফল্ট বিকল্পগুলি ব্যবহার করুন এবং তারপরে তৈরি করুন ক্লিক করুন। একবার উদাহরণ তৈরি হয়ে গেলে, JupyterLab খুলুন নির্বাচন করুন:
ধাপ 4: XGBoost ইনস্টল করুন
একবার আপনার JupyterLab ইনস্ট্যান্স খুলে গেলে, আপনাকে XGBoost প্যাকেজ যোগ করতে হবে।
এটি করতে, লঞ্চার থেকে টার্মিনাল নির্বাচন করুন:
তারপরে এআই প্ল্যাটফর্ম দ্বারা সমর্থিত XGBoost এর সর্বশেষ সংস্করণ ইনস্টল করতে নিম্নলিখিতটি চালান:
pip3 install xgboost==0.82
এটি সম্পূর্ণ হওয়ার পরে, লঞ্চার থেকে একটি পাইথন 3 নোটবুক ইনস্ট্যান্স খুলুন। আপনি আপনার নোটবুকে শুরু করার জন্য প্রস্তুত!
ধাপ 5: পাইথন প্যাকেজ আমদানি করুন
আপনার নোটবুকের প্রথম ঘরে, নিম্নলিখিত আমদানি যোগ করুন এবং সেলটি চালান। আপনি উপরের মেনুতে ডান তীর বোতাম টিপে বা কমান্ড-এন্টার টিপে এটি চালাতে পারেন:
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
3. BigQuery ডেটাসেট অন্বেষণ করা
BigQuery অনেক ডেটাসেট আপনার অন্বেষণের জন্য সর্বজনীনভাবে উপলব্ধ করেছে। এই ল্যাবের জন্য, আমরা জন্মগত ডেটাসেট ব্যবহার করব। এতে 40 বছরের সময়কালে মার্কিন যুক্তরাষ্ট্রে প্রায় প্রতিটি জন্মের ডেটা রয়েছে, যার মধ্যে রয়েছে শিশুর জন্মের ওজন এবং শিশুর পিতামাতার জনসংখ্যা সংক্রান্ত তথ্য। আমরা একটি শিশুর জন্ম ওজন ভবিষ্যদ্বাণী করতে বৈশিষ্ট্যগুলির একটি উপসেট ব্যবহার করব৷
ধাপ 1: আমাদের নোটবুকে BigQuery ডেটা ডাউনলোড করুন
আমরা একটি পান্ডাস ডেটাফ্রেমে ডেটা ডাউনলোড করতে BigQuery-এর জন্য Python ক্লায়েন্ট লাইব্রেরি ব্যবহার করব। আসল ডেটাসেটটি 21GB এবং এতে 123M সারি রয়েছে। জিনিসগুলি সহজ রাখতে আমরা ডেটাসেট থেকে শুধুমাত্র 10,000 সারি ব্যবহার করব।
ক্যোয়ারীটি তৈরি করুন এবং নিম্নলিখিত কোড সহ ফলাফলের ডেটাফ্রেমের পূর্বরূপ দেখুন। এখানে আমরা শিশুর ওজন সহ মূল ডেটাসেট থেকে 4টি বৈশিষ্ট্য পাচ্ছি (যে জিনিসটি আমাদের মডেল ভবিষ্যদ্বাণী করবে)। ডেটাসেট অনেক বছর পিছনে চলে যায় কিন্তু এই মডেলের জন্য আমরা শুধুমাত্র 2000 এর পরের ডেটা ব্যবহার করব:
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()
লিঙ্গ অনুসারে ডেটাসেটটি প্রায় 50/50 ভারসাম্যপূর্ণ বলে মনে হচ্ছে৷
4. প্রশিক্ষণের জন্য ডেটা প্রস্তুত করুন
এই বিভাগে, আমরা আমাদের মডেলকে প্রশিক্ষণের জন্য প্রস্তুত করতে ট্রেন এবং পরীক্ষা সেটে ডেটা ভাগ করব।
ধাপ 1: লেবেল কলাম বের করুন
ডেটাসেট থেকে নাল মান সহ প্রথম সারি ড্রপ করুন এবং ডেটা শাফেল করুন:
df = df.dropna()
df = shuffle(df, random_state=2)
এরপরে, লেবেল কলামটিকে একটি পৃথক ভেরিয়েবলে বের করুন এবং শুধুমাত্র আমাদের বৈশিষ্ট্য সহ একটি ডেটাফ্রেম তৈরি করুন:
labels = df['weight_pounds']
data = df.drop(columns=['weight_pounds'])
এখন আপনি যদি data.head()
চালিয়ে আমাদের ডেটাসেটের পূর্বরূপ দেখেন, তাহলে আপনি চারটি বৈশিষ্ট্য দেখতে পাবেন যা আমরা প্রশিক্ষণের জন্য ব্যবহার করব।
ধাপ 2: শ্রেণীগত বৈশিষ্ট্যগুলিকে পূর্ণসংখ্যাতে রূপান্তর করুন
যেহেতু XGBoost-এর জন্য সমস্ত ডেটা সাংখ্যিক হতে হবে, তাই আমাদের পরিবর্তন করতে হবে কিভাবে আমরা is_male
কলামে ডেটা উপস্থাপন করছি, যা বর্তমানে True/False স্ট্রিং। আমরা কেবল সেই কলামের ধরন পরিবর্তন করে এটি করতে পারি:
data['is_male'] = data['is_male'].astype(int)
ধাপ 3: ট্রেন এবং পরীক্ষা সেটে ডেটা বিভক্ত করুন
আমরা স্কিট লার্নের train_test_split
ইউটিলিটি ব্যবহার করব যা আমরা নোটবুকের শুরুতে আমাদের ডেটা ট্রেন এবং পরীক্ষা সেটে বিভক্ত করতে আমদানি করেছি:
x,y = data,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)
এখন আমরা আমাদের মডেল তৈরি এবং প্রশিক্ষণের জন্য প্রস্তুত!
5. একটি দ্রুত XGBoost প্রাইমার
XGBoost হল একটি মেশিন লার্নিং ফ্রেমওয়ার্ক যা ভবিষ্যদ্বাণীমূলক মডেল তৈরি করতে ডিসিশন ট্রি এবং গ্রেডিয়েন্ট বুস্টিং ব্যবহার করে। এটি একটি গাছের বিভিন্ন লিফ নোডের সাথে সম্পর্কিত স্কোরের উপর ভিত্তি করে একাধিক সিদ্ধান্ত গাছকে একত্রিত করে কাজ করে।
নীচের চিত্রটি একটি মডেলের জন্য একটি এনসেম্বল ট্রি নেটওয়ার্কের একটি সরলীকৃত ভিজ্যুয়ালাইজেশন যা মূল্যায়ন করে যে কেউ একটি নির্দিষ্ট কম্পিউটার গেম পছন্দ করবে কি না (এটি XGBoost ডক্স থেকে):
কেন আমরা এই মডেলের জন্য XGBoost ব্যবহার করছি? যদিও প্রথাগত নিউরাল নেটওয়ার্কগুলিকে চিত্র এবং পাঠ্যের মতো অসংগঠিত ডেটাতে সর্বোত্তম কার্য সম্পাদন করতে দেখানো হয়েছে, সিদ্ধান্ত গাছগুলি প্রায়শই এই কোডল্যাবে আমরা যে মর্টগেজ ডেটাসেট ব্যবহার করব তার মতো কাঠামোগত ডেটাতে অত্যন্ত ভাল কার্য সম্পাদন করে।
6. একটি XGBoost মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং মূল্যায়ন করুন
ধাপ 1: XGBoost মডেলটিকে সংজ্ঞায়িত করুন এবং প্রশিক্ষণ দিন
XGBoost এ একটি মডেল তৈরি করা সহজ। আমরা মডেল তৈরি করতে XGBRegressor
ক্লাস ব্যবহার করব, এবং আমাদের নির্দিষ্ট কাজের জন্য সঠিক objective
প্যারামিটারটি পাস করতে হবে। এখানে আমরা একটি রিগ্রেশন মডেল ব্যবহার করছি যেহেতু আমরা একটি সংখ্যাসূচক মান (শিশুর ওজন) ভবিষ্যদ্বাণী করছি। যদি আমরা পরিবর্তে একটি শিশুর ওজন 6 পাউন্ডের বেশি বা কম তা নির্ধারণ করতে আমাদের ডেটা বাকেটিং করি, আমরা একটি শ্রেণিবিন্যাস মডেল ব্যবহার করব।
এই ক্ষেত্রে আমরা আমাদের মডেলের উদ্দেশ্য হিসাবে reg:squarederror
ব্যবহার করব।
নিম্নলিখিত কোড একটি XGBoost মডেল তৈরি করবে:
model = xgb.XGBRegressor(
objective='reg:linear'
)
আপনি fit()
পদ্ধতিতে কল করে এবং প্রশিক্ষণের ডেটা এবং লেবেলগুলি পাস করে কোডের একটি লাইন দিয়ে মডেলটিকে প্রশিক্ষণ দিতে পারেন।
model.fit(x_train, y_train)
ধাপ 2: পরীক্ষার ডেটাতে আপনার মডেলের মূল্যায়ন করুন
আমরা এখন আমাদের প্রশিক্ষিত মডেল ব্যবহার করে predict()
ফাংশন সহ আমাদের পরীক্ষার ডেটাতে ভবিষ্যদ্বাণী তৈরি করতে পারি:
y_pred = model.predict(x_test)
আমাদের পরীক্ষা সেট থেকে মডেলটি প্রথম 20টি মানগুলিতে কীভাবে পারফর্ম করেছে তা দেখা যাক। নীচে আমরা প্রতিটি পরীক্ষার উদাহরণের জন্য প্রকৃত শিশুর ওজন সহ পূর্বাভাসিত শিশুর ওজন প্রিন্ট করব:
for i in range(20):
print('Predicted weight: ', y_pred[i])
print('Actual weight: ', y_test.iloc[i])
print()
ধাপ 3: আপনার মডেল সংরক্ষণ করুন
মডেল স্থাপন করার জন্য, একটি স্থানীয় ফাইলে সংরক্ষণ করতে নিম্নলিখিত কোডটি চালান:
model.save_model('model.bst')
7. ক্লাউড এআই প্ল্যাটফর্মে মডেল স্থাপন করুন
আমরা আমাদের মডেলটি স্থানীয়ভাবে কাজ করতে পেরেছি, তবে এটি ভাল হবে যদি আমরা যে কোনও জায়গা থেকে এটির উপর ভবিষ্যদ্বাণী করতে পারি (শুধু এই নোটবুক নয়!) এই ধাপে আমরা এটিকে ক্লাউডে স্থাপন করব।
ধাপ 1: আমাদের মডেলের জন্য একটি ক্লাউড স্টোরেজ বালতি তৈরি করুন
আসুন প্রথমে কিছু এনভায়রনমেন্ট ভেরিয়েবল সংজ্ঞায়িত করি যা আমরা কোডল্যাবের বাকি অংশ জুড়ে ব্যবহার করব। আপনার 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
ধাপ 2: মডেল ফাইলটি ক্লাউড স্টোরেজে কপি করুন
এর পরে, আমরা আমাদের XGBoost সংরক্ষিত মডেল ফাইলটি ক্লাউড স্টোরেজে কপি করব। নিম্নলিখিত gsutil কমান্ড চালান:
!gsutil cp ./model.bst $MODEL_BUCKET
ফাইলটি কপি করা হয়েছে তা নিশ্চিত করতে আপনার ক্লাউড কনসোলের স্টোরেজ ব্রাউজারে যান:
ধাপ 3: মডেল তৈরি করুন এবং স্থাপন করুন
নিম্নলিখিত 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 প্ল্যাটফর্ম কনসোলের মডেল বিভাগটি পরীক্ষা করুন। আপনি সেখানে আপনার নতুন সংস্করণ স্থাপন করা দেখতে হবে:
ডিপ্লয় সফলভাবে সম্পন্ন হলে আপনি একটি সবুজ চেক চিহ্ন দেখতে পাবেন যেখানে লোডিং স্পিনার আছে। স্থাপনে 2-3 মিনিট সময় নিতে হবে।
ধাপ 4: স্থাপন করা মডেল পরীক্ষা করুন
আপনার নিয়োজিত মডেল কাজ করছে তা নিশ্চিত করতে, একটি ভবিষ্যদ্বাণী করতে 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)
আপনার আউটপুটে আপনার মডেলের ভবিষ্যদ্বাণী দেখতে হবে। এই দুটি উদাহরণের জন্য প্রকৃত শিশুর ওজন যথাক্রমে 1.9 এবং 8.1 পাউন্ড।
8. পরিষ্কার করা
আপনি যদি এই নোটবুকটি ব্যবহার চালিয়ে যেতে চান তবে এটি ব্যবহার না করার সময় এটি বন্ধ করার পরামর্শ দেওয়া হয়। আপনার ক্লাউড কনসোলের নোটবুক UI থেকে, নোটবুকটি নির্বাচন করুন এবং তারপরে থামুন নির্বাচন করুন:
আপনি যদি এই ল্যাবে আপনার তৈরি করা সমস্ত সংস্থান মুছে ফেলতে চান তবে নোটবুকের উদাহরণটি বন্ধ করার পরিবর্তে কেবল মুছুন৷
আপনার ক্লাউড কনসোলে নেভিগেশন মেনু ব্যবহার করে, সঞ্চয়স্থানে ব্রাউজ করুন এবং আপনার মডেল সম্পদগুলি সঞ্চয় করতে আপনার তৈরি করা উভয় বালতি মুছে দিন।