ভার্টেক্স এআই: পূর্বাভাসের জন্য প্রসেস ডেটা এবং পোস্ট করার জন্য স্কলারনের সাথে কাস্টম ভবিষ্যদ্বাণী রুটিন ব্যবহার করুন

1. ভূমিকা

এই ল্যাবে, আপনি শিখবেন কীভাবে কাস্টম প্রিপ্রসেসিং এবং পোস্টপ্রসেসিং লজিক লিখতে Vertex AI-তে কাস্টম ভবিষ্যদ্বাণী রুটিন ব্যবহার করতে হয়। যদিও এই নমুনাটি Scikit-learn ব্যবহার করে, কাস্টম ভবিষ্যদ্বাণী রুটিন অন্যান্য Python ML ফ্রেমওয়ার্ক যেমন XGBoost, PyTorch এবং TensorFlow এর সাথে কাজ করতে পারে।

আপনি কি শিখবেন

  • কাস্টম ভবিষ্যদ্বাণী রুটিন সহ কাস্টম ভবিষ্যদ্বাণী যুক্তি লিখুন
  • স্থানীয়ভাবে কাস্টম পরিবেশন ধারক এবং মডেল পরীক্ষা করুন
  • Vertex AI ভবিষ্যদ্বাণীতে কাস্টম পরিবেশন কন্টেইনার পরীক্ষা করুন

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

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

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

440e66b5fde4cee7.png

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

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

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

কাস্টম ভবিষ্যদ্বাণী রুটিন পরিচিতি

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

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

কাস্টম ভবিষ্যদ্বাণী রুটিনের সাথে, Vertex AI আপনার জন্য পরিবেশন-সম্পর্কিত উপাদানগুলি সরবরাহ করে, যাতে আপনি আপনার মডেল এবং ডেটা রূপান্তরের উপর ফোকাস করতে পারেন।

আপনি কি নির্মাণ করবেন

আপনি aiml-vpc নামে একটি VPC নেটওয়ার্ক সেট আপ করবেন যেটিতে একটি ওয়ার্কবেঞ্চ সাবনেট রয়েছে যা ব্যবহারকারীর দ্বারা পরিচালিত নোটবুক স্থাপন করতে ব্যবহৃত হয় এবং অনলাইন ভবিষ্যদ্বাণী এবং মডেল এন্ডপয়েন্ট অ্যাক্সেস করতে ব্যবহার করা হয় যা us-central1-এ নীচের চিত্র 1 এ দেখানো হয়েছে।

                                                                            Figure1

6ce21c7fdae12b4f.png

4. টিউটোরিয়াল API সক্রিয় করুন৷

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

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

ধাপ 2: আর্টিফ্যাক্ট রেজিস্ট্রি API সক্ষম করুন

আর্টিফ্যাক্ট রেজিস্ট্রিতে নেভিগেট করুন এবং সক্ষম নির্বাচন করুন যদি এটি ইতিমধ্যে না থাকে। আপনি এটি একটি কাস্টম পরিবেশন ধারক তৈরি করতে ব্যবহার করবেন।

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

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

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

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

5. aiml-vpc তৈরি করুন

এই টিউটোরিয়ালটি ক্লাউড শেল-এ gcloud কনফিগারেশন বাস্তবায়নে সহায়তা করার জন্য $variables ব্যবহার করে।

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

aiml-vpc তৈরি করুন

ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:

gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom

ব্যবহারকারী-পরিচালিত নোটবুক সাবনেট তৈরি করুন

ক্লাউড শেলের ভিতরে, ওয়ার্কবেঞ্চ-সাবনেট তৈরি করুন।

gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access

ক্লাউড রাউটার এবং NAT কনফিগারেশন

সফ্টওয়্যার প্যাকেজগুলি ডাউনলোড করার জন্য টিউটোরিয়ালটিতে ক্লাউড NAT ব্যবহার করা হয় যেহেতু ব্যবহারকারী পরিচালিত নোটবুকের কোনও বাহ্যিক আইপি ঠিকানা নেই৷ ক্লাউড NAT এগ্রেস NAT ক্ষমতা প্রদান করে, যার মানে হল যে ইন্টারনেট হোস্টগুলিকে ব্যবহারকারী-পরিচালিত নোটবুকের সাথে যোগাযোগ শুরু করার অনুমতি দেওয়া হয় না, এটিকে আরও সুরক্ষিত করে তোলে।

ক্লাউড শেলের ভিতরে, আঞ্চলিক ক্লাউড রাউটার তৈরি করুন, us-central1।

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

ক্লাউড শেলের ভিতরে, আঞ্চলিক ক্লাউড ন্যাট গেটওয়ে তৈরি করুন, us-central1।

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

6. ব্যবহারকারী পরিচালিত নোটবুক তৈরি করুন

একটি ব্যবহারকারী পরিচালিত পরিষেবা অ্যাকাউন্ট তৈরি করুন (নোটবুক)

নিম্নলিখিত বিভাগে, আপনি একটি ব্যবহারকারী পরিচালিত পরিষেবা অ্যাকাউন্ট তৈরি করবেন যা টিউটোরিয়ালটিতে ব্যবহৃত ভার্টেক্স ওয়ার্কবেঞ্চ (নোটবুক) এর সাথে যুক্ত হবে।

টিউটোরিয়ালে, পরিষেবা অ্যাকাউন্টে নিম্নলিখিত নিয়মগুলি প্রয়োগ করা হবে:

ক্লাউড শেলের ভিতরে, পরিষেবা অ্যাকাউন্ট তৈরি করুন।

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

ক্লাউড শেলের ভিতরে, স্টোরেজ অ্যাডমিনের ভূমিকা সহ পরিষেবা অ্যাকাউন্ট আপডেট করুন।

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"

ক্লাউড শেলের ভিতরে, Vertex AI ব্যবহারকারীর ভূমিকা সহ পরিষেবা অ্যাকাউন্ট আপডেট করুন।

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

ক্লাউড শেলের ভিতরে, আর্টিফ্যাক্ট রেজিস্ট্রি অ্যাডমিনের ভূমিকা সহ পরিষেবা অ্যাকাউন্ট আপডেট করুন।

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

ক্লাউড শেলের ভিতরে, পরিষেবা অ্যাকাউন্টের তালিকা করুন এবং ব্যবহারকারী-পরিচালিত নোটবুক তৈরি করার সময় যে ইমেল ঠিকানাটি ব্যবহার করা হবে তা নোট করুন।

gcloud iam service-accounts list

ব্যবহারকারী পরিচালিত নোটবুক তৈরি করুন

নিম্নলিখিত বিভাগে, একটি ব্যবহারকারী-পরিচালিত নোটবুক তৈরি করুন যা পূর্বে তৈরি পরিষেবা অ্যাকাউন্ট, ব্যবহারকারী-পরিচালিত-নোটবুক-সা অন্তর্ভুক্ত করে।

ক্লাউড শেলের ভিতরে ব্যক্তিগত-ক্লায়েন্ট উদাহরণ তৈরি করুন।

gcloud notebooks instances create workbench-tutorial \
      --vm-image-project=deeplearning-platform-release \
      --vm-image-family=common-cpu-notebooks \
      --machine-type=n1-standard-4 \
      --location=us-central1-a \
      --shielded-secure-boot \
      --subnet-region=us-central1 \
      --subnet=workbench-subnet \
      --no-public-ip    --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com

7. প্রশিক্ষণ কোড লিখুন

ধাপ 1: একটি ক্লাউড স্টোরেজ বালতি তৈরি করুন

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

লঞ্চার থেকে একটি নতুন টার্মিনাল সেশন খুলুন।

84a53a5b528f2507.png

আপনার টার্মিনাল থেকে, আপনার প্রকল্পের জন্য একটি env ভেরিয়েবল সংজ্ঞায়িত করতে নিম্নলিখিতটি চালান, আপনার প্রকল্পের আইডি দিয়ে আপনার-ক্লাউড-প্রকল্প প্রতিস্থাপন নিশ্চিত করুন:

PROJECT_ID='your-cloud-project'

এরপরে, আপনার প্রকল্পে একটি নতুন বালতি তৈরি করতে আপনার টার্মিনালে নিম্নলিখিতটি চালান।

BUCKET="gs://${PROJECT_ID}-cpr-bucket"
gsutil mb -l us-central1 $BUCKET

ধাপ 2: ট্রেন মডেল

টার্মিনাল থেকে, cpr-codelab নামে একটি নতুন ডিরেক্টরি তৈরি করুন এবং এটিতে cd দিন।

mkdir cpr-codelab
cd cpr-codelab

ফাইল ব্রাউজারে, নতুন cpr-codelab ডিরেক্টরিতে নেভিগেট করুন এবং তারপর টাস্ক.ipynb নামে একটি নতুন পাইথন 3 নোটবুক তৈরি করতে লঞ্চার ব্যবহার করুন।

f230930e0b79650c.png

আপনার সিপিআর-কোডেল্যাব ডিরেক্টরি এখন দেখতে হবে:

+ cpr-codelab/
    + task.ipynb

নোটবুকে, নিম্নলিখিত কোডটি পেস্ট করুন।

প্রথমে একটি requirements.txt ফাইল লিখুন।

%%writefile requirements.txt
fastapi
uvicorn==0.17.6
joblib~=1.1.1
numpy>=1.17.3, <1.24.0
scikit-learn~=1.0.0
pandas
google-cloud-storage>=2.2.1,<3.0.0dev
google-cloud-aiplatform[prediction]>=1.18.2

আপনি যে মডেলটি স্থাপন করবেন তা আপনার নোটবুকের পরিবেশের তুলনায় আগে থেকে ইনস্টল করা নির্ভরতার একটি ভিন্ন সেট থাকবে। এই কারণে, আপনি requirements.txt-এ মডেলের জন্য সমস্ত নির্ভরতা তালিকাভুক্ত করতে চাইবেন এবং তারপর নোটবুকে ঠিক একই নির্ভরতাগুলি ইনস্টল করতে পিপ ব্যবহার করুন৷ পরবর্তীতে, পরিবেশের মিল আছে কিনা তা দুবার চেক করতে Vertex AI-তে স্থাপন করার আগে আপনি মডেলটি স্থানীয়ভাবে পরীক্ষা করবেন।

পিপ নোটবুকে নির্ভরতা ইনস্টল করে।

!pip install -U --user -r requirements.txt

নোট করুন যে পিপ ইনস্টল সম্পূর্ণ হওয়ার পরে আপনাকে কার্নেলটি পুনরায় চালু করতে হবে।

এরপরে, ডিরেক্টরি তৈরি করুন যেখানে আপনি মডেল এবং প্রিপ্রসেসিং আর্টিফ্যাক্টগুলি সংরক্ষণ করবেন।

USER_SRC_DIR = "src_dir"
!mkdir $USER_SRC_DIR
!mkdir model_artifacts

# copy the requirements to the source dir
!cp requirements.txt $USER_SRC_DIR/requirements.txt

আপনার সিপিআর-কোডেল্যাব ডিরেক্টরি এখন দেখতে হবে:

+ cpr-codelab/
    + model_artifacts/
    + scr_dir/
        + requirements.txt
    + task.ipynb
    + requirements.txt

এখন যে ডিরেক্টরি কাঠামো সেট আপ করা হয়েছে, এটি একটি মডেল প্রশিক্ষণের সময়!

প্রথমত, লাইব্রেরি আমদানি করুন।

import seaborn as sns
import numpy as np
import pandas as pd

from sklearn import preprocessing
from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import make_pipeline
from sklearn.compose import make_column_transformer

import joblib
import logging

# set logging to see the docker container logs
logging.basicConfig(level=logging.INFO)

তারপর নিম্নলিখিত ভেরিয়েবলগুলি সংজ্ঞায়িত করুন। আপনার প্রজেক্ট আইডি দিয়ে PROJECT_ID এবং আগের ধাপে আপনার তৈরি করা বাকেট দিয়ে BUCKET_NAME প্রতিস্থাপন করতে ভুলবেন না।

REGION = "us-central1"
MODEL_ARTIFACT_DIR = "sklearn-model-artifacts"
REPOSITORY = "diamonds"
IMAGE = "sklearn-image"
MODEL_DISPLAY_NAME = "diamonds-cpr"

# Replace with your project
PROJECT_ID = "{PROJECT_ID}"

# Replace with your bucket
BUCKET_NAME = "gs://{BUCKET_NAME}"

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

data = sns.load_dataset('diamonds', cache=True, data_home=None)

label = 'price'

y_train = data['price']
x_train = data.drop(columns=['price'])

চলুন প্রশিক্ষণের তথ্য দেখে নেওয়া যাক। আপনি দেখতে পারেন যে প্রতিটি সারি একটি হীরা প্রতিনিধিত্ব করে।

x_train.head()

এবং লেবেল, যা সংশ্লিষ্ট মূল্য.

y_train.head()

এখন, একটি স্কলারন কলাম রূপান্তরকে একটি হট এনকোডে শ্রেণীবদ্ধ বৈশিষ্ট্যগুলি সংজ্ঞায়িত করুন এবং সংখ্যাসূচক বৈশিষ্ট্যগুলিকে স্কেল করুন

column_transform = make_column_transformer(
    (preprocessing.OneHotEncoder(sparse=False), [1,2,3]),
    (preprocessing.StandardScaler(), [0,4,5,6,7,8]))

এলোমেলো বন মডেল সংজ্ঞায়িত করুন

regr = RandomForestRegressor(max_depth=10, random_state=0)

এর পরে, একটি স্কলার পাইপলাইন তৈরি করুন। এর মানে হল যে এই পাইপলাইনে দেওয়া ডেটা প্রথমে এনকোড/স্কেল করা হবে এবং তারপর মডেলে পাঠানো হবে।

my_pipeline = make_pipeline(column_transform, regr)

প্রশিক্ষণ ডেটাতে পাইপলাইন ফিট করুন

my_pipeline.fit(x_train, y_train)

এটি প্রত্যাশিত হিসাবে কাজ করছে তা নিশ্চিত করতে মডেলটি চেষ্টা করুন। মডেলে ভবিষ্যদ্বাণী পদ্ধতি কল করুন, একটি পরীক্ষার নমুনা পাস.

my_pipeline.predict([[0.23, 'Ideal', 'E', 'SI2', 61.5, 55.0, 3.95, 3.98, 2.43]])

এখন আমরা পাইপলাইনটিকে মডেল_আর্টিফ্যাক্টস ডির-এ সংরক্ষণ করতে পারি এবং এটিকে ক্লাউড স্টোরেজ বালতিতে অনুলিপি করতে পারি

joblib.dump(my_pipeline, 'model_artifacts/model.joblib')

!gsutil cp model_artifacts/model.joblib {BUCKET_NAME}/{MODEL_ARTIFACT_DIR}/

ধাপ 3: একটি প্রিপ্রসেসিং আর্টিফ্যাক্ট সংরক্ষণ করুন

এরপরে আপনি একটি প্রিপ্রসেসিং আর্টিফ্যাক্ট তৈরি করবেন। মডেল সার্ভার শুরু হলে এই আর্টিফ্যাক্টটি কাস্টম কন্টেইনারে লোড করা হবে। আপনার প্রি-প্রসেসিং আর্টিফ্যাক্ট প্রায় যেকোনো ফর্মের হতে পারে (যেমন একটি পিকল ফাইল), কিন্তু এই ক্ষেত্রে আপনি একটি JSON ফাইলে একটি অভিধান লিখবেন।

clarity_dict={"Flawless": "FL",
              "Internally Flawless": "IF",
              "Very Very Slightly Included": "VVS1",
              "Very Slightly Included": "VS2",
              "Slightly Included": "S12",
              "Included": "I3"}

আমাদের প্রশিক্ষণের ডেটাতে স্পষ্টতা বৈশিষ্ট্যটি সর্বদা সংক্ষিপ্ত আকারে ছিল (অর্থাৎ "ফ্লোলেস" এর পরিবর্তে "FL")। পরিবেশন করার সময়, আমরা পরীক্ষা করতে চাই যে এই বৈশিষ্ট্যটির ডেটাও সংক্ষিপ্ত করা হয়েছে। এর কারণ হল আমাদের মডেল জানে কিভাবে একটি হট এনকোড "FL" করতে হয় কিন্তু "Flawless" নয়। আপনি এই কাস্টম প্রিপ্রসেসিং লজিকটি পরে লিখবেন। কিন্তু আপাতত, এই লুক আপ টেবিলটিকে একটি json ফাইলে সংরক্ষণ করুন এবং তারপরে এটি ক্লাউড স্টোরেজ বালতিতে লিখুন।

import json
with open("model_artifacts/preprocessor.json", "w") as f:
    json.dump(clarity_dict, f)

!gsutil cp model_artifacts/preprocessor.json {BUCKET_NAME}/{MODEL_ARTIFACT_DIR}/

আপনার স্থানীয় সিপিআর-কোডেল্যাব ডিরেক্টরি এখন দেখতে হবে:

+ cpr-codelab/
    + model_artifacts/
        + model.joblib
        + preprocessor.json
    + scr_dir/
        + requirements.txt
    + task.ipynb
    + requirements.txt

8. CPR মডেল সার্ভার ব্যবহার করে একটি কাস্টম পরিবেশন ধারক তৈরি করুন

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

একটি কাস্টম পরিবেশন পাত্রে নিম্নলিখিত 3 টুকরা কোড থাকে:

  1. মডেল সার্ভার (এটি SDK দ্বারা স্বয়ংক্রিয়ভাবে তৈরি হবে এবং scr_dir/ এ সংরক্ষণ করা হবে)
  • HTTP সার্ভার যে মডেল হোস্ট
  • রুট/বন্দর/ইত্যাদি সেট আপ করার জন্য দায়ী।
  1. অনুরোধ হ্যান্ডলার
  • একটি অনুরোধ পরিচালনার ওয়েবসার্ভারের দিকগুলির জন্য দায়ী, যেমন অনুরোধের অংশটিকে ডিসিরিয়ালাইজ করা, এবং প্রতিক্রিয়াকে সিরিয়াল করা, প্রতিক্রিয়া শিরোনাম সেট করা ইত্যাদি।
  • এই উদাহরণে, আপনি SDK-এ দেওয়া ডিফল্ট হ্যান্ডলার, google.cloud.aiplatform.prediction.handler.PredictionHandler ব্যবহার করবেন।
  1. ভবিষ্যদ্বাণীকারী
  • একটি ভবিষ্যদ্বাণী অনুরোধ প্রক্রিয়া করার জন্য ML যুক্তির জন্য দায়ী।

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

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

কাস্টম ভবিষ্যদ্বাণী রুটিনগুলির এই প্রকাশটি পুনরায় ব্যবহারযোগ্য XGBoost এবং Sklearn ভবিষ্যদ্বাণীগুলির সাথে আসে, তবে যদি আপনার একটি ভিন্ন কাঠামো ব্যবহার করার প্রয়োজন হয় তবে আপনি বেস ভবিষ্যদ্বাণীকারীকে সাবক্লাস করে নিজের তৈরি করতে পারেন।

আপনি নীচে Sklearn ভবিষ্যদ্বাণীকারীর একটি উদাহরণ দেখতে পারেন। এই কাস্টম মডেল সার্ভার তৈরি করার জন্য আপনাকে লিখতে হবে এমন সমস্ত কোড।

262df1246b28657e.png

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

%%writefile $USER_SRC_DIR/predictor.py

import joblib
import numpy as np
import json

from google.cloud import storage
from google.cloud.aiplatform.prediction.sklearn.predictor import SklearnPredictor


class CprPredictor(SklearnPredictor):

    def __init__(self):
        return

    def load(self, artifacts_uri: str) -> None:
        """Loads the sklearn pipeline and preprocessing artifact."""

        super().load(artifacts_uri)

        # open preprocessing artifact
        with open("preprocessor.json", "rb") as f:
            self._preprocessor = json.load(f)


    def preprocess(self, prediction_input: np.ndarray) -> np.ndarray:
        """Performs preprocessing by checking if clarity feature is in abbreviated form."""

        inputs = super().preprocess(prediction_input)

        for sample in inputs:
            if sample[3] not in self._preprocessor.values():
                sample[3] = self._preprocessor[sample[3]]
        return inputs

    def postprocess(self, prediction_results: np.ndarray) -> dict:
        """Performs postprocessing by rounding predictions and converting to str."""

        return {"predictions": [f"${value}" for value in np.round(prediction_results)]}

আসুন এই পদ্ধতিগুলির প্রতিটিতে আরও গভীরভাবে নজর দেওয়া যাক।

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

এরপরে, ইমেজ তৈরি করতে Vertex AI Python SDK ব্যবহার করুন। কাস্টম ভবিষ্যদ্বাণী রুটিন ব্যবহার করে, ডকারফাইল তৈরি করা হবে এবং আপনার জন্য একটি চিত্র তৈরি করা হবে।

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

import os

from google.cloud.aiplatform.prediction import LocalModel

from src_dir.predictor import CprPredictor  # Should be path of variable $USER_SRC_DIR

local_model = LocalModel.build_cpr_model(
    USER_SRC_DIR,
    f"{REGION}-docker.pkg.dev/{PROJECT_ID}/{REPOSITORY}/{IMAGE}",
    predictor=CprPredictor,
    requirements_path=os.path.join(USER_SRC_DIR, "requirements.txt"),
)

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

import json

sample = {"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

with open('instances.json', 'w') as fp:
    json.dump(sample, fp)

একটি স্থানীয় মডেল স্থাপন করে স্থানীয়ভাবে পাত্রটি পরীক্ষা করুন।

with local_model.deploy_to_local_endpoint(
    artifact_uri = 'model_artifacts/', # local path to artifacts
) as local_endpoint:
    predict_response = local_endpoint.predict(
        request_file='instances.json',
        headers={"Content-Type": "application/json"},
    )

    health_check_response = local_endpoint.run_health_check()

আপনি এর সাথে ভবিষ্যদ্বাণী ফলাফল দেখতে পারেন:

predict_response.content

9. Vertex AI-তে মডেল স্থাপন করুন

এখন যেহেতু আপনি স্থানীয়ভাবে ধারকটি পরীক্ষা করেছেন, এখন সময় এসেছে চিত্রটিকে আর্টিফ্যাক্ট রেজিস্ট্রিতে পুশ করার এবং মডেলটিকে Vertex AI মডেল রেজিস্ট্রিতে আপলোড করার।

প্রথমে, আর্টিফ্যাক্ট রেজিস্ট্রি অ্যাক্সেস করতে ডকার কনফিগার করুন।

!gcloud artifacts repositories create {REPOSITORY} --repository-format=docker \
--location=us-central1 --description="Docker repository"

!gcloud auth configure-docker {REGION}-docker.pkg.dev --quiet

তারপর, ইমেজ ধাক্কা.

local_model.push_image()

এবং মডেল আপলোড করুন।

model = aiplatform.Model.upload(local_model = local_model,
                                display_name=MODEL_DISPLAY_NAME,
                                artifact_uri=f"{BUCKET_NAME}/{MODEL_ARTIFACT_DIR}",)

যখন মডেলটি আপলোড করা হয়, তখন আপনি এটি কনসোলে দেখতে পাবেন:

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

তারপর, ইমেজ ধাক্কা.

endpoint = model.deploy(machine_type="n1-standard-2")

অবশেষে, একটি ভবিষ্যদ্বাণী পেয়ে মোতায়েন মডেল পরীক্ষা করুন।

endpoint.predict(instances=[[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43]])

🎉 অভিনন্দন! 🎉

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

  • কাস্টম পূর্বাভাস রুটিন সহ কাস্টম প্রিপ্রসেসিং এবং পোস্টপ্রসেসিং লজিক লিখুন

Cosmopup মনে করে কোডল্যাবগুলি দুর্দান্ত!!

e6d3675ca7c6911f.jpeg

এরপর কি?

আরও পড়া এবং ভিডিও

রেফারেন্স ডক্স