১. ভূমিকা
এই কোডল্যাবে, আপনি শিখবেন কীভাবে GKE ডাইনামিক স্লাইসিং ব্যবহার করে ক্লাউড TPU রিসোর্সের ব্যবহারকে অপ্টিমাইজ করা যায়। ডাইনামিক স্লাইসিং একটি শক্তিশালী সক্ষমতা যা আপনাকে ওয়ার্কলোড শিডিউলিং থেকে র TPU প্রভিশনিংকে আলাদা করতে সাহায্য করে।
বিশেষভাবে, আপনি দুটি মূল ধরণ অন্বেষণ করবেন:
- সাব-স্লাইসিং : ছোট ওয়ার্কলোডের জন্য একটি বড় বরাদ্দকৃত টিপিইউ ব্লককে ছোট ছোট, বিচ্ছিন্ন স্লাইসে বিভক্ত করা।
- সুপার-স্লাইসিং : বৃহৎ আকারের ওয়ার্কলোডের জন্য একাধিক প্রোভিশনড টিপিইউ ব্লক একসাথে জুড়ে দিয়ে একটি বৃহত্তর ভার্চুয়াল স্লাইস তৈরি করা।
আপনি Kueue , LeaderWorkerSet (LWS) এবং Gateway API ব্যবহার করে একটি বৃহৎ ল্যাঙ্গুয়েজ মডেলের (Qwen 397B) জন্য একটি উচ্চ-পারফরম্যান্স ডিসঅ্যাগ্রিগেটেড সার্ভিং (প্রিফিল/ডিকোড ডিসঅ্যাগ্রিগেশন) আর্কিটেকচার ডেপ্লয় করতে এই প্যাটার্নগুলো প্রয়োগ করবেন।
স্থাপত্য
টিপিইউ ডাইনামিক স্লাইসিং এবং ডিসঅ্যাগ্রিগেটেড সার্ভিং সেটআপের উচ্চ-স্তরের স্থাপত্যটি নিচে দেওয়া হলো:

আপনি যা করবেন
- GKE স্লাইস কন্ট্রোলার সক্রিয় করে একটি GKE ক্লাস্টার প্রস্তুত করুন।
- ইনক্রিমেন্টাল প্রভিশনিং-এর জন্য কনফিগার করা GKE TPU নোড পুল তৈরি করুন।
- TPU ওয়ার্কলোড পরিচালনা করতে Kueue এবং LeaderWorkerSet স্থাপন করুন।
- ছোট স্লাইসগুলিতে JAX TPU অ্যাক্সেস যাচাই করতে একটি সাবস্লাইসিং ওয়ার্কলোড চালান।
- একাধিক সম্মিলিত নোড পুল জুড়ে JAX TPU অ্যাক্সেস যাচাই করতে একটি সুপারস্লাইসিং ওয়ার্কলোড চালান।
- একটি ডিসঅ্যাগ্রিগেটেড সার্ভিং সেটআপ স্থাপন করুন যেখানে প্রিফিল এবং ডিকোড পর্যায়গুলো একটি এলএলএম রাউটার দ্বারা সমন্বিত হয়ে পৃথক, ডাইনামিকভাবে বরাদ্দকৃত টিপিইউ স্লাইসে চলে।
আপনার যা যা লাগবে
- ক্রোমের মতো একটি ওয়েব ব্রাউজার।
- বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।
- গুরুত্বপূর্ণ : ক্লাউড টিপিইউ৭এক্স (আয়রনউড) এর সকল ক্যাপাসিটি মোড রিজার্ভেশন অ্যাক্সেস করতে হবে।
২. শুরু করার আগে
একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন বা নির্বাচন করুন
একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন
- গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন ।
- আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
ক্লাউড শেল শুরু করুন
ক্লাউড শেল হলো গুগল ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ, যা প্রয়োজনীয় টুলস সহ আগে থেকেই লোড করা থাকে।
- Google Cloud কনসোলের শীর্ষে থাকা Activate Cloud Shell-এ ক্লিক করুন।
- ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনার প্রমাণীকরণ যাচাই করুন:
gcloud auth list - আপনার প্রজেক্টটি কনফিগার করা হয়েছে কিনা তা নিশ্চিত করুন:
gcloud config get project - আপনার প্রজেক্টটি প্রত্যাশা অনুযায়ী সেট করা না থাকলে, এটি সেট করুন:
export PROJECT_ID=<YOUR_PROJECT_ID> gcloud config set project $PROJECT_ID
ডেমো রিপোজিটরি ক্লোন করুন
এই কোডল্যাবের ম্যানিফেস্ট এবং হেল্পার স্ক্রিপ্টগুলো ধারণকারী রিপোজিটরিটি ক্লোন করুন:
git clone --depth 1 --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos
git sparse-checkout set ai-ml/dynamic-slicing
cd ai-ml/dynamic-slicing
৩. পরিবেশ কনফিগার করুন
রিসোর্স প্রোভিশনিং করার আগে, আপনাকে আপনার এনভায়রনমেন্ট ভেরিয়েবল কনফিগার করতে হবে। একটি env.sh ফাইল তৈরি করার জন্য 01_setup_env.sh একটি হেল্পার স্ক্রিপ্ট দেওয়া হয়েছে।
সেটআপ স্ক্রিপ্টটি চালান:
./01_setup_env.sh
আপনাকে কয়েকটি মান লিখতে বলা হবে। ডিফল্ট মানগুলো গ্রহণ করতে [ENTER] চাপুন, তবে আপনার ইভেন্ট প্রশিক্ষকের দেওয়া সঠিক রিজার্ভেশন নাম এবং রিজার্ভেশন ব্লক অবশ্যই প্রদান করবেন:
- জিসিপি প্রজেক্ট আইডি : আপনার বর্তমান প্রজেক্ট আইডি।
- জিসিপি প্রজেক্ট নম্বর : আপনার প্রজেক্ট নম্বর।
- GKE ক্লাস্টারের নাম :
tpu-serving-cluster(ডিফল্ট)। - টিপিইউ নোড পুল জোন :
us-central1-ai1a(ডিফল্ট)। - কুবারনেটিস নেমস্পেস :
llm-d-pd-disaggregation(ডিফল্ট)। - ক্লাউড টিপিইউ রিজার্ভেশনের নাম : [প্রদত্ত রিজার্ভেশনের নাম লিখুন]
- ক্লাউড টিপিইউ রিজার্ভেশন ব্লকের নাম :
block-0(ডিফল্ট)। - ওয়েট-এর জন্য GCS বাকেট নেম :
model-weights(ডিফল্ট)। - টিপিইউ মেশিনের ধরণ :
tpu7x-standard-4t(ডিফল্ট)। - হাগিং ফেস টোকেন : [প্রয়োজনে আপনার HF টোকেন প্রবেশ করান, অথবা আগে থেকে লোড করা ওজন ব্যবহার করলে ENTER চাপুন]
স্ক্রিপ্টটি চালানোর পর, ভেরিয়েবলগুলো আপনার বর্তমান সেশনে প্রয়োগ করুন:
source env.sh
৪. এপিআই এবং এআই জোন ফিচারগুলো সক্রিয় করুন
এখন যেহেতু আপনার পরিবেশ কনফিগার করা হয়েছে, আপনাকে প্রয়োজনীয় গুগল ক্লাউড এপিআই (Google Cloud APIs) এবং এআই জোন ভিজিবিলিটি (AI Zone visibility) ফিচারটি চালু করতে হবে। 02_enable_apis_and_features.sh নামের একটি সহায়ক স্ক্রিপ্ট দেওয়া হয়েছে।
স্ক্রিপ্টটি চালান:
./02_enable_apis_and_features.sh
এই স্ক্রিপ্ট:
- GKE, Compute, IAM, Resource Manager, Filestore, এবং Network Services API-গুলো সক্রিয় করে।
- GKE ডাইনামিক স্লাইসিং-এর জন্য
ai-zones-visibilityপ্রিভিউ ফিচারটি সক্রিয় করে।
৫. GKE ক্লাস্টার এবং TPU নোড পুল সরবরাহ করুন
এই ধাপে, আপনি অন্তর্নিহিত নেটওয়ার্ক অবকাঠামো, GKE ক্লাস্টার এবং TPU নোড পুলগুলো প্রস্তুত করবেন।
টিপিইউ নোড পুলগুলি ইনক্রিমেন্টাল প্রভিশনিং ( --placement-policy=superslice-policy এবং --reservation-affinity=specific ব্যবহার করে) দিয়ে কনফিগার করা হবে, যা প্রতিটি নোড পুলকে র TPU ক্যাপাসিটির একটি ১৬-নোডের 'কিউব' (সাব-ব্লক)-এর সাথে ম্যাপ করে।
প্রোভিশনিং স্ক্রিপ্টটি চালান:
./03_create_cluster_and_nodes.sh
এই স্ক্রিপ্টটি যা করে:
- ভিপিসি নেটওয়ার্ক ও সাবনেট তৈরি করে : এটি টিপিইউ ট্র্যাফিকের জন্য অপ্টিমাইজ করা একটি বৃহৎ এমটিইউ (৮৮৯৬) সহ একটি প্রধান ভিপিসি নেটওয়ার্ক, একটি টিপিইউ সাবনেট এবং জিকেই গেটওয়ের জন্য প্রয়োজনীয় একটি প্রক্সি-অনলি সাবনেট সেট আপ করে।
- GKE ক্লাস্টার তৈরি করে : স্লাইস কন্ট্রোলার সক্রিয় (
--enable-slice-controller) করে একটি স্ট্যান্ডার্ড GKE ক্লাস্টার প্রোভিশন করে। - ওয়ার্কলোড পলিসি তৈরি করে : এটি
4x4x4টপোলজিসহHIGH_THROUGHPUTটাইপেরsuperslice-policyনামের একটি রিসোর্স পলিসি নির্ধারণ করে। - GKE TPU নোড পুল তৈরি করে : দুটি নোড পুল (
tpu7-pool-1এবংtpu7-pool-2) প্রোভিশন করে, যার প্রতিটিতেtpu7x-standard-4tএর ১৬টি নোড থাকে। এগুলো দুটি পৃথক ১৬-নোড কিউবকে প্রতিনিধিত্ব করে।
নোডগুলি যাচাই করুন
স্ক্রিপ্টটি সম্পন্ন হলে, যাচাই করুন যে ৩২টি টিপিইউ নোডই প্রোভিশন এবং রেজিস্টার করা হয়েছে:
kubectl get nodes -l google.com/tpu=present
তালিকায় আপনি ৩২টি নোড দেখতে পাবেন।
৬. অর্কেস্ট্রেশন টুলস ইনস্টল করুন
ডাইনামিক স্লাইসিং জব সমন্বয় এবং স্লাইস বরাদ্দের জন্য একাধিক কুবারনেটিস কন্ট্রোলারের উপর নির্ভর করে। আপনাকে ইনস্টল করতে হবে:
- জবসেট : একাধিক জবের গ্রুপ পরিচালনার জন্য (সুপারস্লাইসিংয়ের জন্য প্রয়োজন)।
- Kueue : কিউইং, রিসোর্স ম্যানেজমেন্ট এবং টপোলজি অ্যাওয়্যার শিডিউলিং (TAS)-এর জন্য।
- লিডারওয়ার্কারসেট (LWS) : প্রতিলিপিকৃত বহু-নোড টিপিইউ স্থাপন ব্যবস্থাপনার জন্য (এলএলএম সার্ভিংয়ের জন্য প্রয়োজন)।
- GKE স্লাইস কন্ট্রোলার (ইউজার স্পেস) : ফিজিক্যাল স্লাইসগুলোকে ডায়নামিকভাবে পরিচালনা করার জন্য Kueue-কে TPU ক্লাস্টার ডিরেক্টরের সাথে সংযুক্ত করে।
ইনস্টলেশন স্ক্রিপ্টটি চালান:
./04_install_kueue_lws_slice_controller.sh
স্লাইস কন্ট্রোলারটি সফলভাবে চলছে কিনা তা যাচাই করুন:
kubectl rollout status deployment/slice-controller-controller-manager -n slice-controller-system
৭. কিউ রিসোর্স কনফিগার করুন
এখন আপনাকে আপনার TPU হার্ডওয়্যার টপোলজির প্রতিনিধিত্বকারী Kueue রিসোর্সগুলো সংজ্ঞায়িত করতে হবে এবং অ্যাডমিশন চেকগুলো কনফিগার করতে হবে।
ডিপ্লয়মেন্ট স্ক্রিপ্টটি চালান:
./05_deploy_kueue_resources.sh
মোতায়েনকৃত মূল সম্পদসমূহ:
- টপোলজি (
slice-topology) : টিপিইউ পার্টিশনের স্তরক্রম (ব্লক থেকে হোস্টনেম পর্যন্ত) নির্ধারণ করে, যা শিডিউলিং করার সময় Kueue বিবেচনা করবে। - ResourceFlavor (
slice-rf) :slice-topologytpu7xঅ্যাক্সেলারেটরের সাথে যুক্ত করে। - অ্যাডমিশনচেক (
ac) : কোনো জব অ্যাডমিট করা হলে, ডায়নামিকভাবে স্লাইস প্রোভিশন করার জন্য Kueue-কে GKE স্লাইস কন্ট্রোলার (accelerator.gke.io/slice) ব্যবহার করতে কনফিগার করে। - ClusterQueue (
cq) & LocalQueue (lq) : যে কিউগুলিতে ওয়ার্কলোড জমা দেওয়া হবে, সেগুলি সেট আপ করে। - WorkloadPriorityClass (
low-priority-1000,medium-priority-2000,high-priority-3000) : প্রিএম্পশন এবং অগ্রাধিকার-ভিত্তিক শিডিউলিং সক্ষম করার জন্য অগ্রাধিকারের স্তর নির্ধারণ করে।
সম্পদগুলো যাচাই করুন:
kubectl get topology slice-topology
kubectl get resourceflavor slice-rf
kubectl get admissioncheck ac
kubectl get clusterqueue cq
kubectl get localqueue lq -n ${NAMESPACE}
৮. সাবস্লাইসিং সহ টিপিইউ অ্যাক্সেস স্থাপন এবং যাচাই করুন
সাব-স্লাইসিং আপনাকে একটিমাত্র প্রোভিশনড টিপিইউ ব্লকের মধ্যে একাধিক ছোট ওয়ার্কলোড চালানোর সুযোগ দেয়। এই ধাপে, আপনি 4x4x4 (64 চিপ / 16 ভিএম) ব্লক দিয়ে তৈরি একটি ক্লাস্টারে 2x2x2 টপোলজির (8 চিপ / 2 ভিএম) জন্য একটি ওয়ার্কলোড জমা দেবেন।
সাবস্লাইসিং ওয়ার্কলোডটি স্থাপন করুন:
./06_deploy_simple_subslicing.sh
এই স্ক্রিপ্টটি kueue-jobset-simple-subslicing.yaml ফাইলটি প্রয়োগ করে।
এটি যেভাবে কাজ করে:
- JobSet স্পেকে
cloud.google.com/gke-tpu-slice-topology: 2x2x2অ্যানোটেশনটি অন্তর্ভুক্ত রয়েছে। - এটি
replicas: 6এবংparallelism: 2(কমপ্লিশন: ২) কনফিগার করে। এর মানে হলো, Kueue ৬টি স্বাধীন জব শিডিউল করবে, যার প্রতিটি ২টি পড নিয়ে গঠিত। - প্রতিটি পড
google.com/tpu: "4"(1 TPU VM) এর জন্য অনুরোধ করে। - Kueue এবং GKE স্লাইস কন্ট্রোলার গতিশীলভাবে ৩২-নোড ক্লাস্টারটিকে ছয়টি
2x2x2স্লাইসে বিভক্ত করে।
JAX এক্সিকিউশন যাচাই করুন
পডগুলো চালু না হওয়া পর্যন্ত পর্যবেক্ষণ করুন:
kubectl get pods -n ${NAMESPACE} -l jobset.sigs.k8s.io/jobset-name=kueue-jobset-simple-subslicing
JAX তার সাব-স্লাইসে ৮টি TPU ডিভাইস (কোর) সফলভাবে শনাক্ত করেছে কিনা, তা যাচাই করতে পডগুলোর মধ্যে একটির লগ পরীক্ষা করুন:
kubectl logs $(kubectl get pods -n ${NAMESPACE} -l jobset.sigs.k8s.io/jobset-name=kueue-jobset-simple-subslicing -o name | head -n 1) -n ${NAMESPACE}
আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন: Total TPU devices (cores): 8
৯. সুপারস্লাইসিং ব্যবহার করে টিপিইউ অ্যাক্সেস স্থাপন ও যাচাই করুন
সুপার-স্লাইসিং হলো GKE-এর একটি শক্তিশালী ফিচার যা একটি একক ওয়ার্কলোডকে একাধিক ফিজিক্যাল TPU ব্লক জুড়ে বিস্তৃত হতে দেয় (যা প্রায়শই কিউব বা 4x4x4 মতো টপোলজি হিসাবে উল্লেখ করা হয়)। এই ব্লকগুলিকে একসাথে জুড়ে দিয়ে, আপনি বড় আকারের ট্রেনিং বা ওয়ার্কলোড সার্ভ করার জন্য একটি বৃহত্তর ভার্চুয়াল স্লাইস তৈরি করতে পারেন। এই ধাপে, আপনি এমন একটি জবসেট ডেপ্লয় করবেন যা একটি 4x4x8 টপোলজি (128 চিপ / 32 VM) অনুরোধ করে। যেহেতু একটি একক 4x4x4 ব্লকে মাত্র 64টি চিপ থাকে, তাই এই ওয়ার্কলোডটি একটি একক ব্লকের আকার অতিক্রম করে এবং অনুরোধটি পূরণ করার জন্য GKE-কে ডাইনামিকভাবে tpu7-pool-1 এবং tpu7-pool-2 নোড পুলগুলিকে একসাথে জুড়ে দিতে হয়।
সুপারস্লাইসিং ওয়ার্কলোডটি স্থাপন করুন:
./07_deploy_simple_superslicing.sh
এই স্ক্রিপ্টটি kueue-jobset-simple-superslicing.yaml ফাইলটি প্রয়োগ করে।
এটি যেভাবে কাজ করে:
- JobSet টেমপ্লেটটিতে
cloud.google.com/gke-tpu-slice-topology: 4x4x8অ্যানোটেশনটি অন্তর্ভুক্ত রয়েছে। - এটি
parallelism: 32এবংcompletions: 32কনফিগার করে। - প্রতিটি পড
google.com/tpu: "4"জন্য অনুরোধ করে। - যেহেতু একটি
4x4x8টপোলজির জন্য ৩২টি নোডেরই প্রয়োজন হয়, তাই স্লাইস কন্ট্রোলার দুটি ১৬-নোডের পুলকে আন্তঃসংযুক্ত করে একটি একক ৩২-নোডের আইসিআই মেশ তৈরি করার জন্য ডায়নামিকভাবে ওসিএস (অপটিক্যাল সার্কিট সুইচিং) নেটওয়ার্ক কনফিগার করে।
যাচাই করুন যে JobSet পডগুলি সফলভাবে চলছে এবং JAX সমস্ত ১২৮টি ডিভাইস সনাক্ত করতে পারছে:
kubectl get pods -n ${NAMESPACE} -l jobset.sigs.k8s.io/jobset-name=kueue-jobset-simple-superslicing
পডগুলোর মধ্যে একটির লগগুলো পরীক্ষা করুন:
kubectl logs $(kubectl get pods -n ${NAMESPACE} -l jobset.sigs.k8s.io/jobset-name=kueue-jobset-simple-superslicing -o name | head -n 1) -n ${NAMESPACE}
আপনি JAX আউটপুটে গ্লোবাল ডিভাইসের সংখ্যা দেখতে পাবেন: Global device count: 128
১০. বিচ্ছিন্ন পরিবেশন স্থাপন করুন (প্রিফিল/ডিকোড)
এখন আপনি প্রিফিল/ডিকোড ডিসঅ্যাগ্রিগেশন ব্যবহার করে এন্ড-টু-এন্ড এলএলএম সার্ভিং স্ট্যাকটি ডেপ্লয় করবেন।
স্ট্যান্ডার্ড সার্ভিং-এ, প্রিফিল (প্রম্পট প্রসেসিং) এবং ডিকোড (টোকেন তৈরি করা) একই টিপিইউ-তে চলে। যেহেতু প্রিফিল কম্পিউট-বাউন্ড এবং ডিকোড মেমরি-ব্যান্ডউইথ-বাউন্ড, তাই এগুলোর মধ্যে সংঘাত ঘটে। ডিসঅ্যাগ্রিগেটেড সার্ভিং এগুলোকে আলাদা টিপিইউ স্লাইসে চালায় এবং নেটওয়ার্কের মাধ্যমে কেভি ক্যাশে স্থানান্তর করে।
LLM-D এবং গেটওয়ে সেটআপ করুন
নেমস্পেস, হাগিং ফেস সিক্রেটস এবং জিকেই গেটওয়ে সেটআপ করুন:
./08_setup_llm_d.sh
LLM-D রাউটার স্থাপন করুন
সেই রাউটারটি স্থাপন করুন যা ক্লায়েন্টের অনুরোধ গ্রহণ করবে এবং প্রিফিল ও ডিকোড স্লাইসগুলির মধ্যে রাউটিং সমন্বয় করবে:
./09_deploy_llm_d_router.sh
প্রিফিল এবং ডিকোড ওয়ার্কলোড স্থাপন করুন
ডায়নামিকভাবে বরাদ্দকৃত TPU স্লাইসগুলিতে vLLM মডেল সার্ভারগুলি স্থাপন করুন:
./10_deploy_subslicing_pd_workload.sh
এর ফলে যা হয়:
-
kueue-vllm-prefill-model-streamerস্থাপন করা হচ্ছে (LWS একটি2x2x2TPU স্লাইসের জন্য অনুরোধ করছে)। -
kueue-vllm-decode-model-streamerস্থাপন করা হচ্ছে (LWS একটি2x2x2TPU স্লাইসের অনুরোধ করছে)। - প্রিফিল স্লাইসটি Qwen 397B মডেলের ওয়েটগুলো লোড করে এবং
kv_producerহিসেবে কাজ করে। - ডিকোড স্লাইসটি
kv_consumerহিসেবে কাজ করে। - তারা KV ক্যাশে স্থানান্তরের জন্য
TPUConnectorHMAব্যবহার করে যোগাযোগ করে।
প্রিফিল এবং ডিকোড উভয় পড চালু হওয়া পর্যন্ত অপেক্ষা করুন:
kubectl get pods -n ${NAMESPACE} -l llm-d.ai/role=prefill
kubectl get pods -n ${NAMESPACE} -l llm-d.ai/role=decode
১১. পরিবেশন যাচাই করুন
রাউটার, প্রিফিল এবং ডিকোড ওয়ার্কলোডগুলো চালু থাকা অবস্থায়, আপনি এখন সার্ভিং এপিআই যাচাই করতে পারেন।
যাচাইকরণ স্ক্রিপ্টটি চালান:
./11_verify_serving.sh
এটি যেভাবে কাজ করে:
- স্ক্রিপ্টটি GKE গেটওয়ের অভ্যন্তরীণ আইপি সংগ্রহ করে।
- এটি
http://${GATEWAY_IP}/v1/completionsএ একটি সমাপ্তি অনুরোধ পাঠানোর জন্য একটি অস্থায়ী পড (curl-debug-comp) চালু করে। - এটি
http://${GATEWAY_IP}/v1/chat/completionsএ একটি চ্যাট অনুরোধ পাঠানোর জন্য আরেকটি পড (curl-debug-chat) চালু করে।
আপনি Qwen মডেল থেকে একটি সফল JSON প্রতিক্রিয়া দেখতে পাবেন:
{
"choices": [
{
"text": "... [Model Response] ..."
}
]
}
১২. পরিষ্কার করুন
আপনার গুগল ক্লাউড অ্যাকাউন্টে চলমান চার্জ এড়াতে, এই কোডল্যাব চলাকালীন তৈরি করা রিসোর্সগুলো মুছে ফেলুন।
টিয়ারডাউন স্ক্রিপ্টটি চালান:
./12_teardown_cleanup.sh
এই স্ক্রিপ্টটি যা করে:
- GKE নোড পুলগুলো (
tpu7-pool-1,tpu7-pool-2) মুছে ফেলা হয়েছে। - GKE ক্লাস্টার (
tpu-serving-cluster) মুছে ফেলে। - রিসোর্স পলিসি (
superslice-policy) মুছে ফেলে। - VPC নেটওয়ার্কগুলো (
qwen-serving-main) মুছে ফেলে।
বিকল্পভাবে, যদি আপনি এই কোডল্যাবের জন্য একটি ডেডিকেটেড প্রজেক্ট তৈরি করে থাকেন, তাহলে আপনি পুরো প্রজেক্টটি ডিলিট করে দিতে পারেন:
gcloud projects delete ${PROJECT_ID}
১৩. অভিনন্দন
অভিনন্দন! আপনি সফলভাবে GKE ডাইনামিক স্লাইসিং অন্বেষণ করেছেন এবং একটি ডিসঅ্যাগ্রিগেটেড এলএলএম সার্ভিং আর্কিটেকচার স্থাপন করেছেন।
আপনি যা শিখেছেন
- ইনক্রিমেন্টাল প্রভিশনিং- এর জন্য কীভাবে GKE স্লাইস কন্ট্রোলার সক্রিয় করবেন এবং নোড পুল কনফিগার করবেন।
- নির্দিষ্ট TPU টপোলজি অনুরোধ করতে কীভাবে Kueue ব্যবহার করবেন
- কীভাবে সাব-স্লাইসিং একটি বড় TPU ব্লককে ছোট ছোট ও স্বাধীন JAX ওয়ার্কলোডের জন্য বিভক্ত করে।
- সুপার-স্লাইসিং কীভাবে একাধিক নোড পুলকে একত্রিত করে একটি একক বৃহত্তর ভার্চুয়াল টিপিইউ স্লাইস তৈরি করে।
- LWS, Gateway API, এবং vLLM ব্যবহার করে কীভাবে Prefill/Decode বিচ্ছিন্ন পরিবেশন স্থাপন করা যায়।