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) મજબૂત કરો.

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

વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi