১. সংক্ষিপ্ত বিবরণ
এই ল্যাবে, আপনি ভার্টেক্স এআই ব্যবহার করে একটি বিশেষভাবে প্রশিক্ষিত মডেল থেকে অনলাইন এবং ব্যাচ প্রেডিকশন পাবেন।
এই ল্যাবটি ‘প্রোটোটাইপ টু প্রোডাকশন’ ভিডিও সিরিজের একটি অংশ। এটি করার আগে আগের ল্যাবটি অবশ্যই সম্পন্ন করবেন। আরও জানতে আপনি এর সাথে থাকা ভিডিওটি দেখতে পারেন:
.
আপনি যা শিখবেন
আপনি শিখবেন কীভাবে:
- Vertex AI মডেল রেজিস্ট্রি-তে মডেল আপলোড করুন
- একটি মডেলকে একটি এন্ডপয়েন্টে স্থাপন করুন
- UI এবং SDK ব্যবহার করে অনলাইনে ও ব্যাচ প্রেডিকশন করুন।
গুগল ক্লাউডে এই ল্যাবটি চালানোর মোট খরচ প্রায় ১ ডলার ।
২. ভার্টেক্স এআই-এর পরিচিতি
এই ল্যাবটি গুগল ক্লাউডে উপলব্ধ সর্বাধুনিক এআই প্রোডাক্টটি ব্যবহার করে। ভার্টেক্স এআই গুগল ক্লাউডের এমএল অফারিংগুলোকে একটি নির্বিঘ্ন ডেভেলপমেন্ট অভিজ্ঞতায় একীভূত করে। পূর্বে, অটোএমএল (AutoML) দিয়ে প্রশিক্ষিত মডেল এবং কাস্টম মডেলগুলো আলাদা সার্ভিসের মাধ্যমে অ্যাক্সেস করা যেত। নতুন অফারিংটি অন্যান্য নতুন প্রোডাক্টের সাথে উভয়কে একটি একক এপিআই-তে একত্রিত করেছে। আপনি আপনার বিদ্যমান প্রোজেক্টগুলোও ভার্টেক্স এআই-তে মাইগ্রেট করতে পারেন।
ভার্টেক্স এআই-এর এন্ড-টু-এন্ড এমএল ওয়ার্কফ্লো সমর্থন করার জন্য বিভিন্ন পণ্য রয়েছে। এই ল্যাবটি নিচে উল্লেখিত পণ্যগুলোর উপর আলোকপাত করবে: প্রেডিকশনস এবং ওয়ার্কবেঞ্চ।

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

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

আমদানি নির্বাচন করুন

নতুন মডেল হিসাবে আমদানি নির্বাচন করুন এবং তারপরে আপনার মডেলের একটি নাম দিন।

মডেল সেটিংস-এর অধীনে একটি প্রি-বিল্ট কন্টেইনার দিয়ে মডেলটি ইম্পোর্ট করুন এবং টেনসরফ্লো ২.৮ ব্যবহার করুন। প্রি-বিল্ট প্রেডিকশন কন্টেইনারগুলোর সম্পূর্ণ তালিকা আপনি এখানে দেখতে পারেন।
এরপর, কাস্টম ট্রেনিং জবে মডেল আর্টিফ্যাক্টগুলো যেখানে সেভ করেছেন, সেই ক্লাউড স্টোরেজ বাকেটের পাথটি দিন। এটি দেখতে অনেকটা gs://{PROJECT_ID}-bucket/model_output মতো হবে।
আমরা ব্যাখ্যাযোগ্যতা অংশটি বাদ দেব, কিন্তু আপনি যদি ভার্টেক্স এক্সপ্লেইনেবল এআই সম্পর্কে আরও জানতে চান, তাহলে ডক্সগুলো দেখে নিতে পারেন।
মডেলটি ইম্পোর্ট করা হলে, আপনি এটি রেজিস্ট্রি-তে দেখতে পাবেন।

উল্লেখ্য যে, আপনি যদি UI-এর পরিবর্তে SDK-এর মাধ্যমে এটি করতে চান, তাহলে মডেলটি আপলোড করার জন্য আপনার Workbench নোটবুক থেকে নিম্নলিখিত কমান্ডটি চালাতে পারেন।
from google.cloud import aiplatform
my_model = aiplatform.Model.upload(display_name='flower-model',
artifact_uri='gs://{PROJECT_ID}-bucket/model_output',
serving_container_image_uri='us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest')
৫. এন্ডপয়েন্টে মডেলটি স্থাপন করুন
ভার্টেক্স এআই-তে আমরা দুই ধরনের প্রেডিকশন জব চালাতে পারি: ব্যাচ এবং অনলাইন।
ব্যাচ প্রেডিকশন হলো একটি অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট। যখন আপনার তাৎক্ষণিক প্রতিক্রিয়ার প্রয়োজন হয় না এবং আপনি একটিমাত্র রিকোয়েস্টের মাধ্যমে জমা হওয়া ডেটা প্রসেস করতে চান, তখন এটি একটি ভালো সমাধান।
অন্যদিকে, যদি আপনি আপনার মডেলে তাৎক্ষণিকভাবে পাঠানো ডেটা থেকে কম ল্যাটেন্সির প্রেডিকশন পেতে চান, তাহলে আপনি অনলাইন প্রেডিকশন ব্যবহার করবেন।
যেহেতু মডেলটি এখন রেজিস্ট্রিভুক্ত হয়েছে, আমরা এটি ব্যাচ প্রেডিকশনের জন্য ব্যবহার করতে পারি।
কিন্তু আমরা যদি অনলাইন প্রেডিকশন পেতে চাই, তাহলে মডেলটিকে একটি এন্ডপয়েন্টে ডেপ্লয় করতে হবে। এর মাধ্যমে কম ল্যাটেন্সিতে প্রেডিকশনের জন্য সংরক্ষিত মডেল আর্টিফ্যাক্টগুলোকে ফিজিক্যাল রিসোর্সের সাথে যুক্ত করা হয়।
কোনো এন্ডপয়েন্টে ডেপ্লয় করতে, মডেলের একেবারে ডানদিকে থাকা তিনটি ডট নির্বাচন করুন, তারপর ‘Deploy to endpoint’ নির্বাচন করুন।

আপনার এন্ডপয়েন্টের একটি নাম দিন, তারপর বাকি সেটিংস অপরিবর্তিত রেখে CONTINUE-এ ক্লিক করুন।

এন্ডপয়েন্টগুলো অটোস্কেলিং সমর্থন করে, যার অর্থ হলো আপনি একটি সর্বনিম্ন এবং সর্বোচ্চ সীমা নির্ধারণ করতে পারেন এবং কম্পিউট নোডগুলো সেই সীমার মধ্যে ট্র্যাফিকের চাহিদা মেটাতে নিজেদের আকার বৃদ্ধি করবে।
যেহেতু এই ল্যাবটি শুধুমাত্র প্রদর্শনের জন্য এবং আমরা এই এন্ডপয়েন্টটি উচ্চ ট্র্যাফিকের জন্য ব্যবহার করব না, তাই আপনি ' Maximum number of compute notes'-কে 1-এ সেট করতে পারেন এবং ' Machine type' হিসেবে 'n1-standard-4' নির্বাচন করতে পারেন।

আমরা মডেল মনিটরিং নিয়ে আলোচনা করব না, তবে আপনি যদি এই ফিচারটি সম্পর্কে আরও জানতে চান, তাহলে ডক্সগুলো দেখে নিতে পারেন।
তারপর DEPLOY-তে ক্লিক করুন।
ডেপ্লয় করতে কয়েক মিনিট সময় লাগবে, কিন্তু এটি হয়ে গেলে আপনি দেখবেন যে Vertex AI-তে আপনার মডেলের ডেপ্লয়মেন্ট স্ট্যাটাস 'Deployed'- এ পরিবর্তিত হয়েছে।
আপনি যদি SDK-এর মাধ্যমে কোনো মডেল ডেপ্লয় করতে চান, তাহলে নিচের কমান্ডটি চালান।
my_model = aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}")
endpoint = my_model.deploy(
deployed_model_display_name='my-endpoint',
traffic_split={"0": 100},
machine_type="n1-standard-4",
accelerator_count=0,
min_replica_count=1,
max_replica_count=1,
)
৬. পূর্বাভাস নিন
অনলাইন ভবিষ্যদ্বাণী
যখন আপনার মডেলটি কোনো এন্ডপয়েন্টে ডেপ্লয় করা হয়, তখন আপনি অন্য যেকোনো রেস্ট এন্ডপয়েন্টের মতোই এটিকে অ্যাক্সেস করতে পারেন। এর মানে হলো, আপনি এটিকে একটি ক্লাউড ফাংশন, চ্যাটবট, ওয়েব অ্যাপ ইত্যাদি থেকে কল করতে পারবেন।
প্রদর্শনের উদ্দেশ্যে আমরা ওয়ার্কবেঞ্চ থেকে এই এন্ডপয়েন্টটি কল করব।
পূর্ববর্তী ল্যাবে তৈরি করা নোটবুকটিতে ফিরে যান। লঞ্চার থেকে একটি নতুন TensorFlow 2 নোটবুক তৈরি করুন।

Vertex AI Python SDK, numpy, এবং PIL ইম্পোর্ট করুন।
from google.cloud import aiplatform
import numpy as np
from PIL import Image
নিচের ছবিটি ডাউনলোড করে আপনার ওয়ার্কবেঞ্চ ইনস্ট্যান্সে আপলোড করুন। আমরা এই ড্যান্ডেলিয়ন ফুলের ছবিটির উপর মডেলটি পরীক্ষা করে দেখব।

প্রথমে এন্ডপয়েন্টটি নির্ধারণ করুন। আপনাকে নিচের {PROJECT_NUMBER} এবং {ENDPOINT_ID} প্রতিস্থাপন করতে হবে।
endpoint = aiplatform.Endpoint(
endpoint_name="projects/{PROJECT_NUMBER}/locations/us-central1/endpoints/{ENDPOINT_ID}")
আপনি ক্লাউড কনসোলের এন্ডপয়েন্টস বিভাগে আপনার endpoint_id খুঁজে পাবেন।

এবং আপনি আপনার প্রজেক্ট নম্বরটি কনসোলের হোম পেজে খুঁজে পাবেন। মনে রাখবেন, এটি প্রজেক্ট আইডি থেকে ভিন্ন।

নিচের কোডটি PIL ব্যবহার করে ছবিটি খোলে এবং এর আকার পরিবর্তন করে।
IMAGE_PATH = "test-image.jpg"
im = Image.open(IMAGE_PATH)
এরপর, নাম্পাই ডেটাকে float32 টাইপে এবং একটি লিস্টে রূপান্তর করুন। আমরা এটিকে লিস্টে রূপান্তর করি কারণ নাম্পাই ডেটা JSON সিরিয়ালাইজেবল নয়, তাই আমরা এটিকে আমাদের রিকোয়েস্টের বডিতে পাঠাতে পারি না।
x_test = np.asarray(im).astype(np.float32).tolist()
অবশেষে, endpoint.predict কল করুন।
endpoint.predict(instances=x_test).predictions
আপনি যে ফলাফলটি পান তা হলো মডেলের আউটপুট, যা ৫টি ইউনিট সহ একটি সফটম্যাক্স লেয়ার। আপনি যদি ইনডেক্সের পরিবর্তে স্ট্রিং লেবেলটি রিটার্ন করার জন্য নিজস্ব লজিক লিখতে চান, তাহলে আপনি কাস্টম প্রেডিকশন রুটিন ব্যবহার করতে পারেন।
ব্যাচ পূর্বাভাস
ব্যাচ প্রেডিকশনের জন্য আপনার ডেটা ফরম্যাট করার বিভিন্ন উপায় আছে। সরলতার জন্য, আমরা নাম্পাই (numpy) ডেটা একটি জেসন (json) ফাইলে ডাম্প করব এবং ফাইলটি ক্লাউড স্টোরেজে সংরক্ষণ করব।
with open('test-data.json', 'w') as fp:
json.dump(x_test, fp)
!gsutil cp test-data.json gs://{YOUR_BUCKET}
এরপর, মডেলটি সংজ্ঞায়িত করুন। এটি এন্ডপয়েন্ট সংজ্ঞায়িত করার মতোই, তবে এক্ষেত্রে আপনাকে ENDPOINT_ID এর পরিবর্তে MODEL_ID প্রদান করতে হবে।
my_model=aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}")
আপনি কনসোলের মডেলস সেকশন থেকে মডেলের নাম ও ভার্সন নির্বাচন করে, এবং তারপর ভার্সন ডিটেইলস (VERSION DETAILS) নির্বাচন করে মডেল আইডি খুঁজে নিতে পারেন।

