Kubernetes-এ আপনার প্রথম LLM API

Kubernetes-এ একটি LLM চালানো একটি সাধারণ ওয়েব অ্যাপ চালানোর চেয়ে আলাদা। আপনি শুধুমাত্র রিকোয়েস্ট (requests) অনুযায়ী স্কেল করেন না। আপনি স্কেল করেন GPU ক্ষমতা এবং মডেল ওয়েট (model weights) অনুযায়ী।

এই গাইডে, আপনি একটি GPU নোডে একটি মডেল ডেপ্লয় করবেন, সেটিকে একটি API হিসেবে এক্সপোজ করবেন এবং একটি curl রিকোয়েস্টের মাধ্যমে সেটি কল করবেন।

আমরা এই টুলগুলো ব্যবহার করছি:

  • মডেল: Qwen/Qwen2.5-1.5B-Instruct
  • ইঞ্জিন: vLLM
  • ইনফ্রাস্ট্রাকচার: NVIDIA GPU সাপোর্টসহ Kubernetes

ধাপ ১: আপনার GPU ক্ষমতা পরীক্ষা করুন

শুরু করার আগে, নিশ্চিত করুন যে Kubernetes আপনার হার্ডওয়্যার দেখতে পাচ্ছে। এই কমান্ডটি চালান: kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu

যদি GPU কলামটি খালি থাকে, তবে থেমে যান। আপনাকে প্রথমে আপনার NVIDIA device plugin ঠিক করতে হবে।

ধাপ ২: আপনার মডেল অ্যাক্সেস সুরক্ষিত করুন

এমনকি পাবলিক মডেলের জন্যও একটি 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"

ধাপ ৩: মডেল সার্ভার ডেপ্লয় করুন

আমরা vLLM ব্যবহার করছি কারণ এটি মূল কাজগুলো (heavy lifting) সামলায়। এটি batching, tokenization এবং OpenAI-compatible API পরিচালনা করে।

এই মূল প্রয়োজনীয়তাগুলো দিয়ে একটি deployment ফাইল তৈরি করুন:

  • ১টি GPU রিকোয়েস্ট করুন: nvidia.com/gpu: 1
  • /dev/shm মাউন্ট করুন: ক্র্যাশ এড়াতে মডেল সার্ভারগুলোর shared memory প্রয়োজন।
  • Secrets ব্যবহার করুন: আপনার HF_TOKEN কন্টেইনারে পাস করুন।

আপনার কনফিগারেশন প্রয়োগ করুন: kubectl apply -f qwen-vllm.yaml

ধাপ ৪: API যাচাই করুন

"Running" স্ট্যাটাসের ওপর পুরোপুরি ভরসা করবেন না। একটি পড (pod) "Running" দেখালেও সেটি তখনও বিশাল মডেল ফাইল ডাউনলোড করতে পারে। আপনার লগগুলো দেখুন: kubectl logs -n llm-demo -f deployment/qwen-vllm

সার্ভারটি পোর্ট 8000-এ লিসেন (listening) করছে তা দেখা না যাওয়া পর্যন্ত অপেক্ষা করুন।

পোর্ট-ফরোয়ার্ডিংয়ের মাধ্যমে এটি পরীক্ষা করুন: 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 ওয়ার্কলোড শিডিউল করতে পারে।
  • কন্টেইনার হার্ডওয়্যার অ্যাক্সেস করতে পারে।
  • মডেল সার্ভার মেমোরিতে ওয়েট (weights) লোড করতে পারে।
  • API স্ট্যান্ডার্ড রিকোয়েস্টের রেসপন্স দিতে পারে।

যদি এই লুপটি ব্যর্থ হয়, তবে স্কেলিং এবং রাউটিং আপনাকে বাঁচাতে পারবে না। আগে ভিত্তি (foundation) ঠিক করুন।

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

ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi