API LLM Pertama Anda pada Kubernetes

Menjalankan LLM pada Kubernetes adalah berbeza daripada menjalankan aplikasi web standard. Anda tidak hanya melakukan penskalaan berdasarkan permintaan. Anda melakukan penskalaan berdasarkan kapasiti GPU dan pemberat model (model weights).

Dalam panduan ini, anda akan mendeploy model ke nod GPU, mendedahkannya sebagai API, dan memanggilnya dengan permintaan curl.

Kami menggunakan alatan ini:

  • Model: Qwen/Qwen2.5-1.5B-Instruct
  • Engine: vLLM
  • Infrastruktur: Kubernetes dengan sokongan GPU NVIDIA

Langkah 1: Semak kapasiti GPU anda Sebelum anda bermula, pastikan Kubernetes dapat mengesan perkakasan anda. Jalankan arahan ini: kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu

Jika lajur GPU kosong, berhenti. Anda mesti membaiki plugin peranti NVIDIA anda terlebih dahulu.

Langkah 2: Amankan akses model anda Walaupun untuk model awam, gunakan token Hugging Face. Ini memudahkan anda untuk menukar kepada model peribadi kemudian hari.

  • Cipta namespace: kubectl create namespace llm-demo
  • Cipta Secret untuk token anda: kubectl create secret generic hf-token -n llm-demo --from-literal=HF_TOKEN="your_token_here"

Langkah 3: Deploy pelayan model Kami menggunakan vLLM kerana ia mengendalikan tugas-tugas berat. Ia menguruskan batching, tokenization, dan API yang serasi dengan OpenAI.

Cipta fail deployment dengan keperluan utama berikut:

  • Minta 1 GPU: nvidia.com/gpu: 1
  • Mount /dev/shm: Pelayan model memerlukan memori kongsi (shared memory) untuk mengelakkan kegagalan (crash).
  • Gunakan Secrets: Hantar HF_TOKEN anda ke dalam kontena.

Aplikasikan konfigurasi anda: kubectl apply -f qwen-vllm.yaml

Langkah 4: Sahkan API Jangan percaya status "Running". Sesuatu pod dianggap "Running" walaupun ia masih memuat turun fail model yang besar. Perhatikan log anda: kubectl logs -n llm-demo -f deployment/qwen-vllm

Tunggu sehingga anda melihat pelayan sedang mendengar (listening) pada port 8000.

Uji dengan port-forwarding: kubectl port-forward -n llm-demo svc/qwen-vllm 8000:8000

Jalankan permintaan curl anda:

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
}'

Matlamatnya: Anda telah beralih daripada kapasiti GPU mentah kepada API yang berfungsi. Anda telah membuktikan bahawa:

  • Kubernetes menjadualkan beban kerja GPU.
  • Kontena boleh mengakses perkakasan.
  • Pelayan model memuatkan pemberat (weights) ke dalam memori.
  • API bertindak balas terhadap permintaan standard.

Jika kitaran ini gagal, penskalaan dan penghalaan (routing) tidak akan dapat menyelamatkan anda. Baiki asasnya terlebih dahulu.

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

Optional learning community: https://t.me/GyaanSetuAi