Kubernetes پر آپ کی پہلی LLM API
Kubernetes پر LLM چلانا ایک عام ویب ایپ چلانے سے مختلف ہے۔ آپ صرف درخواستوں (requests) کے ذریعے اسکیل نہیں کرتے، بلکہ آپ GPU کی صلاحیت اور ماڈل کے وزن (weights) کے مطابق اسکیل کرتے ہیں۔
اس گائیڈ میں، آپ ایک ماڈل کو GPU نوڈ پر ڈیپلائے کریں گے، اسے ایک API کے طور پر ظاہر کریں گے، اور اسے curl درخواست کے ذریعے کال کریں گے۔
ہم یہ ٹولز استعمال کرتے ہیں:
- ماڈل: Qwen/Qwen2.5-1.5B-Instruct
- انجن: vLLM
- انفراسٹرکچر: NVIDIA GPU سپورٹ کے ساتھ Kubernetes
مرحلہ 1: اپنی GPU کی صلاحیت چیک کریں
شروع کرنے سے پہلے، اس بات کو یقینی بنائیں کہ Kubernetes آپ کے ہارڈ ویئر کو دیکھ رہا ہے۔ یہ کمانڈ چلائیں:
kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu
اگر GPU کالم خالی ہے، تو رک جائیں۔ آپ کو پہلے اپنا NVIDIA device plugin ٹھیک کرنا ہوگا۔
مرحلہ 2: اپنے ماڈل تک رسائی کو محفوظ بنائیں
عوامی (public) ماڈلز کے لیے بھی، Hugging Face ٹوکن استعمال کریں۔ اس سے بعد میں پرائیویٹ ماڈلز پر منتقل ہونا آسان ہو جاتا ہے۔
- ایک namespace بنائیں:
kubectl create namespace llm-demo - اپنے ٹوکن کے لیے ایک Secret بنائیں:
kubectl create secret generic hf-token -n llm-demo --from-literal=HF_TOKEN="your_token_here"
مرحلہ 3: ماڈل سرور ڈیپلائے کریں
ہم vLLM استعمال کرتے ہیں کیونکہ یہ تمام مشکل کام سنبھال لیتا ہے۔ یہ batching، tokenization، اور OpenAI کے ہم آہنگ (compatible) API کا انتظام کرتا ہے۔
ان اہم ضروریات کے ساتھ ایک deployment فائل بنائیں:
- 1 GPU کی درخواست کریں:
nvidia.com/gpu: 1 /dev/shmکو ماؤنٹ کریں: کریش سے بچنے کے لیے ماڈل سرورز کو shared memory کی ضرورت ہوتی ہے۔- Secrets استعمال کریں: اپنے
HF_TOKENکو کنٹینر میں پاس کریں۔
اپنی کنفیگریشن لاگو کریں:
kubectl apply -f qwen-vllm.yaml
مرحلہ 4: API کی تصدیق کریں
"Running" اسٹیٹس پر بھروسہ نہ کریں۔ ایک پوڈ (pod) "Running" حالت میں ہو سکتا ہے جبکہ وہ اب بھی بڑے ماڈل فائلز ڈاؤن لوڈ کر رہا ہو۔ اپنے لاگز (logs) دیکھیں:
kubectl logs -n llm-demo -f deployment/qwen-vllm
اس وقت تک انتظار کریں جب تک آپ کو پورٹ 8000 پر سرور لسننگ (listening) نظر نہ آ جائے۔
اسے port-forwarding کے ساتھ ٹیسٹ کریں:
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
}'
مقصد:
آپ خام GPU کی صلاحیت سے ایک کام کرنے والی API تک پہنچ چکے ہیں۔ آپ نے ثابت کر دیا ہے کہ:
- Kubernetes GPU ورک لوڈ کو شیڈول کرتا ہے۔
- کنٹینر ہارڈ ویئر تک رسائی حاصل کر سکتا ہے۔
- ماڈل سرور میموری میں weights لوڈ کرتا ہے۔
- API معیاری درخواستوں کا جواب دیتی ہے۔
اگر یہ لوپ (loop) ناکام ہو جاتا ہے، تو اسکیلنگ اور روٹنگ آپ کو نہیں بچا پائیں گے۔ پہلے بنیاد کو ٹھیک کریں۔
Optional learning community: https://t.me/GyaanSetuAi
