Kueue और LeaderWorkerSet की मदद से, GKE पर टीपीयू की डाइनैमिक स्लाइसिंग

1. परिचय

इस कोडलैब में, Cloud TPU संसाधनों के इस्तेमाल को ऑप्टिमाइज़ करने के लिए, GKE डाइनैमिक स्लाइसिंग का इस्तेमाल करने का तरीका बताया गया है. डाइनैमिक स्लाइसिंग एक ऐसी सुविधा है जिसकी मदद से, टीपीयू को वर्कलोड के हिसाब से अलग-अलग हिस्सों में बांटा जा सकता है.

खास तौर पर, आपको दो मुख्य पैटर्न के बारे में पता चलेगा:

  • सब-स्लाइसिंग: इसमें, बड़े प्रोविज़न किए गए टीपीयू ब्लॉक को छोटे वर्कलोड के लिए, छोटे और अलग-अलग स्लाइस में बांटा जाता है.
  • सुपर-स्लाइसिंग: ज़्यादा वर्कलोड के लिए, एक बड़ा वर्चुअल स्लाइस बनाने के लिए, एक साथ कई टीपीयू ब्लॉक को जोड़ना.

आपको इन पैटर्न को लागू करके, Kueue, LeaderWorkerSet (LWS), और Gateway API का इस्तेमाल करके, बड़े भाषा मॉडल (Qwen 397B) के लिए, बेहतर परफ़ॉर्मेंस वाला Disaggregated Serving (Prefill/Decode disaggregation) आर्किटेक्चर डिप्लॉय करना होगा.

आर्किटेक्चर

यहां टीपीयू डाइनैमिक स्लाइसिंग और डिसऐग्रिगेटेड सर्विंग सेटअप का हाई-लेवल आर्किटेक्चर दिया गया है:

TPU डाइनैमिक स्लाइसिंग आर्किटेक्चर

आपको क्या करना होगा

  • GKE स्लाइस कंट्रोलर चालू करके, GKE क्लस्टर प्रोविज़न करें.
  • इंक्रीमेंटल प्रोविज़निंग के लिए कॉन्फ़िगर की गई GKE टीपीयू नोड पूल बनाएं.
  • टीपीयू वर्कलोड मैनेज करने के लिए, Kueue और LeaderWorkerSet डिप्लॉय करें.
  • छोटे स्लाइस पर JAX TPU के ऐक्सेस की पुष्टि करने के लिए, सबस्लाइसिंग वर्कलोड चलाएं.
  • एक से ज़्यादा कंबाइंड नोड पूल में JAX TPU के ऐक्सेस की पुष्टि करने के लिए, सुपरस्लाइसिंग वर्कलोड चलाएं.
  • डिसऐग्रिगेटेड सर्विंग सेटअप डिप्लॉय करें. इसमें प्रीफ़िल और डिकोड स्टेज, अलग-अलग और डाइनैमिक तरीके से असाइन किए गए टीपीयू स्लाइस पर चलते हैं. इन्हें एलएलएम राउटर मैनेज करता है.

आपको किन चीज़ों की ज़रूरत होगी

  • कोई वेब ब्राउज़र, जैसे कि Chrome.
  • बिलिंग की सुविधा वाला Google क्लाउड प्रोजेक्ट.
  • अहम जानकारी: Cloud TPU7x (Ironwood) के सभी कैपेसिटी मोड को रिज़र्व करने का ऐक्सेस.

2. शुरू करने से पहले

Google Cloud प्रोजेक्ट बनाना या चुनना

Google Cloud प्रोजेक्ट बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके क्लाउड प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. यह देखने का तरीका जानें कि किसी प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है या नहीं.

Cloud Shell शुरू करना

Cloud Shell, Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. इसमें ज़रूरी टूल पहले से लोड होते हैं.

  1. Google Cloud कंसोल में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें.
  2. Cloud Shell से कनेक्ट होने के बाद, अपने क्रेडेंशियल की पुष्टि करें:
    gcloud auth list
    
  3. पुष्टि करें कि आपका प्रोजेक्ट कॉन्फ़िगर किया गया है:
    gcloud config get project
    
  4. अगर आपका प्रोजेक्ट उम्मीद के मुताबिक सेट नहीं है, तो इसे सेट करें:
    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

3. एनवायरमेंट कॉन्फ़िगर करना

संसाधन उपलब्ध कराने से पहले, आपको अपने एनवायरमेंट वैरिएबल कॉन्फ़िगर करने होंगे. env.sh फ़ाइल जनरेट करने के लिए, हेल्पर स्क्रिप्ट 01_setup_env.sh दी जाती है.

सेटअप स्क्रिप्ट चलाएं:

./01_setup_env.sh

आपको कई वैल्यू डालने के लिए कहा जाएगा. डिफ़ॉल्ट वैल्यू स्वीकार करने के लिए, [ENTER] दबाएं. हालांकि, पक्का करें कि आपने इवेंट के इंस्ट्रक्टर से मिले बुकिंग का नाम और बुकिंग ब्लॉक की सही जानकारी दी हो:

  • GCP प्रोजेक्ट आईडी: यह आपके मौजूदा प्रोजेक्ट का आईडी है.
  • GCP प्रोजेक्ट नंबर: आपका प्रोजेक्ट नंबर.
  • GKE क्लस्टर का नाम: tpu-serving-cluster (डिफ़ॉल्ट).
  • TPU नोड पूल ज़ोन: us-central1-ai1a (डिफ़ॉल्ट).
  • Kubernetes नेमस्पेस: llm-d-pd-disaggregation (डिफ़ॉल्ट).
  • Cloud TPU की बुकिंग का नाम: [Enter the provided reservation name]
  • Cloud TPU के लिए रिज़र्वेशन ब्लॉक का नाम: block-0 (डिफ़ॉल्ट).
  • वज़न के लिए GCS बकेट का नाम: model-weights (डिफ़ॉल्ट).
  • TPU मशीन टाइप: tpu7x-standard-4t (डिफ़ॉल्ट).
  • Hugging Face टोकन: [अगर ज़रूरी हो, तो अपना HF टोकन डालें या पहले से लोड किए गए वेट का इस्तेमाल करने के लिए, ENTER दबाएं]

स्क्रिप्ट चलाने के बाद, अपने मौजूदा सेशन में वैरिएबल लागू करें:

source env.sh

4. एपीआई और एआई ज़ोन की सुविधाएं चालू करना

अब आपका एनवायरमेंट कॉन्फ़िगर हो गया है. इसके बाद, आपको ज़रूरी Google Cloud API और एआई ज़ोन की दिखने की सुविधा चालू करनी होगी. एक हेल्पर स्क्रिप्ट 02_enable_apis_and_features.sh दी गई है.

स्क्रिप्ट चलाएं:

./02_enable_apis_and_features.sh

यह स्क्रिप्ट:

  1. यह GKE, Compute, IAM, Resource Manager, Filestore, और Network Services API चालू करता है.
  2. यह कुकी, GKE Dynamic Slicing के लिए ai-zones-visibility की झलक दिखाने वाली सुविधा को चालू करती है.

5. GKE क्लस्टर और टीपीयू नोड पूल उपलब्ध कराना

इस चरण में, आपको नेटवर्क इन्फ़्रास्ट्रक्चर, GKE क्लस्टर, और टीपीयू नोड पूल उपलब्ध कराने होंगे.

टीपीयू नोड पूल, इंक्रीमेंटल प्रॉविज़निंग (--placement-policy=superslice-policy और --reservation-affinity=specific का इस्तेमाल करके) के साथ कॉन्फ़िगर किए जाएंगे. इससे हर नोड पूल को रॉ टीपीयू क्षमता के 16 नोड वाले "क्यूब" (सब-ब्लॉक) पर मैप किया जा सकेगा.

सर्टिफ़िकेट को मैनेज करने वाली स्क्रिप्ट चलाएं:

./03_create_cluster_and_nodes.sh

यह स्क्रिप्ट क्या करती है:

  1. VPC नेटवर्क और सबनेट बनाता है: यह टीपीयू ट्रैफ़िक के लिए ऑप्टिमाइज़ किया गया, बड़ा MTU (8896) वाला मुख्य वीपीसी नेटवर्क सेट अप करता है. साथ ही, यह टीपीयू सबनेट और GKE गेटवे के लिए ज़रूरी प्रॉक्सी-ओनली सबनेट भी सेट अप करता है.
  2. GKE क्लस्टर बनाता है: यह स्लाइस कंट्रोलर की सुविधा चालू (--enable-slice-controller) करके, स्टैंडर्ड GKE क्लस्टर उपलब्ध कराता है.
  3. Workload Policy बनाता है: यह 4x4x4 टोपोलॉजी के साथ HIGH_THROUGHPUT टाइप की superslice-policy नाम की संसाधन नीति तय करता है.
  4. GKE टीपीयू नोड पूल बनाता है: दो नोड पूल (tpu7-pool-1 और tpu7-pool-2) उपलब्ध कराता है. इनमें से हर नोड पूल में tpu7x-standard-4t के 16 नोड होते हैं. ये दो अलग-अलग 16-नोड क्यूब को दिखाते हैं.

नोड की पुष्टि करना

स्क्रिप्ट पूरी होने के बाद, पुष्टि करें कि सभी 32 टीपीयू नोड उपलब्ध कराए गए हैं और रजिस्टर किए गए हैं:

kubectl get nodes -l google.com/tpu=present

आपको सूची में 32 नोड दिखने चाहिए.

6. ऑर्केस्ट्रेशन टूल इंस्टॉल करना

डाइनैमिक स्लाइसिंग, कई Kubernetes कंट्रोलर पर निर्भर करती है. ये कंट्रोलर, जॉब को मैनेज करने और स्लाइस असाइन करने में मदद करते हैं. आपको ये इंस्टॉल करने होंगे:

  • JobSet: यह जॉब के ग्रुप को मैनेज करने के लिए होता है. इसकी ज़रूरत सुपरस्लाइसिंग के लिए होती है.
  • Kueue: इसका इस्तेमाल, टास्क को क्रम से लगाने, संसाधनों को मैनेज करने, और टोपोलॉजी अवेयर शेड्यूलिंग (टीएएस) के लिए किया जाता है.
  • LeaderWorkerSet (LWS): इसका इस्तेमाल, रेप्लिकेट किए गए मल्टी-नोड टीपीयू डिप्लॉयमेंट को मैनेज करने के लिए किया जाता है. यह एलएलएम की सेवा देने के लिए ज़रूरी है.
  • GKE स्लाइस कंट्रोलर (उपयोगकर्ता स्पेस): यह Kueue को टीपीयू क्लस्टर डायरेक्टर से कनेक्ट करता है, ताकि फ़िज़िकल स्लाइस को डाइनैमिक तरीके से मैनेज किया जा सके.

इंस्टॉलेशन स्क्रिप्ट चलाएं:

./04_install_kueue_lws_slice_controller.sh

पुष्टि करें कि स्लाइस कंट्रोलर सही तरीके से काम कर रहा है:

kubectl rollout status deployment/slice-controller-controller-manager -n slice-controller-system

7. Kueue रिसॉर्स कॉन्फ़िगर करना

अब आपको Kueue के उन संसाधनों को तय करना होगा जो आपके टीपीयू हार्डवेयर टोपोलॉजी को दिखाते हैं. साथ ही, आपको ऐक्सेस की जांच करने की सुविधा को कॉन्फ़िगर करना होगा.

डिप्लॉयमेंट स्क्रिप्ट चलाएं:

./05_deploy_kueue_resources.sh

मुख्य संसाधन डिप्लॉय किए गए:

  • टोपोलॉजी (slice-topology): यह टीपीयू पार्टीशन के क्रम-स्तर (ब्लॉक से लेकर होस्टनेम तक) तय करता है. Kueue को शेड्यूल करते समय इन क्रम-स्तर पर विचार करना चाहिए.
  • ResourceFlavor (slice-rf): slice-topology को tpu7x ऐक्सलरेटर से जोड़ता है.
  • AdmissionCheck (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}

8. सबस्लाइसिंग की सुविधा के साथ टीपीयू ऐक्सेस को डिप्लॉय करना और उसकी पुष्टि करना

सब-स्लाइसिंग की मदद से, एक ही टीपीयू ब्लॉक में कई छोटे वर्कलोड चलाए जा सकते हैं. इस चरण में, आपको एक ऐसा वर्कलोड सबमिट करना होगा जो 2x2x2 टोपोलॉजी (8 चिप / 2 वीएम) का अनुरोध करता है. यह अनुरोध, 4x4x4 (64 चिप / 16 वीएम) ब्लॉक से बने क्लस्टर के लिए होगा.

सबस्लाइसिंग वर्कलोड को डिप्लॉय करें:

./06_deploy_simple_subslicing.sh

यह स्क्रिप्ट, kueue-jobset-simple-subslicing.yaml को लागू करती है.

यह कैसे काम करता है:

  • JobSet स्पेसिफ़िकेशन में एनोटेशन cloud.google.com/gke-tpu-slice-topology: 2x2x2 शामिल है.
  • यह replicas: 6 और parallelism: 2 (सुझाव: 2) को कॉन्फ़िगर करता है. इसका मतलब है कि Kueue, छह अलग-अलग जॉब शेड्यूल करेगा. हर जॉब में दो पॉड होंगे.
  • हर पॉड, google.com/tpu: "4" (एक टीपीयू वीएम) का अनुरोध करता है.
  • Kueue और GKE स्लाइस कंट्रोलर, 32 नोड वाले क्लस्टर को डाइनैमिक तरीके से छह 2x2x2 स्लाइस में बांटते हैं.

JAX के एक्ज़ीक्यूशन की पुष्टि करना

पॉड के चालू होने तक उन्हें मॉनिटर करें:

kubectl get pods -n ${NAMESPACE} -l jobset.sigs.k8s.io/jobset-name=kueue-jobset-simple-subslicing

किसी पॉड के लॉग देखें. इससे यह पुष्टि की जा सकेगी कि JAX ने अपने सब-स्लाइस पर आठ टीपीयू डिवाइसों (कोर) का पता लगा लिया है:

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

9. सुपरस्लाइसिंग की मदद से, टीपीयू ऐक्सेस को डिप्लॉय और पुष्टि करना

सुपर-स्लाइसिंग, GKE की एक बेहतरीन सुविधा है. इसकी मदद से, किसी एक वर्कलोड को कई फ़िज़िकल टीपीयू ब्लॉक (इन्हें अक्सर क्यूब या टोपोलॉजी जैसे कि 4x4x4 कहा जाता है) में फैलाया जा सकता है. इन ब्लॉक को एक साथ जोड़कर, बड़े पैमाने पर ट्रेनिंग या वर्कलोड को पूरा करने के लिए, एक बड़ा वर्चुअल स्लाइस बनाया जा सकता है. इस चरण में, आपको एक JobSet डिप्लॉय करना होगा. यह JobSet, 4x4x8 टोपोलॉजी (128 चिप / 32 वीएम) का अनुरोध करता है. एक 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 टोपोलॉजी के लिए सभी 32 नोड की ज़रूरत होती है. इसलिए, स्लाइस कंट्रोलर, ओसीएस (ऑप्टिकल सर्किट स्विचिंग) नेटवर्क को डाइनैमिक तरीके से कॉन्फ़िगर करता है, ताकि 16 नोड वाले दो पूल को 32 नोड वाले एक आईसीआई मेश में इंटरकनेक्ट किया जा सके.

पुष्टि करें कि JobSet पॉड सही तरीके से चल रहे हैं और JAX को सभी 128 डिवाइसों का पता चल रहा है:

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

10. अलग-अलग करके अनुमान लगाने की सुविधा (पहले से भरा गया/डिकोड किया गया) डिप्लॉय करना

अब प्रीफ़िल/डिकोड डिसएग्रीगेशन का इस्तेमाल करके, एलएलएम के एंड-टू-एंड स्टैक को डिप्लॉय करें.

स्टैंडर्ड सर्विंग में, प्रीफ़िल (प्रॉम्प्ट को प्रोसेस करना) और डिकोड (टोकन जनरेट करना) एक ही टीपीयू पर चलते हैं. प्रीफ़िल, कंप्यूटिंग पर निर्भर करता है और डिकोड, मेमोरी बैंडविड्थ पर निर्भर करता है. इसलिए, दोनों में टकराव होता है. डिसऐग्रिगेटेड सर्विंग, उन्हें अलग-अलग टीपीयू स्लाइस पर चलाती है. साथ ही, केवी कैश को नेटवर्क पर ट्रांसफ़र करती है.

एलएलएम-डी और गेटवे को सेट अप करना

नेमस्पेस, Hugging Face के सीक्रेट, और GKE Gateway सेट अप करें:

./08_setup_llm_d.sh

एलएलएम-डी राऊटर डिप्लॉय करना

उस राउटर को डिप्लॉय करें जो क्लाइंट के अनुरोधों को स्वीकार करेगा और प्रीफ़िल और डिकोड स्लाइस के बीच राउटिंग को मैनेज करेगा:

./09_deploy_llm_d_router.sh

पहले से भरे गए डेटा और डिकोड किए गए डेटा को डिप्लॉय करना

डाइनैमिक तौर पर असाइन किए गए टीपीयू स्लाइस पर vLLM मॉडल सर्वर डिप्लॉय करें:

./10_deploy_subslicing_pd_workload.sh

इससे क्या होता है:

  • kueue-vllm-prefill-model-streamer को डिप्लॉय करता है (LWS, 2x2x2 टीपीयू स्लाइस का अनुरोध कर रहा है).
  • kueue-vllm-decode-model-streamer को डिप्लॉय करता है (LWS, 2x2x2 टीपीयू स्लाइस का अनुरोध कर रहा है).
  • प्रीफ़िल स्लाइस, Qwen 397B मॉडल के वेट लोड करता है और kv_producer के तौर पर काम करता है.
  • डिकोड स्लाइस, kv_consumer के तौर पर काम करता है.
  • ये TPUConnectorHMA का इस्तेमाल करके, KV कैश ट्रांसफ़र करते हैं.

प्रीफ़िल और डिकोड, दोनों पॉड के चालू होने तक इंतज़ार करें:

kubectl get pods -n ${NAMESPACE} -l llm-d.ai/role=prefill
kubectl get pods -n ${NAMESPACE} -l llm-d.ai/role=decode

11. विज्ञापन दिखाने की पुष्टि करना

राउटर, प्रीफ़िल, और डिकोड वर्कलोड के चालू होने पर, अब एपीआई की पुष्टि की जा सकती है.

पुष्टि करने वाली स्क्रिप्ट चलाएं:

./11_verify_serving.sh

यह कैसे काम करता है:

  • यह स्क्रिप्ट, GKE Gateway का इंटरनल आईपी पता वापस लाती है.
  • यह http://${GATEWAY_IP}/v1/completions को पूरा करने का अनुरोध भेजने के लिए, कुछ समय के लिए पॉड (curl-debug-comp) बनाता है.
  • यह http://${GATEWAY_IP}/v1/chat/completions को चैट का अनुरोध भेजने के लिए, एक और पॉड (curl-debug-chat) शुरू करता है.

आपको Qwen मॉडल से, JSON फ़ॉर्मैट में यह जवाब दिखेगा:

{
  "choices": [
    {
      "text": "... [Model Response] ..."
    }
  ]
}

12. व्यवस्थित करें

अपने Google Cloud खाते से लगातार शुल्क लिए जाने से बचने के लिए, इस कोडलैब के दौरान बनाई गई संसाधन मिटाएं.

टियरडाउन स्क्रिप्ट चलाएं:

./12_teardown_cleanup.sh

यह स्क्रिप्ट क्या करती है:

  1. यह GKE नोड पूल (tpu7-pool-1, tpu7-pool-2) मिटाता है.
  2. यह GKE क्लस्टर (tpu-serving-cluster) को मिटाता है.
  3. यह संसाधन की नीतियां (superslice-policy) मिटाता है.
  4. यह कुकी, वीपीसी नेटवर्क (qwen-serving-main) मिटाती है.

इसके अलावा, अगर आपने इस कोडलैब के लिए कोई प्रोजेक्ट बनाया है, तो आपके पास पूरे प्रोजेक्ट को मिटाने का विकल्प है:

gcloud projects delete ${PROJECT_ID}

13. बधाई हो

बधाई हो! आपने GKE की डाइनैमिक स्लाइसिंग की सुविधा के बारे में जान लिया है. साथ ही, आपने डिसऐग्रिगेटेड एलएलएम सर्विंग आर्किटेक्चर को डिप्लॉय कर लिया है.

आपने क्या सीखा

  • GKE स्लाइस कंट्रोलर को चालू करने और इंक्रीमेंटल प्रोविज़निंग के लिए नोड पूल को कॉन्फ़िगर करने का तरीका.
  • खास टीपीयू टोपोलॉजी का अनुरोध करने के लिए, Kueue का इस्तेमाल कैसे करें.
  • सब-स्लाइसिंग की मदद से, छोटे और स्वतंत्र JAX वर्कलोड के लिए बड़े टीपीयू ब्लॉक को कैसे स्प्लिट किया जाता है.
  • सुपर-स्लाइसिंग की मदद से, कई नोड पूल को एक बड़े वर्चुअल टीपीयू स्लाइस में कैसे जोड़ा जाता है.
  • LWS, Gateway API, और vLLM का इस्तेमाल करके, प्रीफ़िल/डिकोड डिसऐग्रिगेटेड सर्विंग को कैसे डिप्लॉय करें.

रेफ़रंस के लिए दस्तावेज़