Sampling Parameters: Temperature, Top-p & Top-k
Module 3-র প্রথম দিন — কিন্তু আজকের topic আসলে prompting আলোচনার শেষ বন্ধনী। Prompt ঠিক করে কী চাও; sampling ঠিক করে model কীভাবে পরের শব্দ বাছবে — temperature, top-p, top-k, আর কেন eval সবসময় temperature=0-এ চালাবে।
- •Model একটা শব্দ না, পুরো vocabulary-র উপর probability distribution বের করে — এটা বোঝা।
- •Temperature কীভাবে distribution-কে ধারালো/চ্যাপ্টা করে — `softmax(logits / T)`।
- •Greedy decoding (T=0) আর deterministic output — eval harness কেন temperature=0-এ চালাবে।
- •Top-k, top-p (nucleus), min-p — কোন token গুলো eligible, তা trim করার তিন উপায়।
- •কোন task-এ কোন setting — classification/eval (temp 0) বনাম brainstorm (temp 0.8+)।
- •API/playground-এ `temperature`, `top_p`, `top_k` parameter নিজে set করতে পারা।
- •Day 8–12 — prompt + eval harness + pass rate trajectory।
- •Day 13 — self-consistency কীভাবে temperature দিয়ে diverse path sample করত, মনে আছে।
- •Day 2 — tokens আর vocabulary-র ধারণা।
The Big Picture
Module 3 শুরু, কিন্তু আজ আসলে prompting আলোচনার শেষ ধাপ — probability distribution আর temperature।
Module 3 শুরু আজ থেকে (Day 14–24) — কিন্তু আজকের topic আসলে এতদিনের prompting আলোচনার শেষ বন্ধনী। এতদিন prompt বানিয়েছ — কী বলবে, কীভাবে structure করবে, example দেবে কিনা, reasoning দেখাবে কিনা। কিন্তু prompt পাঠানোর পর model-এর ভেতরে যা হয় — শেষ শব্দটা ঠিক কীভাবে বেছে নেয় — সেটা একটা আলাদা layer। Prompt ঠিক করে কী চাও; sampling ঠিক করে model কীভাবে বাছবে।
Token distributionmodel একটা শব্দ না, একটা list দেয়
প্রতিটা token-এর পর model পুরো vocabulary-র উপর একটা score (logit) বের করে, softmax সেগুলোকে probability-তে বদলায় — “fuchka 40%, jhalmuri 22%, singara 15%…”। Model শব্দ output করে না; একটা distribution output করে।
এটা বুঝলে temperature, top-p সব পরিষ্কার হয়ে যাবে। Model-এর মাথায় সবসময় একটা ranked list থাকে — sampling হলো সেই list থেকে একটা শব্দ তুলে নেওয়ার নিয়ম। Prompt list-টা ঠিক করে; sampling parameter কীভাবে তুলবে সেটা ঠিক করে।
সেই distribution থেকে একটা শব্দ বেছে নেওয়ার সবচেয়ে গুরুত্বপূর্ণ knob দিয়ে শুরু করি — temperature।
Temperaturerandomness-এর knob
`softmax(logits / T)` — temperature distribution-টাকে ধারালো না চ্যাপ্টা করে। T কম (→0) হলে top token-এ probability জমে যায় (focused, deterministic)। T বেশি হলে সবাই কাছাকাছি হয়ে যায় (random, creative — তবে আজেবাজে শব্দের ঝুঁকিও বাড়ে)। সাধারণ range 0.0–1.0, default 1.0 — provider-ভেদে range সামান্য আলাদা হতে পারে।
Temperature model-কে smarter/dumber করে না — শুধু randomness বাড়ায়-কমায়। এটাই সবচেয়ে common ভুল ধারণা। তুমি যখন playground-এ একই prompt-এ একেকবার একেক উত্তর পাও, কারণ temperature > 0।
নিচে ঢাকার রাস্তার খাবারের একটা example — একই ৬টা logit থেকে temperature নাড়িয়ে distribution কীভাবে ধারালো বা চ্যাপ্টা হয়, লাইভ দেখো।
Core Concepts
Greedy decoding (T=0) থেকে top-k/top-p — কোন token-গুলো আদৌ বিবেচনায় থাকবে।
Slider একদম 0-এ নিয়ে গেলে খেয়াল করেছ? পুরো distribution একটা token-এ জমে যায় — কোনো চমক নেই। এটাই greedy decoding।
Greedy decodingT=0 → সবসময় top token
Temperature 0 মানে model প্রতিবার সবচেয়ে সম্ভব token-টাই নেয় (argmax) — কোনো dice roll নেই। তাই একই input → প্রায় একই output। তবে official API docs নিজেই বলে: temperature 0-এও পুরোপুরি deterministic না (floating-point + infra-তে সামান্য variation থাকে)।
রাফি যখন complaint classify করে বা invoice থেকে JSON বের করে — তার randomness চাই না, সে চায় predictable, repeatable output। greedy (temp 0) ঠিক সেটাই দেয়। “প্রায়” শব্দটা মাথায় রেখো — কাছাকাছি deterministic, bit-identical guarantee না।
একই prompt ৬ বার চালালে temperature 0 আর temperature 1.0-এ কী রকম আলাদা আচরণ দেখা যায়, নিজে run করে দেখো।
Temperature distribution reshape করে। কিন্তু একটা আলাদা প্রশ্ন থেকে যায় — reshape হওয়া distribution থেকে ঠিক কতগুলো token আসলে বিবেচনায় থাকবে? সেটা ঠিক করে top-k আর top-p।
Top-k & top-pকোন token গুলো eligible, তা trim
Temperature-এর পরে আরেকটা ছাঁকনি: top-k = শুধু top K token রাখো (fixed সংখ্যা, যেমন 40)। top-p (nucleus) = cumulative probability p (যেমন 0.9) না-হওয়া পর্যন্ত যত token লাগে রাখো — distribution ধারালো হলে অল্প, চ্যাপ্টা হলে বেশি, নিজে adapt করে। min-p (modern) = top token-এর confidence অনুযায়ী threshold।
Long tail-এর আজেবাজে token (low probability) ছেঁটে ফেলে output পরিষ্কার থাকে — ২০১৯-এর একটা landmark paper দেখিয়েছিল tail থেকে sample করলে লেখা context হারায়। Official docs top_p/top_k-কে “advanced use only” বলে — বেশিরভাগ কাজে শুধু temperature-ই যথেষ্ট।
নিচে একটা ধারালো আর একটা চ্যাপ্টা distribution — দুটোতেই top-k আর top-p toggle করে দেখো কে কতগুলো token রাখে, আর top-p নিজে কীভাবে adapt করে।
Try It Yourself
কোন task-এ কোন setting, আর কেন eval সবসময় temperature=0-এ চালাবে।
Match knob to jobকোন task-এ কোন setting
Classification / extraction / eval / code → temperature 0 (deterministic, reproducible)। Chatbot reply → 0.7। Brainstorm / creative draft → 0.9–1.0 (বৈচিত্র্য)। আর একটা নিয়ম: temperature আর top_p একসাথে দুটোই tune কোরো না — একটা primary knob ধরো (সাধারণত temperature)।
Default temperature 1.0-এ classification চালালে রাফির eval jitter করবে, label বদলাবে। ঠিক knob না দিলে ভালো prompt-ও unreliable মনে হবে। Setting prompt-এর মতোই engineering decision।
নিচে একেকটা task বেছে দেখো — recommended temperature/top_p কত, আর কেন।
এই knob-টা ঠিক না রাখলে কী হয়, সেটা তুমি Day 12-এ নিজেই দেখেছ। Day 11-এর eval suite যদি ভিন্ন ভিন্ন temperature-এ চালাও, pass rate কতটা নড়ে — নিচে নিজে toggle করে দেখো।
Evals at temp 0Day 12-র noise band-এর রহস্য
Day 12-এ pass rate পরপর run-এ 84% ↔ 83% ওঠানামা করত — “noise band”। সেই jitter-এর বড় কারণ temperature > 0: একই test input প্রতিবার একটু আলাদা output দিচ্ছিল। eval চালাও temperature=0-এ → output stable → pass rate stable → noise band ছোট।
এটাই reproducibility-র ভিত্তি। temp > 0-এ “regression” আসলে randomness হতে পারে, real change না — তখন তুমি ভুল সিদ্ধান্ত নেবে। temp 0 eval-কে বিশ্বাসযোগ্য করে। Day 11-এর runner কেন কাজ করেছিল — এই কারণেই।
আজ তিনটা জিনিস করো — (১) নিজের project-এর prompt-এ temperature parameter explicitly set করো, default-এর ভরসায় থেকো না; (২) নিজের task deterministic (classification/extraction/eval/code) নাকি creative (brainstorm/draft), সেটা আলাদা করো — দুই রকম setting মনে রাখো; (৩) Day 11-র runner দিয়ে নিজের eval suite temperature=0-এ ৩ বার চালাও, pass rate spread দেখো — 2pp-এর বেশি হলে বুঝবে randomness ঢুকছে।
Check Your Understanding
ভুল হলে সমস্যা নেই — প্রতিটার ব্যাখ্যা আছে।
Temperature বাড়ালে model smarter / বেশি accurate হয়
Eval harness যেকোনো temperature-এ চালালেই pass rate ঠিক আসবে
temperature=0 মানে ১০০% bit-identical output, সবসময়
Best output পেতে temperature আর top_p দুটোই একসাথে tune করা উচিত
top-k আর top-p একই জিনিস, নাম আলাদা
Temperature আসলে কী নিয়ন্ত্রণ করে?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
softmax(logits / T) — temperature কমিয়ে 0-র কাছে নিলে কী হয়?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
Eval harness কোন temperature-এ চালাবে, আর কেন?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
top-p (nucleus) আর top-k-র মূল পার্থক্য কী?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
Brainstorming / creative draft-এর জন্য temperature কেমন রাখবে?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
temperature=0 দিলে কি একই input-এ ১০০% একই output guaranteed?
ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।
Prove It To Yourself
চারটা takeaway মনে রাখো। Prompting-এর গল্প এখানেই শেষ।
চারটা জিনিস মনে রাখো — Model শব্দ না, distribution আউটপুট করে: sampling সেটাকে একটা token-এ বদলায়, prompt বলে কী চাও আর sampling বলে কীভাবে বাছবে। Temperature = randomness knob: softmax(logits/T)। কম/0 = focused ও deterministic; বেশি = creative ও varied — intelligence না। Evals চলে temperature 0-এ: reproducible pass rate, ছোট noise band — Day 11-র runner তাই বিশ্বাসযোগ্য ছিল। Knob-টা কাজের সাথে মেলাও: classification/extraction/eval/code → temp 0; brainstorm/draft → 0.9–1.0। একটা primary knob tune করো, দুটো না।
আজকের শব্দগুলো — sampling, temperature, logits, softmax, probability distribution, greedy decoding, deterministic, reproducibility, top-k, top-p, nucleus sampling, min-p, the long tail, argmax — এখন থেকে English-ই থাকবে; API call, playground, PR review-এ এভাবেই দেখবে। পুরো তালিকা নিচের glossary-তে। এখানেই prompting-এর গল্প (Day 4–14) শেষ হলো — sampling ছিল শেষ বন্ধনী। Module 3 চলবে tool আর workflow নিয়ে, পরের lesson থেকে।
শব্দার্থ — পরে ফিরে দেখার জন্য
একনজরে সব key term। কোনো শব্দ ভুলে গেলে এখানে এসে খুঁজে নিও।
- Argmax
- সর্বোচ্চ probability-র option বেছে নেওয়া — greedy-র গাণিতিক নাম।
- Deterministic
- একই input → একই output। eval-এর জন্য কাম্য।
- Greedy decoding
- সবসময় top (argmax) token নেওয়া — temperature 0-এর আচরণ।
- Logits
- Softmax-এর আগে প্রতিটা token-এর raw score।
- max_tokens
- Output সর্বোচ্চ কত token হবে — sampling না, length limit।
- Min-p
- Threshold = min_p × P(top token); confidence অনুযায়ী কড়া/নরম। Modern।
- Probability distribution
- পুরো vocabulary-র উপর “কে কতটা সম্ভব” — model-এর আসল output।
- Reproducibility
- একই run বারবার একই ফল দেয় — temperature 0 এটা দেয় (প্রায়)।
- Sampling
- Probability distribution থেকে একটা actual token বেছে নেওয়ার ধাপ।
- Softmax
- Logits-কে যোগ করে 1 হওয়া probability-তে বদলানোর function।
- Temperature
- Randomness-এর knob; softmax(logits/T)। কম = focused, বেশি = random।
- The long tail
- Distribution-এর low-probability token গুলো — top-k/top-p এগুলো ছাঁটে।
- Top-k
- শুধু top K token থেকে sample — fixed সংখ্যা।
- Top-p (nucleus)
- Cumulative probability p পর্যন্ত যত token লাগে — adaptive।
Sources consulted to author this lesson. Citation style is informal — follow the links if you want to dig deeper.
- Messages API reference — temperature, top_p, top_k — Anthropic (2025)
- Temperature, Top-k, and Top-p Sampling Explained — Sebastian Raschka (2024)
- The Curious Case of Neural Text Degeneration — Holtzman et al. (2019)
- LLM Sampling: temperature, top-k, top-p, and min-p explained — Let's Data Science (2024)
- Anthropic Console / Workbench — Anthropic (2025)
দুই বাক্যে নিজের ভাষায় লেখো
নিজের ভাষায় দুই বাক্যে লেখো — নিজের কোন task-এ temperature 0 রাখবে আর কোনটায় বেশি (কেন), এবং eval harness চালানোর সময় কোন temperature ব্যবহার করবে।