Kubernetes-ൽ നിങ്ങളുടെ ആദ്യത്തെ LLM API
Kubernetes-ൽ ഒരു LLM പ്രവർത്തിപ്പിക്കുന്നത് സാധാരണ ഒരു വെബ് ആപ്പ് പ്രവർത്തിപ്പിക്കുന്നതിൽ നിന്നും വ്യത്യസ്തമാണ്. നിങ്ങൾ വെറും റിക്വസ്റ്റുകൾ (requests) അനുസരിച്ചല്ല സ്കെയിൽ ചെയ്യുന്നത്. പകരം GPU ശേഷിയും (capacity) മോഡൽ വെയ്റ്റുകളും (model weights) അനുസരിച്ചാണ് സ്കെയിലിംഗ് നടത്തുന്നത്.
ഈ ഗൈഡിലൂടെ, നിങ്ങൾ ഒരു മോഡൽ ഒരു GPU നോഡിലേക്ക് ഡെപ്ലോയ് ചെയ്യുകയും, അതിനെ ഒരു API ആയി ലഭ്യമാക്കുകയും, ഒരു curl റിക്വസ്റ്റിലൂടെ അത് ഉപയോഗിക്കുകയും ചെയ്യും.
ഞങ്ങൾ ഈ ടൂളുകളാണ് ഉപയോഗിക്കുന്നത്:
- Model: Qwen/Qwen2.5-1.5B-Instruct
- Engine: vLLM
- Infrastructure: Kubernetes with NVIDIA GPU support
സ്റ്റെപ്പ് 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 ഉപയോഗിക്കുന്നു. ഇത് 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
സ്റ്റെപ്പ് 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
}'
ലക്ഷ്യം:
നിങ്ങൾ വെറും GPU ശേഷിയിൽ നിന്നും പ്രവർത്തിക്കുന്ന ഒരു API-ലേക്ക് എത്തിയിരിക്കുന്നു. നിങ്ങൾ താഴെ പറയുന്നവ തെളിയിച്ചു കഴിഞ്ഞു:
- Kubernetes GPU വർക്ക്ലോഡ് ഷെഡ്യൂൾ ചെയ്യുന്നു.
- കണ്ടെയ്നറിന് ഹാർഡ്വെയർ ആക്സസ് ചെയ്യാൻ സാധിക്കുന്നു.
- മോഡൽ സെർവർ വെയ്റ്റുകൾ മെമ്മറിയിലേക്ക് ലോഡ് ചെയ്യുന്നു.
- API സാധാരണ റിക്വസ്റ്റുകൾക്ക് മറുപടി നൽകുന്നു.
ഈ പ്രക്രിയ പരാജയപ്പെട്ടാൽ, സ്കെയിലിംഗും റൂട്ടിംഗും നിങ്ങളെ സഹായിക്കില്ല. ആദ്യം അടിസ്ഥാനപരമായ കാര്യങ്ങൾ ശരിയാക്കുക.
Optional learning community: https://t.me/GyaanSetuAi