সবশেষে, SDK ব্যবহার করে একটি ব্যাচ প্রেডিকশন জব কল করুন, যেখানে আপনি json ফাইলটি রেখেছেন সেই ক্লাউড স্টোরেজ পাথটি পাস করুন এবং প্রেডিকশনের ফলাফল সংরক্ষণের জন্য একটি ক্লাউড স্টোরেজ লোকেশন প্রদান করুন।
batch_prediction_job = my_model.batch_predict(
job_display_name='flower_batch_predict',
gcs_source='gs://{YOUR_BUCKET}/test-data.json',
gcs_destination_prefix='gs://{YOUR_BUCKET}/prediction-results',
machine_type='n1-standard-4',)
আপনি কনসোলের ব্যাচ প্রেডিকশন বিভাগে কাজের অগ্রগতি ট্র্যাক করতে পারেন। মনে রাখবেন যে একটি একক ছবির জন্য ব্যাচ প্রেডিকশন জব চালানো কার্যকর নয়।

এরপর কী?
এই উদাহরণে, আমরা প্রেডিকশন কল করার আগে টেস্ট ইমেজটিকে প্রথমে নামপাই (NumPy)-তে রূপান্তর করেছি। আরও বাস্তবসম্মত ব্যবহারের ক্ষেত্রে, আপনি সম্ভবত ইমেজটি সরাসরি পাঠাতে চাইবেন এবং এটিকে প্রথমে নামপাই-তে লোড করার প্রয়োজন হবে না। এটি করার জন্য, আপনাকে ইমেজ বাইট ডিকোড করতে আপনার টেনসরফ্লো (TensorFlow) সার্ভিং ফাংশনটি পরিবর্তন করতে হবে। এতে কিছুটা বেশি কাজ করতে হবে, কিন্তু বড় ইমেজ এবং অ্যাপ্লিকেশন তৈরির ক্ষেত্রে এটি অনেক বেশি কার্যকর হবে। আপনি এই নোটবুকে একটি উদাহরণ দেখতে পারেন।
🎉 অভিনন্দন! 🎉
আপনি শিখেছেন কীভাবে ভার্টেক্স এআই ব্যবহার করে:
- Vertex AI মডেল রেজিস্ট্রি-তে মডেলগুলি আপলোড করুন
- ব্যাচ এবং অনলাইন পূর্বাভাস পান
Vertex-এর বিভিন্ন অংশ সম্পর্কে আরও জানতে ডকুমেন্টেশন দেখুন।
৭. পরিচ্ছন্নতা
আপনি যদি মডেলগুলো ব্যবহার করার পরিকল্পনা না করেন, তবে এন্ডপয়েন্ট থেকে সেগুলোকে আনডিপ্লয় করে দিতে পারেন। আপনি এন্ডপয়েন্টটি সম্পূর্ণভাবে মুছেও ফেলতে পারেন। প্রয়োজনে আপনি যেকোনো সময় একটি মডেলকে এন্ডপয়েন্টে পুনরায় ডিপ্লয় করতে পারবেন।

ওয়ার্কবেঞ্চ দ্বারা পরিচালিত নোটবুকগুলো ১৮০ মিনিট নিষ্ক্রিয় থাকার পর স্বয়ংক্রিয়ভাবে টাইম আউট হয়ে যায়, তাই ইনস্ট্যান্সটি শাট ডাউন করার বিষয়ে আপনাকে চিন্তা করতে হবে না। আপনি যদি ইনস্ট্যান্সটি ম্যানুয়ালি শাট ডাউন করতে চান, তাহলে কনসোলের Vertex AI Workbench সেকশনে থাকা Stop বাটনে ক্লিক করুন। আর যদি নোটবুকটি পুরোপুরি মুছে ফেলতে চান, তাহলে Delete বাটনে ক্লিক করুন।

স্টোরেজ বাকেটটি ডিলিট করতে, আপনার ক্লাউড কনসোলের নেভিগেশন মেনু ব্যবহার করে স্টোরেজ-এ যান, আপনার বাকেটটি সিলেক্ট করুন এবং ডিলিট-এ ক্লিক করুন:
