Vertex AI ওয়ার্কবেঞ্চ: BigQuery থেকে ডেটা সহ একটি টেনসরফ্লো মডেলকে প্রশিক্ষণ দিন

1. ওভারভিউ

এই ল্যাবে, আপনি ডেটা অন্বেষণ এবং ML মডেল প্রশিক্ষণের জন্য Vertex AI Workbench কীভাবে ব্যবহার করবেন তা শিখবেন।

আপনি কি শিখুন

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

  • একটি ভার্টেক্স এআই ওয়ার্কবেঞ্চ উদাহরণ তৈরি এবং কনফিগার করুন
  • Vertex AI Workbench BigQuery সংযোগকারী ব্যবহার করুন
  • ভার্টেক্স এআই ওয়ার্কবেঞ্চ কার্নেলে একটি মডেলকে প্রশিক্ষণ দিন

Google ক্লাউডে এই ল্যাবটি চালানোর জন্য মোট খরচ প্রায় $1

2. ভার্টেক্স এআই-এর ভূমিকা

এই ল্যাবটি Google ক্লাউডে উপলব্ধ নতুন AI পণ্য অফার ব্যবহার করে। Vertex AI Google ক্লাউড জুড়ে ML অফারগুলিকে একটি নিরবচ্ছিন্ন বিকাশের অভিজ্ঞতায় সংহত করে৷ পূর্বে, অটোএমএল এবং কাস্টম মডেলগুলির সাথে প্রশিক্ষিত মডেলগুলি পৃথক পরিষেবার মাধ্যমে অ্যাক্সেসযোগ্য ছিল। নতুন অফারটি অন্যান্য নতুন পণ্যের সাথে একটি একক API-এ উভয়কে একত্রিত করে। আপনি বিদ্যমান প্রকল্পগুলিকে Vertex AI-তে স্থানান্তর করতে পারেন।

Vertex AI এন্ড-টু-এন্ড ML ওয়ার্কফ্লো সমর্থন করার জন্য বিভিন্ন পণ্য অন্তর্ভুক্ত করে। এই ল্যাবটি ভার্টেক্স এআই ওয়ার্কবেঞ্চে ফোকাস করবে।

Vertex AI ওয়ার্কবেঞ্চ ব্যবহারকারীদের দ্রুত ডেটা পরিষেবাগুলির (যেমন Dataproc, Dataflow, BigQuery, এবং Dataplex) এবং Vertex AI-এর সাথে গভীর একীকরণের মাধ্যমে এন্ড-টু-এন্ড নোটবুক-ভিত্তিক ওয়ার্কফ্লো তৈরি করতে সাহায্য করে। এটি ডেটা বিজ্ঞানীদের GCP ডেটা পরিষেবাগুলির সাথে সংযোগ করতে, ডেটাসেটগুলি বিশ্লেষণ করতে, বিভিন্ন মডেলিং কৌশল নিয়ে পরীক্ষা করতে, প্রশিক্ষিত মডেলগুলিকে উত্পাদনে স্থাপন করতে এবং মডেল জীবনচক্রের মাধ্যমে MLOps পরিচালনা করতে সক্ষম করে।

3. কেস ওভারভিউ ব্যবহার করুন

এই ল্যাবে, আপনি লন্ডন বাইসাইকেল হায়ার ডেটাসেট অন্বেষণ করবেন। এই ডেটাতে 2011 সাল থেকে লন্ডনের পাবলিক বাইকশেয়ারিং প্রোগ্রাম থেকে সাইকেল ভ্রমণের তথ্য রয়েছে৷ আপনি Vertex AI Workbench BigQuery সংযোগকারীর মাধ্যমে BigQuery-এ এই ডেটাসেটটি অন্বেষণ করে শুরু করবেন৷ তারপরে আপনি পান্ডা ব্যবহার করে একটি জুপিটার নোটবুকে ডেটা লোড করবেন এবং কখন ট্রিপটি ঘটেছে এবং ব্যক্তিটি কতদূর সাইকেল চালিয়েছে তার উপর ভিত্তি করে একটি সাইকেল ট্রিপের সময়কাল পূর্বাভাস দিতে একটি টেনসরফ্লো মডেলকে প্রশিক্ষণ দেবেন।

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

4. আপনার পরিবেশ সেট আপ করুন

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

ধাপ 1: Compute Engine API সক্ষম করুন

কম্পিউট ইঞ্জিনে নেভিগেট করুন এবং সক্ষম নির্বাচন করুন যদি এটি ইতিমধ্যে সক্ষম না থাকে।

ধাপ 2: Vertex AI API সক্ষম করুন

আপনার ক্লাউড কনসোলের Vertex AI বিভাগে নেভিগেট করুন এবং Vertex AI API সক্ষম করুন ক্লিক করুন।

ভার্টেক্স এআই ড্যাশবোর্ড

ধাপ 3: একটি ভার্টেক্স এআই ওয়ার্কবেঞ্চ উদাহরণ তৈরি করুন

আপনার ক্লাউড কনসোলের ভার্টেক্স এআই বিভাগ থেকে, ওয়ার্কবেঞ্চে ক্লিক করুন:

ভার্টেক্স এআই মেনু

নোটবুক API সক্রিয় করুন যদি এটি ইতিমধ্যে না থাকে।

নোটবুক_এপিআই

একবার সক্রিয় হলে, ম্যানেজড নোটবুক ক্লিক করুন:

নোটবুক_ইউআই

তারপর নতুন নোটবুক নির্বাচন করুন।

নতুন_নোটবুক

আপনার নোটবুকে একটি নাম দিন এবং অনুমতির অধীনে পরিষেবা অ্যাকাউন্ট নির্বাচন করুন৷

service_account

উন্নত সেটিংস নির্বাচন করুন।

নিরাপত্তার অধীনে "টার্মিনাল সক্ষম করুন" নির্বাচন করুন যদি এটি ইতিমধ্যে সক্ষম না থাকে।

সক্ষম_টার্মিনাল

আপনি অন্যান্য উন্নত সেটিংসের মতোই ছেড়ে যেতে পারেন।

পরবর্তী, তৈরি করুন ক্লিক করুন।

একবার ইন্সট্যান্স তৈরি হয়ে গেলে, OPEN JUPYTERLAB নির্বাচন করুন।

সক্ষম_টার্মিনাল

5. BigQuery-এ ডেটাসেট অন্বেষণ করুন

Vertex AI Workbench উদাহরণে, বাম দিকে নেভিগেট করুন এবং Notebooks সংযোগকারীতে BigQuery- এ ক্লিক করুন।

BQ সংযোগকারী

BigQuery সংযোগকারী আপনাকে সহজেই BigQuery ডেটাসেটগুলি অন্বেষণ এবং অনুসন্ধান করতে দেয়৷ আপনার প্রকল্পের যেকোনো ডেটাসেট ছাড়াও, আপনি প্রকল্প যোগ করুন বোতামে ক্লিক করে অন্যান্য প্রকল্পে ডেটাসেটগুলি অন্বেষণ করতে পারেন।

পিন

এই ল্যাবের জন্য, আপনি BigQuery পাবলিক ডেটাসেট থেকে ডেটা ব্যবহার করবেন। যতক্ষণ না আপনি london_bicycles ডেটাসেট খুঁজে পান ততক্ষণ নিচে স্ক্রোল করুন। আপনি দেখতে পাবেন যে এই ডেটাসেটে দুটি টেবিল রয়েছে, সাইকেল_হায়ার এবং সাইকেল_স্টেশন । আসুন তাদের প্রতিটি অন্বেষণ করা যাক.

london_bike_ds

প্রথমে, cycl_hire টেবিলে ডাবল ক্লিক করুন। আপনি দেখতে পাবেন যে টেবিলটি টেবিলের স্কিমার সাথে সারি এবং আকারের সংখ্যার মতো মেটাডেটা সহ একটি নতুন ট্যাব হিসাবে খোলে।

সাইকেল_হায়ার_ডিএস

আপনি যদি পূর্বরূপ ট্যাবে ক্লিক করেন, আপনি ডেটার একটি নমুনা দেখতে সক্ষম হবেন। জনপ্রিয় যাত্রাগুলি কী তা দেখতে একটি সহজ প্রশ্ন চালানো যাক৷ প্রথমে Query table বাটনে ক্লিক করুন।

সাইকেল_হায়ার_প্রিভিউ_ডিএস

তারপর, SQL সম্পাদকে নিম্নলিখিতটি পেস্ট করুন এবং ক্যোয়ারী জমা দিন ক্লিক করুন।

SELECT
  start_station_name,
  end_station_name,
  IF(start_station_name = end_station_name,
    TRUE,
    FALSE) same_station,
  AVG(duration) AS avg_duration,
  COUNT(*) AS total_rides
FROM
  `bigquery-public-data.london_bicycles.cycle_hire`
