Kubernetes પર તમારું પ્રથમ LLM API
Kubernetes પર LLM ચલાવવું એ સ્ટાન્ડર્ડ વેબ એપ ચલાવવા કરતાં અલગ છે. તમે ફક્ત રિક્વેસ્ટ (requests) દ્વારા સ્કેલિંગ નથી કરતા. તમે GPU ક્ષમતા અને મોડલ વેટ્સ (model weights) દ્વારા સ્કેલિંગ કરો છો.
આ માર્ગદર્શિકામાં, તમે એક મોડલને GPU નોડ પર ડિપ્લોય કરશો, તેને API તરીકે એક્સપોઝ કરશો અને curl રિક્વેસ્ટ સાથે તેને કોલ કરશો.
અમે આ સાધનોનો ઉપયોગ કરીએ છીએ:
- Model: Qwen/Qwen2.5-1.5B-Instruct
- Engine: vLLM
- Infrastructure: 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: તમારા મોડલ એક્સેસને સુરક્ષિત કરો
પબ્લિક મોડલ્સ માટે પણ, 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 નો ઉપયોગ કરીએ છીએ કારણ કે તે મુખ્ય કામગીરી (heavy lifting) સંભાળે છે. તે batching, tokenization અને OpenAI-સુસંગત API નું સંચાલન કરે છે.
આ મુખ્ય જરૂરિયાતો સાથે ડિપ્લોયમેન્ટ ફાઇલ બનાવો:
- 1 GPU રિક્વેસ્ટ કરો:
nvidia.com/gpu: 1 - /dev/shm માઉન્ટ કરો: મોડલ સર્વર્સને ક્રેશ થતા અટકાવવા માટે shared memory ની જરૂર હોય છે.
- Secrets નો ઉપયોગ કરો: તમારા HF_TOKEN ને કન્ટેનરમાં પાસ કરો.
તમારી કોન્ફિગરેશન લાગુ કરો:
kubectl apply -f qwen-vllm.yaml
સ્ટેપ 4: API ચકાસો
"Running" સ્ટેટસ પર ભરોસો ન કરો. જ્યાં સુધી મોડલની વિશાળ ફાઇલો ડાઉનલોડ થતી હોય ત્યાં સુધી પોડ (pod) "Running" બતાવે છે. તમારા લોગ્સ જુઓ:
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
}'
ધ્યેય:
તમે કાચી (raw) GPU ક્ષમતાથી એક કાર્યરત API સુધી પહોંચી ગયા છો. તમે સાબિત કર્યું છે કે:
- Kubernetes GPU વર્કલોડ શેડ્યૂલ કરે છે.
- કન્ટેનર હાર્ડવેરને એક્સેસ કરી શકે છે.
- મોડલ સર્વર મેમરીમાં વેટ્સ લોડ કરે છે.
- API સ્ટાન્ડર્ડ રિક્વેસ્ટનો જવાબ આપે છે.
જો આ લૂપ નિષ્ફળ જાય, તો સ્કેલિંગ અને રાઉટિંગ તમને બચાવી શકશે નહીં. પહેલા પાયો (foundation) મજબૂત કરો.
વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi
