বৃহৎ ভাষার মডেলগুলির জন্য একটি সরল-ইংরেজি নির্দেশিকা — সেগুলি কী, তারা আসলে কীভাবে হুডের নীচে কাজ করে এবং কীভাবে কুবারনেটে আপনার নিজস্ব চালাতে হয়৷ নন-টেকনিক্যাল ম্যানেজার এবং ইঞ্জিনিয়ারদের জন্য একইভাবে লেখা: সাদৃশ্যগুলি বাদ দিন, তারপর আপনি যখন মোতায়েন করার জন্য প্রস্তুত হন তখন YAML-এ ড্রপ করুন।

1. একটি বড় ভাষার মডেল আসলে কি?
আপনার ফোনে স্বয়ংসম্পূর্ণ কল্পনা করুন। আপনি টাইপ করুন "আমি পেলে আপনাকে কল করব" এবং এটি "বাড়ি" প্রস্তাব করে। এটি একটি ক্ষুদ্র ভাষা মডেল: এটি প্রচুর পাঠ্য বার্তা দেখেছে এবং শিখেছে কোন শব্দগুলি কোনটি অনুসরণ করে৷ ক বড় ল্যাঙ্গুয়েজ মডেল হল একই আইডিয়া যা লক্ষাধিক ফ্যাক্টর দ্বারা স্কেল করা হয়েছে — আপনার টেক্সটে নয় বরং পাবলিক ইন্টারনেট, বই, কোড এবং ডকুমেন্টেশনের একটি বড় অংশে প্রশিক্ষিত।
শব্দ "বড়" বাস্তব কাজ করছে। এই মডেলগুলিতে কোটি কোটি অভ্যন্তরীণ সংখ্যা রয়েছে (যাকে বলা হয় পরামিতি) যা প্রশিক্ষণের সময় সুর করা হয়। যখন লোকেরা একটি মডেলকে "7B" বা "70B" বলে, তখন তার মানে 7 বিলিয়ন বা 70 বিলিয়ন প্যারামিটার৷ আরো পরামিতি সাধারণত আরো ক্ষমতা মানে - এবং মেমরি এবং গণনার জন্য একটি বড় ক্ষুধা।
পরিচালকদের জন্য একটি দরকারী মানসিক মডেল: একজন এলএলএম একজন অক্লান্ত, খুব ভালোভাবে পড়া স্নাতক সহকারী। এটি যে কোনও মানুষের চেয়ে বেশি পড়েছে, দ্রুত খসড়া তৈরি করেছে এবং কখনই বিরক্ত হয় না — তবে এটি কখনও কখনও সম্পূর্ণ আত্মবিশ্বাসের সাথে এমন জিনিসগুলিকে বলে যেগুলি কেবল ভুল, এবং আপনি এটি স্মরণ না করা পর্যন্ত এটির কোনও গতকালের স্মৃতি নেই৷
2. তারা আসলে কিভাবে কাজ করে
ফণা অধীনে পাঁচটি ধারণা আছে. সেগুলি অনুসরণ করার জন্য আপনার গণিতের প্রয়োজন নেই — প্রতিটির একটি দৈনন্দিন সাদৃশ্য রয়েছে।
2.1 টোকেন - পাঠ্যকে টুকরো টুকরো করে কাটা
মডেলরা পুরো শব্দ পড়ে না। তারা টেক্সট ভাঙ্গা টোকেন: অক্ষরের সাধারণ অংশ। "Kubernetes" হয়ে যেতে পারে Kub + ernetes; "চলমান" হতে পারে run + ning. মোটামুটি, 1 টোকেন ≈ 0.75 ইংরেজি শব্দ, তাই 1,000 টোকেন প্রায় 750 শব্দ। এটি বাণিজ্যিকভাবে গুরুত্বপূর্ণ: টোকেন প্রতি হোস্ট করা APIs বিল এবং একটি মডেল প্রসঙ্গ উইন্ডো (এটি একবারে কতটা "দেখতে" পারে) টোকেনে পরিমাপ করা হয়।
2.2 এম্বেডিং - শব্দকে অর্থের স্থানাঙ্কে পরিণত করা
প্রতিটি টোকেন সংখ্যার একটি দীর্ঘ তালিকায় রূপান্তরিত হয় — একটি এমবেডিং - এটি স্থানের একটি বিন্দু হিসাবে এর অর্থ উপস্থাপন করে। একইভাবে ব্যবহৃত শব্দগুলি একে অপরের কাছাকাছি শেষ হয়। "রাজা" এবং "রানী" একসাথে বসে; "রাজা" এবং "কলা" অনেক দূরে বসে। এইভাবে একটি মেশিন যা শুধুমাত্র পাটিগণিত করে তা হেরফের করতে পারে অর্থ: অর্থকে জ্যামিতিতে পরিণত করা হয়েছে।
2.3 ট্রান্সফরমার এবং "মনোযোগ" — 2017 সালের অগ্রগতি
প্রতিটি আধুনিক এলএলএম এর পিছনে স্থাপত্য ট্রান্সফরমার. এর মূল কৌশল বলা হয় মনোযোগ: একটি শব্দ প্রক্রিয়াকরণ করার সময়, মডেলটি বাক্যটির প্রতিটি অন্য শব্দের দিকে ফিরে তাকায় এবং সিদ্ধান্ত নেয় কোনটি প্রাসঙ্গিক। ইন "ট্রফিটি স্যুটকেসে ফিট হয়নি কারণ এটা খুব বড় ছিল," মনোযোগ যা মডেলটিকে কাজ করতে দেয় যে "এটি" ট্রফিকে বোঝায়, স্যুটকেস নয়৷ মনোযোগ দেওয়া হল কেন এই মডেলগুলি প্রসঙ্গ, সূক্ষ্মতা এবং দীর্ঘ-পরিসরের রেফারেন্সগুলি এত ভালভাবে পরিচালনা করে — এবং কেন তাদের এত গণনা করা দরকার, কারণ প্রতিটি শব্দ অন্য প্রতিটি শব্দের সাথে জড়িত৷
2.4 প্রশিক্ষণ - তিনটি পর্যায়
- প্রাক-প্রশিক্ষণ: মডেলটি লুকানো শেষ শব্দ সহ কোটি কোটি বাক্য দেখানো হয়েছে এবং এটি অনুমান করতে বলা হয়েছে। এটি ভুল করুন, পরামিতিগুলিকে নাজ করুন, পুনরাবৃত্তি করুন — ট্রিলিয়ন বার। এখানেই এটি ব্যাকরণ, তথ্য, যুক্তির ধরণ এবং কোড শোষণ করে। এটি একটি ব্যয়বহুল অংশও, যার খরচ GPU সময়ে লক্ষ লক্ষ পাউন্ড।
- ফাইন-টিউনিং: তারপরে কাঁচা মডেলটিকে সহায়ক প্রশ্ন-উত্তর আচরণের কিউরেটেড উদাহরণগুলিতে প্রশিক্ষণ দেওয়া হয়, তাই এটি স্বয়ংসম্পূর্ণ না হয়ে একজন সহকারীর মতো কাজ করে।
- প্রান্তিককরণ (RLHF): অবশেষে, মানুষ মডেলের উত্তরগুলিকে র্যাঙ্ক করে এবং সেই প্রতিক্রিয়াটিকে আরও সহায়ক, সৎ এবং নিরাপদ করতে ব্যবহার করা হয়৷ এই কারণেই একটি চ্যাট মডেল ক্ষতিকারক অনুরোধ প্রত্যাখ্যান করে এবং একটি সামঞ্জস্যপূর্ণ সুর গ্রহণ করে।
2.5 অনুমান - এটি আপনাকে কীভাবে উত্তর দেয়
আপনি যখন একটি প্রম্পট পাঠান, মডেলটি উত্তর তৈরি করে এক সময়ে একটি টোকেন: এটি সম্ভবত পরবর্তী টোকেনটির পূর্বাভাস দেয়, এটিকে যুক্ত করে, তারপর পরবর্তীটির পূর্বাভাস দেয় এবং আরও অনেক কিছু — যেমন একজন দ্রুত, ভাল-পঠিত ব্যক্তি প্রথমে পুরো বাক্যটির পরিকল্পনা না করে শব্দ দ্বারা শব্দ লিখছেন। একটি সেটিং বলা হয় তাপমাত্রা এটি কতটা দুঃসাহসিক তা নিয়ন্ত্রণ করে: নিম্ন তাপমাত্রা নিরাপদ, পুনরাবৃত্তিযোগ্য উত্তর দেয় (কোড এবং নিষ্কাশনের জন্য ভাল); উচ্চ তাপমাত্রা সৃজনশীল, বৈচিত্র্যময় উত্তর দেয় (বুদ্ধিমত্তার জন্য ভাল)। এই টোকেন-বাই-টোকেন প্রক্রিয়া বলা হয় অনুমান, এবং এটি সেই অংশ যা আপনি উত্পাদনে অর্থ প্রদান করেন — প্রতিটি অনুরোধ জিপিইউ চক্রকে বার্ন করে।
3. এলএলএম কি ভাল এবং খারাপ
টুলের প্রান্তগুলি জানা ব্যয়বহুল ভুলগুলি প্রতিরোধ করে।
| প্রকৃতপক্ষে ভাল | সাথে সতর্ক থাকুন |
|---|---|
| খসড়া, পুনর্লিখন এবং টেক্সট সংক্ষিপ্তকরণ | হ্যালুসিনেশন — প্রণিধানযোগ্য কিন্তু মিথ্যা তথ্য, উদ্ধৃতি, বা API উদ্ভাবন |
| ধারণাগুলি ব্যাখ্যা করা এবং প্রায়শই জিজ্ঞাসিত প্রশ্নগুলির উত্তর দেওয়া | জ্ঞান কাটা বন্ধ - এটি প্রশিক্ষণের তারিখের পরে ঘটনাগুলি জানে না |
| কোড লেখা এবং পর্যালোচনা | সঠিক পাটিগণিত এবং গণনা (পরিবর্তে একটি টুল/ক্যালকুলেটর ব্যবহার করুন) |
| শ্রেণীবিন্যাস, নিষ্কাশন এবং পুনরায় ফর্ম্যাটিং তথ্য | যেকোন কিছু যেখানে একটি আত্মবিশ্বাসী ভুল উত্তর পর্যালোচনা ছাড়াই বিপজ্জনক |
এই অধিকাংশ জন্য ফিক্স হয় RAG (পুনরুদ্ধার-অগমেন্টেড জেনারেশন): মডেলের মেমরিকে বিশ্বাস করার পরিবর্তে, আপনি আপনার নিজস্ব সিস্টেম থেকে প্রাসঙ্গিক নথি আনেন এবং সেগুলিকে প্রম্পটে আটকান, তাই মডেলটি উত্তর দেয় আপনার তথ্য থেকে. এইভাবে আপনি মডেল তৈরি না করে আপনার অভ্যন্তরীণ উইকিতে একটি চ্যাটবট তৈরি করেন।
4. শব্দভান্ডার, ডিকোড করা
| মেয়াদ | সরল ইংরেজিতে এর মানে কি |
|---|---|
| প্যারামিটার (7B/70B) | টিউন করা অভ্যন্তরীণ সংখ্যা। আরো = স্মার্ট কিন্তু ভারী। |
| প্রসঙ্গ উইন্ডো | ওয়ার্কিং মেমরিতে একবারে কতটা টেক্সট রাখা যায় (টোকেনে)। |
| অনুমান | একটি উত্তর পেতে মডেল চালানো হচ্ছে — আপনার পুনরাবৃত্ত গণনা খরচ। |
| কোয়ান্টাইজেশন | মডেলটিকে সংকুচিত করা (যেমন 4-বিট পর্যন্ত) যাতে এটি একটি ছোট মানের ট্রেড-অফ সহ ছোট GPU-তে ফিট করে। |
| ফাইন-টিউনিং | বিশেষায়িত আচরণের জন্য আপনার নিজের উদাহরণের উপর আরও প্রশিক্ষণ। |
| RAG | ক্যোয়ারী করার সময় মডেলটিকে আপনার নথিগুলি খাওয়ান যাতে এটি তথ্য থেকে উত্তর দেয়, মেমরি নয়। |
| ভিআরএএম | GPU মেমরি। একক সবচেয়ে বড় সীমাবদ্ধতা যা আপনি চালাতে পারেন। |
5. কেন আপনার নিজের এলএলএম চালাবেন?
হোস্ট করা এপিআই (ওপেনএআই, অ্যানথ্রপিক এবং অন্যান্য) হল শুরু করার দ্রুততম উপায় এবং চমৎকার। কিন্তু চারটি কারণ রয়েছে যে প্রতিষ্ঠানগুলো একটি ওপেন-ওয়েট মডেল যেমন লামা, মিস্ট্রাল, কুয়েন বা জেমাকে স্ব-হোস্ট করতে বেছে নেয়:
- ডেটা গোপনীয়তা এবং সম্মতি। সংবেদনশীল ডেটা কখনই আপনার নেটওয়ার্ক ত্যাগ করে না — স্বাস্থ্যসেবা, অর্থ, আইনী এবং পাবলিক সেক্টরের জন্য গুরুত্বপূর্ণ।
- স্কেলে খরচ। একটি নির্দিষ্ট স্থির অনুরোধ ভলিউমের উপরে, আপনার মালিকানাধীন একটি GPU একটি API প্রদানের চেয়ে টোকেন প্রতি সস্তা হতে পারে।
- নিয়ন্ত্রণ এবং স্থিতিশীলতা। মডেলটি আপনার অধীনে কখনই পরিবর্তিত হয় না, এবং আপনি কোনও বিক্রেতার হার সীমা বা অবমূল্যায়নের অধীন নন।
- লেটেন্সি এবং অফলাইন ব্যবহার। আপনার আবেদনের পাশের অনুমান, অথবা ইন্টারনেট নির্ভরতা ছাড়াই অন-প্রিমিসেস।
বাণিজ্য বন্ধ যে আপনি এখন হার্ডওয়্যার, স্কেলিং এবং নির্ভরযোগ্যতার মালিক — কুবারনেটেস ঠিক এই বিষয়েই ভালো।
6. হার্ডওয়্যার বাস্তবতা (আপনি স্থাপন করার আগে এটি পড়ুন)
একটি LLM-এর ওজন অবশ্যই GPU মেমরিতে (VRAM) ফিট হতে হবে। একটি রুক্ষ নিয়ম:
| মডেলের আকার | সম্পূর্ণ নির্ভুলতা (FP16) | কোয়ান্টাইজড (4-বিট) |
|---|---|---|
| 7–8B (যেমন মিস্ট্রাল 7B, লামা 3 8B) | ~16 জিবি ভিআরএএম | ~5–6 GB VRAM |
| 13-14B | ~28 GB VRAM | ~10 GB VRAM |
| 70B | ~140 জিবি (মাল্টি-জিপিইউ) | ~40 GB VRAM |
দুটি পরিবেশনকারী ইঞ্জিন বাস্তব স্থাপনার উপর আধিপত্য বিস্তার করে:
- ওল্লামা র্যাম্পে সবচেয়ে সহজ। বিকাশ, অভ্যন্তরীণ সরঞ্জাম এবং CPU বা একক-GPU নোডের জন্য দুর্দান্ত। একটি কমান্ডের সাহায্যে কোয়ান্টাইজড মডেল টানে।
- ভিএলএলএম - উত্পাদনের কাজের ঘোড়া। উচ্চ-থ্রুপুট, ব্যাচ অনেক অনুরোধ, এবং একটি প্রকাশ OpenAI- সামঞ্জস্যপূর্ণ API তাই আপনার বিদ্যমান কোড একটি এক-লাইন URL পরিবর্তনের সাথে কাজ করে। (হাগিং ফেস টিজিআই একটি ঘনিষ্ঠ বিকল্প।)
7. Kubernetes-এ আপনার নিজস্ব LLM স্থাপন করা
নীচের সবকিছু অন্তত একটি GPU নোড সহ একটি ক্লাস্টার অনুমান করে এবং NVIDIA ডিভাইস প্লাগইন ইনস্টল করা হয়েছে, যা GPU গুলিকে নির্ধারিত সম্পদ হিসাবে প্রকাশ করে nvidia.com/gpu. আমরা এটি টুকরো টুকরো করে গড়ে তুলব।
7.1 একটি নামস্থান এবং মডেল ওজন সঞ্চয় করার একটি জায়গা৷
মডেল ফাইলগুলি বড় (গিগাবাইট) এবং ডাউনলোড করার জন্য ধীর, তাই আমরা সেগুলিকে a এ ক্যাশে করি ক্রমাগত ভলিউম দাবি প্রতিটি পড পুনরায় চালু করার পরিবর্তে পুনরায় টানা।
apiVersion: v1
kind: Namespace
metadata:
name: llm
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: model-cache
namespace: llm
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi # weights are big; size generously
# storageClassName: fast-ssd # use an SSD class if your cluster offers one
7.2 বিকল্প A — ওল্লামা (সহজ শুরু)
ওল্লামা প্রথম স্থাপনা বা একটি অভ্যন্তরীণ সরঞ্জামের জন্য আদর্শ। এটি একটি GPU দিয়ে এটি চালায়; মুছে দিন nvidia.com/gpu শুধুমাত্র একটি বিফি নোডে CPU চালানোর সীমা।
apiVersion: apps/v1
kind: Deployment
metadata:
name: ollama
namespace: llm
labels:
app: ollama
spec:
replicas: 1
selector:
matchLabels:
app: ollama
template:
metadata:
labels:
app: ollama
spec:
containers:
- name: ollama
image: ollama/ollama:latest
ports:
- containerPort: 11434
resources:
requests:
cpu: "2"
memory: 8Gi
limits:
nvidia.com/gpu: 1 # remove this line for CPU-only
memory: 16Gi
volumeMounts:
- name: models
mountPath: /root/.ollama
readinessProbe:
httpGet:
path: /
port: 11434
initialDelaySeconds: 10
periodSeconds: 10
volumes:
- name: models
persistentVolumeClaim:
claimName: model-cache
---
apiVersion: v1
kind: Service
metadata:
name: ollama
namespace: llm
spec:
selector:
app: ollama
ports:
- port: 80
targetPort: 11434
একবার পড চলমান হলে, ক্যাশে একটি মডেল টানুন এবং এটির সাথে চ্যাট করুন:
# pull a quantized model into the PVC (one-off)
kubectl -n llm exec deploy/ollama -- ollama pull llama3
# ask it something from inside the cluster
kubectl -n llm exec deploy/ollama -- \
ollama run llama3 "Explain Kubernetes in one sentence."
7.3 বিকল্প B — vLLM (উৎপাদন থ্রুপুট, OpenAI- সামঞ্জস্যপূর্ণ)
বাস্তব ট্র্যাফিকের জন্য, vLLM অনেক সমসাময়িক অনুরোধগুলি দক্ষতার সাথে পরিবেশন করে এবং OpenAI API উপভাষায় কথা বলে। গেটেড মডেলের (যেমন লামা) একটি আলিঙ্গন মুখ টোকেন প্রয়োজন, একটি গোপন হিসাবে সংরক্ষণ করা হয়।
apiVersion: v1
kind: Secret
metadata:
name: hf-token
namespace: llm
type: Opaque
stringData:
token: "hf_xxxxxxxxxxxxxxxxxxxxxxxx" # your Hugging Face access token
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: vllm-mistral
namespace: llm
labels:
app: vllm-mistral
spec:
replicas: 1
selector:
matchLabels:
app: vllm-mistral
template:
metadata:
labels:
app: vllm-mistral
spec:
containers:
- name: vllm
image: vllm/vllm-openai:latest
args:
- "--model"
- "mistralai/Mistral-7B-Instruct-v0.3"
- "--max-model-len"
- "8192"
- "--gpu-memory-utilization"
- "0.90"
ports:
- containerPort: 8000
env:
- name: HUGGING_FACE_HUB_TOKEN
valueFrom:
secretKeyRef:
name: hf-token
key: token
resources:
limits:
nvidia.com/gpu: 1
volumeMounts:
- name: cache
mountPath: /root/.cache/huggingface
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 60 # first start downloads weights
periodSeconds: 15
failureThreshold: 40
volumes:
- name: cache
persistentVolumeClaim:
claimName: model-cache
---
apiVersion: v1
kind: Service
metadata:
name: vllm-mistral
namespace: llm
spec:
selector:
app: vllm-mistral
ports:
- port: 80
targetPort: 8000
যেহেতু vLLM ওপেনএআই-সামঞ্জস্যপূর্ণ, অ্যাপ্লিকেশন কোডের শুধুমাত্র ইন-ক্লাস্টার ইউআরএল প্রয়োজন — কোনো SDK পরিবর্তন নেই:
curl http://vllm-mistral.llm.svc.cluster.local/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-7B-Instruct-v0.3",
"messages": [{"role": "user", "content": "Summarise our refund policy."}],
"temperature": 0.2
}'
7.4 একটি প্রবেশের সাথে এটি প্রকাশ করা
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: llm-api
namespace: llm
annotations:
nginx.ingress.kubernetes.io/proxy-read-timeout: "300" # long generations
spec:
ingressClassName: nginx
rules:
- host: llm.internal.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: vllm-mistral
port:
number: 80
7.5 স্কেলিং — এবং কেন এটি GPU-এর সাথে আলাদা
আপনি অটোস্কেল করতে পারেন, কিন্তু মনে রাখবেন প্রতিটি প্রতিলিপির নিজস্ব সম্পূর্ণ GPU প্রয়োজন - আপনি সাধারণ ক্ষেত্রে একটিকে ভগ্নাংশে ভাগ করতে পারবেন না এবং আপনার শারীরিকভাবে থাকা GPU গুলির বাইরে কোনও পয়েন্ট স্কেলিং নেই৷ সিপিইউ-এর পরিবর্তে কিউ বা রিকোয়েস্ট-রেট সিগন্যালে স্কেল করুন (কেডা এখানে চমৎকার)।
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: vllm-mistral
namespace: llm
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: vllm-mistral
minReplicas: 1
maxReplicas: 4 # never exceed the number of GPUs in the cluster
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
# For real LLM scaling, prefer KEDA on a queue depth or
# requests-per-second metric exported by vLLM, not CPU.
8. একটি বাস্তবসম্মত রোলআউট চেকলিস্ট
- একটি হোস্টেড API-এ প্রোটোটাইপ GPU কেনার আগে ব্যবহারের ক্ষেত্রে যাচাই করতে।
- একটি ওপেন-ওয়েট মডেল বাছুন যেটি আপনার হার্ডওয়্যারের সাথে মানানসই (একটি 7-8B মডেল দিয়ে শুরু করুন, কোয়ান্টাইজড)।
- ওল্লামা দিয়ে শুরু করুন অভ্যন্তরীণ পাইলটের জন্য; থেকে স্নাতক ভিএলএলএম যখন আপনার থ্রুপুট প্রয়োজন।
- RAG যোগ করুন হ্যালুসিনেশন কাটাতে এবং উত্তরগুলি বর্তমান রাখতে আপনার নিজের নথির উপরে।
- একজন মানুষকে লুপে রাখুন যেখানেই ভুল উত্তর প্রকৃত মূল্য বহন করে।
- অনুমান খরচ এবং লেটেন্সি পরিমাপ অনুরোধ অনুযায়ী - এটি আপনার সত্যিকারের ইউনিট অর্থনীতি।