Kubernetes ಮೇಲೆ ನಿಮ್ಮ ಮೊದಲ LLM API
Kubernetes ಮೇಲೆ LLM ಅನ್ನು ರನ್ ಮಾಡುವುದು ಸಾಮಾನ್ಯ ವೆಬ್ ಆಪ್ ಅನ್ನು ರನ್ ಮಾಡುವುದಕ್ಕಿಂತ ಭಿನ್ನವಾಗಿದೆ. ನೀವು ಕೇವಲ ರಿಕ್ವೆಸ್ಟ್ಗಳ (requests) ಆಧಾರದ ಮೇಲೆ ಸ್ಕೇಲ್ ಮಾಡಬಾರದು. ನೀವು GPU ಸಾಮರ್ಥ್ಯ ಮತ್ತು ಮಾಡೆಲ್ ತೂಕದ (model weights) ಆಧಾರದ ಮೇಲೆ ಸ್ಕೇಲ್ ಮಾಡಬೇಕು.
ಈ ಮಾರ್ಗದರ್ಶಿಯಲ್ಲಿ, ನೀವು ಒಂದು ಮಾಡೆಲ್ ಅನ್ನು GPU ನೋಡ್ಗೆ (node) ನಿಯೋಜಿಸುತ್ತೀರಿ (deploy), ಅದನ್ನು 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 ಟೋಕನ್ ಬಳಸಿ. ಇದು ನಂತರ ಖಾಸಗಿ (private) ಮಾಡೆಲ್ಗಳಿಗೆ ಬದಲಾಯಿಸುವುದನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತದೆ.
- ಒಂದು namespace ರಚಿಸಿ:
kubectl create namespace llm-demo - ನಿಮ್ಮ ಟೋಕನ್ಗಾಗಿ Secret ರಚಿಸಿ:
kubectl create secret generic hf-token -n llm-demo --from-literal=HF_TOKEN="your_token_here"
ಹಂತ 3: ಮಾಡೆಲ್ ಸರ್ವರ್ ಅನ್ನು ನಿಯೋಜಿಸಿ (Deploy) ನಾವು vLLM ಅನ್ನು ಬಳಸುತ್ತೇವೆ ಏಕೆಂದರೆ ಇದು ಕಠಿಣ ಕೆಲಸಗಳನ್ನು (heavy lifting) ನಿರ್ವಹಿಸುತ್ತದೆ. ಇದು batching, tokenization ಮತ್ತು OpenAI-совмести API ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.
ಈ ಪ್ರಮುಖ ಅವಶ್ಯಕತೆಗಳೊಂದಿಗೆ ಒಂದು deployment ಫೈಲ್ ರಚಿಸಿ:
- 1 GPU ಅನ್ನು ವಿನಂತಿಸಿ:
nvidia.com/gpu: 1 - /dev/shm ಅನ್ನು ಮೌಂಟ್ ಮಾಡಿ: ಕ್ರ್ಯಾಶ್ಗಳನ್ನು ತಪ್ಪಿಸಲು ಮಾಡೆಲ್ ಸರ್ವರ್ಗಳಿಗೆ shared memory ಅಗತ್ಯವಿದೆ.
- Secrets ಬಳಸಿ: ನಿಮ್ಮ HF_TOKEN ಅನ್ನು ಕಂಟೇನರ್ಗೆ (container) ವರ್ಗಾಯಿಸಿ.
ನಿಮ್ಮ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಅನ್ವಯಿಸಿ:
kubectl apply -f qwen-vllm.yaml
ಹಂತ 4: API ಅನ್ನು ಪರಿಶೀಲಿಸಿ
"Running" ಸ್ಥಿತಿಯನ್ನು (status) ನಂಬಬೇಡಿ. ಪಾಡ್ (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 ಕೆಲಸದ ಹೊರೆಯನ್ನು (workload) ಶೆಡ್ಯೂಲ್ ಮಾಡುತ್ತದೆ.
- ಕಂಟೇನರ್ ಹಾರ್ಡ್ವೇರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಬಲ್ಲದು.
- ಮಾಡೆಲ್ ಸರ್ವರ್ ತೂಕಗಳನ್ನು (weights) ಮೆಮೊರಿಗೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ.
- API ಪ್ರಮಾಣಿತ ರಿಕ್ವೆಸ್ಟ್ಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ.
ಒಂದು ವೇಳೆ ಈ ಲೂಪ್ ವಿಫಲವಾದರೆ, ಸ್ಕೇಲಿಂಗ್ ಮತ್ತು ರೂಟಿಂಗ್ ನಿಮ್ಮನ್ನು ಉಳಿಸಲಾರವು. ಮೊದಲು ಅಡಿಪಾಯವನ್ನು (foundation) ಸರಿಪಡಿಸಿ.
Optional learning community: https://t.me/GyaanSetuAi