GROUP BY
  start_station_name,
  end_station_name,
  same_station
ORDER BY
  total_rides DESC

ক্যোয়ারী ফলাফল থেকে, আপনি দেখতে পাবেন যে হাইড পার্ক কর্নার স্টেশনে এবং থেকে সাইকেল ট্রিপগুলি সবচেয়ে জনপ্রিয় ছিল৷

travel_query_results

এরপর, সাইকেল_স্টেশন টেবিলে ডাবল ক্লিক করুন, যা প্রতিটি স্টেশন সম্পর্কে তথ্য প্রদান করে।

আমরা সাইকেল_হায়ার এবং সাইকেল_স্টেশন টেবিলে যোগ দিতে চাই। সাইকেল_স্টেশন টেবিলে প্রতিটি স্টেশনের জন্য ল্যাট/লন রয়েছে। আপনি শুরু এবং শেষ স্টেশনগুলির মধ্যে দূরত্ব গণনা করে প্রতিটি সাইকেল ট্রিপে ভ্রমণ করা দূরত্ব অনুমান করতে এই তথ্যটি ব্যবহার করবেন।

এই গণনা করতে, আপনি BigQuery ভূগোল ফাংশন ব্যবহার করবেন। বিশেষভাবে, আপনি প্রতিটি ল্যাট/লন স্ট্রিংকে একটি ST_GEOGPOINT এ রূপান্তর করবেন এবং দুটি বিন্দুর মধ্যে মিটারে সরলরেখার দূরত্ব গণনা করতে ST_DISTANCE ফাংশন ব্যবহার করবেন। আপনি প্রতিটি সাইকেল ট্রিপে ভ্রমণ করা দূরত্বের জন্য একটি প্রক্সি হিসাবে এই মানটি ব্যবহার করবেন৷

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

WITH staging AS (
    SELECT
        STRUCT(
            start_stn.name,
            ST_GEOGPOINT(start_stn.longitude, start_stn.latitude) AS POINT,
            start_stn.docks_count,
            start_stn.install_date
        ) AS starting,
        STRUCT(
            end_stn.name,
            ST_GEOGPOINT(end_stn.longitude, end_stn.latitude) AS point,
            end_stn.docks_count,
            end_stn.install_date
        ) AS ending,
        STRUCT(
            rental_id,
            bike_id,
            duration, --seconds
            ST_DISTANCE(
                ST_GEOGPOINT(start_stn.longitude, start_stn.latitude),
                ST_GEOGPOINT(end_stn.longitude, end_stn.latitude)
            ) AS distance, --meters
            start_date,
            end_date
        ) AS bike
        FROM `bigquery-public-data.london_bicycles.cycle_stations` AS start_stn
        LEFT JOIN `bigquery-public-data.london_bicycles.cycle_hire` as b
        ON start_stn.id = b.start_station_id
        LEFT JOIN `bigquery-public-data.london_bicycles.cycle_stations` AS end_stn
        ON end_stn.id = b.end_station_id
        LIMIT 700000)

SELECT * from STAGING

6. একটি টেনসরফ্লো কার্নেলে একটি এমএল মডেলকে প্রশিক্ষণ দিন

Vertex AI ওয়ার্কবেঞ্চের একটি কম্পিউট সামঞ্জস্যপূর্ণ স্তর রয়েছে যা আপনাকে টেনসরফ্লো, পাইস্পার্ক, আর, ইত্যাদির জন্য কার্নেলগুলি চালু করতে দেয়, সমস্ত একটি একক নোটবুক উদাহরণ থেকে। এই ল্যাবে, আপনি TensorFlow কার্নেল ব্যবহার করে একটি নোটবুক তৈরি করবেন।

ডেটাফ্রেম তৈরি করুন

ক্যোয়ারী কার্যকর হওয়ার পর, DataFrame এর জন্য Copy code-এ ক্লিক করুন। এটি আপনাকে একটি নোটবুকে পাইথন কোড পেস্ট করার অনুমতি দেবে যা BigQuery ক্লায়েন্টের সাথে সংযোগ করে এবং এই ডেটাটিকে পান্ডাস ডেটাফ্রেম হিসাবে বের করে।

কপি_ফর_ডিএফ

এরপর, লঞ্চারে ফিরে যান এবং একটি টেনসরফ্লো 2 নোটবুক তৈরি করুন৷

tf_kernel

নোটবুকের প্রথম ঘরে, ক্যোয়ারী এডিটর থেকে কপি করা কোড পেস্ট করুন। এটি নিম্নলিখিত মত দেখতে হবে:

# The following two lines are only necessary to run once.
# Comment out otherwise for speed-up.
from google.cloud.bigquery import Client, QueryJobConfig
client = Client()

query = """WITH staging AS (
    SELECT
        STRUCT(
            start_stn.name,
            ST_GEOGPOINT(start_stn.longitude, start_stn.latitude) AS POINT,
            start_stn.docks_count,
            start_stn.install_date
        ) AS starting,
        STRUCT(
            end_stn.name,
            ST_GEOGPOINT(end_stn.longitude, end_stn.latitude) AS point,
            end_stn.docks_count,
            end_stn.install_date
        ) AS ending,
        STRUCT(
            rental_id,
            bike_id,
            duration, --seconds
            ST_DISTANCE(
                ST_GEOGPOINT(start_stn.longitude, start_stn.latitude),
                ST_GEOGPOINT(end_stn.longitude, end_stn.latitude)
            ) AS distance, --meters
            start_date,
            end_date
        ) AS bike
        FROM `bigquery-public-data.london_bicycles.cycle_stations` AS start_stn
        LEFT JOIN `bigquery-public-data.london_bicycles.cycle_hire` as b 
        ON start_stn.id = b.start_station_id
        LEFT JOIN `bigquery-public-data.london_bicycles.cycle_stations` AS end_stn
        ON end_stn.id = b.end_station_id
        LIMIT 700000)

SELECT * from STAGING"""
job = client.query(query)
df = job.to_dataframe()

এই ল্যাবের উদ্দেশ্যে, প্রশিক্ষণের সময় কম রাখতে আমরা ডেটাসেটকে 700000-এ সীমাবদ্ধ করি। কিন্তু নির্দ্বিধায় ক্যোয়ারী সংশোধন করুন এবং সম্পূর্ণ ডেটাসেট নিয়ে পরীক্ষা করুন।

এর পরে, প্রয়োজনীয় লাইব্রেরি আমদানি করুন।

from datetime import datetime
import pandas as pd
import tensorflow as tf

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

values = df['bike'].values
duration = list(map(lambda a: a['duration'], values))
distance = list(map(lambda a: a['distance'], values))
dates = list(map(lambda a: a['start_date'], values))
data = pd.DataFrame(data={'duration': duration, 'distance': distance, 'start_date':dates})
data = data.dropna()

start_date কলাম হল একটি Python datetime । মডেলটিতে এই datetime সরাসরি ব্যবহার করার পরিবর্তে, আপনি দুটি নতুন বৈশিষ্ট্য তৈরি করবেন যা সপ্তাহের দিন এবং যেদিন বাইক ট্রিপ হয়েছিল সেই দিনের ঘন্টা নির্দেশ করে৷

data['weekday'] = data['start_date'].apply(lambda a: a.weekday())
data['hour'] = data['start_date'].apply(lambda a: a.time().hour)
data = data.drop(columns=['start_date'])

অবশেষে, সময়কাল কলামকে সেকেন্ড থেকে মিনিটে রূপান্তর করুন যাতে এটি বোঝা সহজ হয়

data['duration'] = data['duration'].apply(lambda x:float(x / 60))

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

data.head()

ডেটা_হেড

আপনি মডেল তৈরি এবং প্রশিক্ষণের আগে, আপনাকে প্রশিক্ষণ এবং বৈধতা সেটে ডেটা বিভক্ত করতে হবে।

# Use 80/20 train/eval split
train_size = int(len(data) * .8)
print ("Train size: %d" % train_size)
print ("Evaluation size: %d" % (len(data) - train_size))

# Split data into train and test sets
train_data = data[:train_size]
val_data = data[train_size:]

টেনসরফ্লো মডেল তৈরি করুন

আপনি Keras কার্যকরী API ব্যবহার করে একটি TensorFlow মডেল তৈরি করবেন। ইনপুট ডেটা প্রিপ্রসেস করতে, আপনি কেরাস প্রিপ্রসেসিং লেয়ার API ব্যবহার করবেন।

নিম্নলিখিত ইউটিলিটি ফাংশনটি পান্ডাস ডেটাফ্রেমের বাইরে একটি tf.data.Dataset তৈরি করবে।

def df_to_dataset(dataframe, label, shuffle=True, batch_size=32):
  dataframe = dataframe.copy()
  labels = dataframe.pop(label)
  ds = tf.data.Dataset.from_tensor_slices((dict(dataframe), labels))
  if shuffle:
    ds = ds.shuffle(buffer_size=len(dataframe))
  ds = ds.batch(batch_size)
  ds = ds.prefetch(batch_size)
  return ds

দুটি tf.data.Dataset s তৈরি করতে উপরের ফাংশনটি ব্যবহার করুন, একটি প্রশিক্ষণের জন্য এবং একটি বৈধতার জন্য। আপনি কিছু সতর্কতা দেখতে পারেন, কিন্তু আপনি নিরাপদে সেগুলি উপেক্ষা করতে পারেন৷

train_dataset = df_to_dataset(train_data, 'duration')
validation_dataset = df_to_dataset(val_data, 'duration')

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

  • স্বাভাবিকীকরণ স্তর : ইনপুট বৈশিষ্ট্যগুলির বৈশিষ্ট্য-ভিত্তিক স্বাভাবিকীকরণ সম্পাদন করে।
  • IntegerLookup স্তর : পূর্ণসংখ্যার শ্রেণীগত মানগুলিকে পূর্ণসংখ্যা সূচকে পরিণত করে।
  • ক্যাটাগরি এনকোডিং লেয়ার : পূর্ণসংখ্যা শ্রেণীগত বৈশিষ্ট্যকে এক-গরম, বহু-হট, বা TF-IDF ঘন উপস্থাপনে পরিণত করে।

মনে রাখবেন যে এই স্তরগুলি প্রশিক্ষণযোগ্য নয় । পরিবর্তে, আপনি adapt() পদ্ধতির মাধ্যমে প্রশিক্ষণের ডেটার সাথে প্রকাশ করে প্রিপ্রসেসিং স্তরের অবস্থা সেট করেন।

নিম্নলিখিত ফাংশনটি একটি স্বাভাবিককরণ স্তর তৈরি করবে যা আপনি দূরত্ব বৈশিষ্ট্যটিতে ব্যবহার করতে পারেন। ট্রেনিং ডেটাতে adapt() পদ্ধতি ব্যবহার করে মডেল ফিট করার আগে আপনি স্টেট সেট করবেন। এটি স্বাভাবিককরণের জন্য ব্যবহার করার জন্য গড় এবং প্রকরণ গণনা করবে। পরে, আপনি যখন মডেলে বৈধতা ডেটাসেট পাস করেন, তখন প্রশিক্ষণ ডেটাতে গণনা করা এই একই গড় এবং পার্থক্যটি বৈধতা ডেটা স্কেল করতে ব্যবহার করা হবে।

def get_normalization_layer(name, dataset):
  # Create a Normalization layer for our feature.
  normalizer = tf.keras.layers.Normalization(axis=None)

  # Prepare a Dataset that only yields our feature.
  feature_ds = dataset.map(lambda x, y: x[name])

  # Learn the statistics of the data.
  normalizer.adapt(feature_ds)

  return normalizer

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

def get_category_encoding_layer(name, dataset, dtype, max_tokens=None):
  index = tf.keras.layers.IntegerLookup(max_tokens=max_tokens)

  # Prepare a Dataset that only yields our feature
  feature_ds = dataset.map(lambda x, y: x[name])

  # Learn the set of possible values and assign them a fixed integer index.
  index.adapt(feature_ds)

  # Create a Discretization for our integer indices.
  encoder = tf.keras.layers.CategoryEncoding(num_tokens=index.vocabulary_size())

  # Apply one-hot encoding to our indices. The lambda function captures the
  # layer so we can use them, or include them in the functional model later.
  return lambda feature: encoder(index(feature))

এরপরে, মডেলের প্রিপ্রসেসিং অংশ তৈরি করুন। প্রথমে, প্রতিটি বৈশিষ্ট্যের জন্য একটি tf.keras.Input স্তর তৈরি করুন।

# Create a Keras input layer for each feature
numeric_col = tf.keras.Input(shape=(1,), name='distance')
hour_col = tf.keras.Input(shape=(1,), name='hour', dtype='int64')
weekday_col = tf.keras.Input(shape=(1,), name='weekday', dtype='int64')

তারপরে একটি তালিকায় সংরক্ষণ করে স্বাভাবিককরণ এবং বিভাগ এনকোডিং স্তরগুলি তৈরি করুন।

all_inputs = []
encoded_features = []

# Pass 'distance' input to normalization layer
normalization_layer = get_normalization_layer('distance', train_dataset)
encoded_numeric_col = normalization_layer(numeric_col)
all_inputs.append(numeric_col)
encoded_features.append(encoded_numeric_col)

# Pass 'hour' input to category encoding layer
encoding_layer = get_category_encoding_layer('hour', train_dataset, dtype='int64')
encoded_hour_col = encoding_layer(hour_col)
all_inputs.append(hour_col)
encoded_features.append(encoded_hour_col)

# Pass 'weekday' input to category encoding layer
encoding_layer = get_category_encoding_layer('weekday', train_dataset, dtype='int64')
encoded_weekday_col = encoding_layer(weekday_col)
all_inputs.append(weekday_col)
encoded_features.append(encoded_weekday_col)

প্রিপ্রসেসিং স্তরগুলি সংজ্ঞায়িত করার পরে, আপনি বাকি মডেলটি সংজ্ঞায়িত করতে পারেন। আপনি সমস্ত ইনপুট বৈশিষ্ট্যগুলিকে একত্রিত করবেন এবং সেগুলিকে একটি ঘন স্তরে প্রেরণ করবেন৷ আউটপুট স্তর একটি একক ইউনিট যেহেতু এটি একটি রিগ্রেশন সমস্যা।

all_features = tf.keras.layers.concatenate(encoded_features)
x = tf.keras.layers.Dense(64, activation="relu")(all_features)
output = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(all_inputs, output)

অবশেষে, মডেল কম্পাইল.

model.compile(optimizer = tf.keras.optimizers.Adam(0.001),
              loss='mean_squared_logarithmic_error')

এখন আপনি মডেলটি সংজ্ঞায়িত করেছেন, আপনি আর্কিটেকচারটি কল্পনা করতে পারেন

tf.keras.utils.plot_model(model, show_shapes=True, rankdir="LR")

কেরাস_মডেল

মনে রাখবেন যে এই মডেলটি এই সাধারণ ডেটাসেটের জন্য মোটামুটি জটিল। এটি প্রদর্শনের উদ্দেশ্যে তৈরি করা হয়েছে।

কোডটি চলে কিনা তা নিশ্চিত করতে আসুন 1 যুগের জন্য প্রশিক্ষণ দেই।

model.fit(train_dataset, validation_data = validation_dataset, epochs = 1)

একটি GPU সহ ট্রেন মডেল

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

হার্ডওয়্যার প্রোফাইল পরিবর্তন করতে, উপরের ডান কোণায় মেশিনের প্রকারে ক্লিক করুন এবং হার্ডওয়্যার পরিবর্তন করুন নির্বাচন করুন

modify_hardware

GPU সংযুক্ত করুন নির্বাচন করুন এবং একটি NVIDIA T4 Tensor Core GPU নির্বাচন করুন।

add_gpu

হার্ডওয়্যার কনফিগার হতে প্রায় পাঁচ মিনিট সময় লাগবে। প্রক্রিয়াটি সম্পূর্ণ হলে, আসুন মডেলটিকে আরও কিছুক্ষণের জন্য প্রশিক্ষণ দেওয়া যাক। আপনি লক্ষ্য করবেন যে প্রতিটি যুগ এখন কম সময় নেয়।

model.fit(train_dataset, validation_data = validation_dataset, epochs = 5)

🎉 অভিনন্দন! 🎉

আপনি শিখেছেন কিভাবে Vertex AI Workbench ব্যবহার করতে হয়:

  • BigQuery-এ ডেটা অন্বেষণ করুন
  • পাইথনে ডেটা লোড করতে BigQuery ক্লায়েন্ট ব্যবহার করুন
  • কেরাস প্রিপ্রসেসিং লেয়ার এবং একটি GPU সহ একটি টেনসরফ্লো মডেলকে প্রশিক্ষণ দিন

Vertex AI এর বিভিন্ন অংশ সম্পর্কে আরও জানতে, ডকুমেন্টেশন দেখুন।

7. পরিষ্কার করা

যেহেতু আমরা নোটবুকটিকে 60 নিষ্ক্রিয় মিনিটের পরে টাইম আউট করার জন্য কনফিগার করেছি, আমাদের উদাহরণটি বন্ধ করার বিষয়ে চিন্তা করার দরকার নেই৷ আপনি যদি দৃষ্টান্তটি ম্যানুয়ালি বন্ধ করতে চান, তাহলে কনসোলের Vertex AI Workbench বিভাগে স্টপ বোতামে ক্লিক করুন। আপনি যদি নোটবুকটি সম্পূর্ণরূপে মুছে ফেলতে চান তবে মুছুন বোতামটি ক্লিক করুন।

মুছে ফেলুন