Kubernetes పై మీ మొదటి LLM API

Kubernetes పై LLMని రన్ చేయడం అనేది ఒక సాధారణ వెబ్ యాప్‌ని రన్ చేయడం కంటే భిన్నంగా ఉంటుంది. మీరు కేవలం రిక్వెస్ట్‌ల (requests) ఆధారంగా మాత్రమే స్కేల్ చేయలేరు. మీరు GPU సామర్థ్యం (capacity) మరియు మోడల్ వెయిట్స్ (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 టోకెన్‌ను ఉపయోగించండి. ఇది తర్వాత ప్రైవేట్ మోడల్స్‌కు మారడాన్ని సులభతరం చేస్తుంది.

  • ఒక namespaceని సృష్టించండి: kubectl create namespace llm-demo
  • మీ టోకెన్ కోసం ఒక Secretని సృష్టించండి: kubectl create secret generic hf-token -n llm-demo --from-literal=HF_TOKEN="your_token_here"

Step 3: మోడల్ సర్వర్‌ను డిప్లాయ్ చేయండి మేము vLLMని ఉపయోగిస్తున్నాము ఎందుకంటే ఇది క్లిష్టమైన పనులను (heavy lifting) నిర్వహిస్తుంది. ఇది batching, tokenization మరియు OpenAI-compatible APIని మేనేజ్ చేస్తుంది.

ఈ ముఖ్యమైన అవసరాలతో ఒక deployment ఫైల్‌ను సృష్టించండి:

  • 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) సరిచేయండి.

Source: https://dev.to/the-persistent-engineer/your-first-llm-api-on-kubernetes-from-model-to-curl-request-4l1j

ఐచ్ఛిక అభ్యాస కమ్యూనిటీ: https://t.me/GyaanSetuAi