Kubernetes पर आपका पहला LLM API
Kubernetes पर LLM चलाना एक स्टैंडर्ड वेब ऐप चलाने से अलग है। आप केवल रिक्वेस्ट के आधार पर स्केल नहीं करते हैं। आप GPU क्षमता और मॉडल वेट्स (model weights) के आधार पर स्केल करते हैं।
इस गाइड में, आप एक मॉडल को GPU नोड पर डिप्लॉय करेंगे, उसे एक API के रूप में एक्सपोज़ करेंगे, और उसे curl रिक्वेस्ट के साथ कॉल करेंगे।
हम इन टूल्स का उपयोग करते हैं:
- Model: Qwen/Qwen2.5-1.5B-Instruct
- Engine: vLLM
- Infrastructure: NVIDIA GPU सपोर्ट के साथ Kubernetes
Step 1: अपनी GPU क्षमता की जाँच करें
शुरू करने से पहले, सुनिश्चित करें कि Kubernetes आपके हार्डवेयर को पहचान पा रहा है। यह कमांड चलाएँ:
kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu
यदि GPU कॉलम खाली है, तो रुक जाएँ। आपको पहले अपने NVIDIA device plugin को ठीक करना होगा।
Step 2: अपने मॉडल एक्सेस को सुरक्षित करें
पब्लिक मॉडल्स के लिए भी, Hugging Face टोकन का उपयोग करें। इससे बाद में प्राइवेट मॉडल्स पर स्विच करना आसान हो जाता है।
- Create a namespace:
kubectl create namespace llm-demo - Create a Secret for your token:
kubectl create secret generic hf-token -n llm-demo --from-literal=HF_TOKEN="your_token_here"
Step 3: मॉडल सर्वर डिप्लॉय करें
हम vLLM का उपयोग करते हैं क्योंकि यह जटिल कार्यों (heavy lifting) को संभालता है। यह बैचिंग, टोकनाइज़ेशन और OpenAI-compatible API को मैनेज करता है।
इन मुख्य आवश्यकताओं के साथ एक डिप्लॉयमेंट फ़ाइल बनाएँ:
- Request 1 GPU:
nvidia.com/gpu: 1 - Mount
/dev/shm: क्रैश से बचने के लिए मॉडल सर्वर को शेयर्ड मेमोरी (shared memory) की आवश्यकता होती है। - Use Secrets: अपने
HF_TOKENको कंटेनर में पास करें।
अपनी कॉन्फ़िगरेशन लागू करें:
kubectl apply -f qwen-vllm.yaml
Step 4: API को सत्यापित करें
केवल "Running" स्टेटस पर भरोसा न करें। एक पॉड (pod) "Running" दिखा सकता है जबकि वह अभी भी भारी मॉडल फ़ाइलें डाउनलोड कर रहा होता है। अपने लॉग्स देखें:
kubectl logs -n llm-demo -f deployment/qwen-vllm
जब तक आप पोर्ट 8000 पर सर्वर को लिसनिंग (listening) न देख लें, तब तक प्रतीक्षा करें।
पोर्ट-फ़ॉरवर्डिंग के साथ इसे टेस्ट करें:
kubectl port-forward -n llm-demo svc/qwen-vllm 8000:8000
अपनी curl रिक्वेस्ट चलाएँ:
curl http://127.0.0.1:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-1.5B-Instruct",
"messages": [{"role": "user", "content": "Explain Kubernetes in two sentences."}],
"max_tokens": 120
}'
लक्ष्य (The Goal):
आप रॉ GPU क्षमता से एक वर्किंग API तक पहुँच गए हैं। आपने यह साबित कर दिया है कि:
- Kubernetes GPU वर्कलोड को शेड्यूल करता है।
- कंटेनर हार्डवेयर तक पहुँच सकता है।
- मॉडल सर्वर मेमोरी में वेट्स लोड करता है।
- API स्टैंडर्ड रिक्वेस्ट का जवाब देता है।
यदि यह लूप विफल हो जाता है, तो स्केलिंग और रूटिंग आपको नहीं बचा पाएगी। पहले आधार (foundation) को ठीक करें।
वैकल्पिक लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi
