Generative AI/LLM-এর ভিত্তি/Lesson 04
Sampling আর temperature
Model probability দেয়। কোন token নেওয়া হবে, সেটা ঠিক করে sampling। Softmax, temperature, top-k আর top-p নিজে হাতে বানাও, আর বোঝো কখন সৃজনশীলতা চাই আর কখন নির্ভুলতা।
- সময়
- 22 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
আগের lesson-এ model পরের token-এর probability দিল। এখন সিদ্ধান্ত: কোনটা নেবে?
- Greedy: সবসময় সবচেয়ে সম্ভাব্যটা। নিরাপদ, কিন্তু একঘেয়ে আর প্রায়ই লুপে আটকায়।
- Sampling: Probability অনুযায়ী লটারি। 0.7 probability-র token ৭০% সময় আসে। বৈচিত্র্য আছে, কিন্তু মাঝে মাঝে অদ্ভুত token উঠে যায়।
Temperature এই দুইয়ের মাঝে একটা knob।
কেন দরকার?
LLM API-তে প্রায় সবসময় এই setting-গুলো দেখবে (temperature, top_p, top_k)। কাজ অনুযায়ী ঠিক মান বাছাই করা AI engineer-এর দৈনন্দিন কাজ:
| কাজ | Temperature |
|---|---|
| Data extraction, classification, code | কম (0–0.3) |
| সাধারণ chat | মাঝারি (~0.7–1) |
| গল্প, brainstorming, বৈচিত্র্য | বেশি (1+) |
Softmax আর temperature
Model আসলে দেয় logits, অর্থাৎ যেকোনো বাস্তব সংখ্যা। Softmax এগুলোকে probability বানায়। Temperature দিয়ে আগে ভাগ করা হয়:
- : বড় আরও বড়, ছোট আরও ছোট। Distribution "তীক্ষ্ণ", প্রায় greedy।
- : Model-এর আসল probability।
- : সবাই কাছাকাছি, তাই "stone"-এর মতো অদ্ভুত token-এর সুযোগ বাড়ে।
Sampling নিজে চালিয়ে দেখো
Top-k আর top-p: লেজ কেটে ফেলা
বেশি temperature-এর বিপদ হলো হাজার হাজার অসম্ভব token-এর ছোট ছোট probability মিলে একটা বড় অংশ হয়ে যায়। মাঝে মাঝে আবর্জনা token উঠে আসে। সমাধান হলো আগে লেজ কেটে ফেলা:
- Top-k: শুধু সবচেয়ে সম্ভাব্য টা থেকে বাছো
- Top-p (nucleus): সবচেয়ে সম্ভাব্যগুলো থেকে ততগুলো নাও, যতগুলোতে জমা probability হয়। Model নিশ্চিত হলে ২-৩টা token থেকে, অনিশ্চিত হলে বেশি থেকে।
probs: rice 0.50 fish 0.30 bread 0.15 tea 0.05
top-p = 0.75 → rice + fish = 0.80 ≥ 0.75 → এই দুটো থেকেই বাছো
Exercise
Exercise
Temperature সহ softmax
Model আসলে probability দেয় না, দেয় logits (যেকোনো বাস্তব সংখ্যা)। Softmax এগুলোকে probability বানায়, আর temperature T আগে logits-কে ভাগ করে:
p_i = e^(z_i / T) ÷ Σ_j e^(z_j / T)
softmax(logits, temperature=1.0) লেখো (NumPy array নেবে আর দেবে)। বড় logits-এ যেন overflow না হয়: ভাগ করার পর সবচেয়ে বড় মানটা বিয়োগ করে নাও। এতে ফলাফল বদলায় না।
Quiz
Challenge
Challenge
Top-k আর top-p filter
দুটো function লেখো। দুটোই একটা probability array নেবে আর নতুন probability array দেবে, যেখানে বাদ পড়া token-গুলো 0 আর বাকিগুলো আবার normalize করা (যোগফল 1):
top_k(probs, k)— শুধু সবচেয়ে বড়kটা রাখবেtop_p(probs, p)— বড় থেকে ছোট ক্রমে token নেবে, যতক্ষণ না জমা probability অন্ততpহয়। সবচেয়ে কম যতগুলো token লাগে, ততগুলো রাখবে।
উদাহরণ: probs [0.5, 0.3, 0.15, 0.05], p = 0.75 → প্রথম দুটো (0.5 + 0.3 = 0.8 ≥ 0.75) → [0.625, 0.375, 0, 0]
বাস্তবে কোথায় ব্যবহার হয়?
API-তে এটা শুধু একটা parameter:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=300,
temperature=1.0,
messages=[{"role": "user", "content": "একটা ছোট বাংলা কবিতা লেখো, বর্ষা নিয়ে"}],
)
print(response.content[0].text)
দুটো সাবধানতা:
- কিছু নতুন model-এ, বিশেষ করে যেগুলো উত্তরের আগে "চিন্তা" (extended thinking) করে, sampling parameter-এ সীমাবদ্ধতা থাকে বা সেগুলো উপেক্ষা হয়। Provider-এর documentation দেখে নাও।
- Temperature আর top_p একসাথে বদলানোর বদলে সাধারণত যেকোনো একটা বদলাও।
Interview প্রশ্ন
- Beginner: Temperature কী করে?
- Intermediate: Top-k আর top-p-এর পার্থক্য কী? কোনটা কখন?
- Advanced: Temperature 0-তেও output কেন মাঝে মাঝে আলাদা হতে পারে? Production-এ পুনরাবৃত্তিযোগ্যতা কীভাবে নিশ্চিত করবে?
এরপর কী?
🎉 LLM-এর ভিত্তি module শেষ। এখন তুমি জানো token → embedding → next-token probability → sampling, অর্থাৎ একটা LLM শুরু থেকে শেষ পর্যন্ত কী করে।
পরের module: Prompting। Model-কে ঠিক যা চাও তা করানো, structured output (JSON) আর function calling।