Back to course
Module 3 · Day 14

Sampling Parameters: Temperature, Top-p & Top-k

Module 3-র প্রথম দিন — কিন্তু আজকের topic আসলে prompting আলোচনার শেষ বন্ধনী। Prompt ঠিক করে কী চাও; sampling ঠিক করে model কীভাবে পরের শব্দ বাছবে — temperature, top-p, top-k, আর কেন eval সবসময় temperature=0-এ চালাবে।

~120 min read6 learning objectives
What you'll learn
  • 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 করতে পারা।
Before this
  • Day 8–12 — prompt + eval harness + pass rate trajectory।
  • Day 13 — self-consistency কীভাবে temperature দিয়ে diverse path sample করত, মনে আছে।
  • Day 2 — tokens আর vocabulary-র ধারণা।
1

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 করে।

Why it matters

এটা বুঝলে 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 সামান্য আলাদা হতে পারে।

Why it matters

Temperature model-কে smarter/dumber করে না — শুধু randomness বাড়ায়-কমায়। এটাই সবচেয়ে common ভুল ধারণা। তুমি যখন playground-এ একই prompt-এ একেকবার একেক উত্তর পাও, কারণ temperature > 0।

নিচে ঢাকার রাস্তার খাবারের একটা example — একই ৬টা logit থেকে temperature নাড়িয়ে distribution কীভাবে ধারালো বা চ্যাপ্টা হয়, লাইভ দেখো।

2

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 থাকে)।

Why it matters

রাফি যখন 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।

Why it matters

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 করে।

3

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)।

Why it matters

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 ছোট।

Why it matters

এটাই reproducibility-র ভিত্তি। temp > 0-এ “regression” আসলে randomness হতে পারে, real change না — তখন তুমি ভুল সিদ্ধান্ত নেবে। temp 0 eval-কে বিশ্বাসযোগ্য করে। Day 11-এর runner কেন কাজ করেছিল — এই কারণেই।

Tip

আজ তিনটা জিনিস করো — (১) নিজের 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 ঢুকছে।

4

Check Your Understanding

ভুল হলে সমস্যা নেই — প্রতিটার ব্যাখ্যা আছে।

Misconception check

Temperature বাড়ালে model smarter / বেশি accurate হয়

Misconception check

Eval harness যেকোনো temperature-এ চালালেই pass rate ঠিক আসবে

Misconception check

temperature=0 মানে ১০০% bit-identical output, সবসময়

Misconception check

Best output পেতে temperature আর top_p দুটোই একসাথে tune করা উচিত

Misconception check

top-k আর top-p একই জিনিস, নাম আলাদা

Quick check

Temperature আসলে কী নিয়ন্ত্রণ করে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

softmax(logits / T) — temperature কমিয়ে 0-র কাছে নিলে কী হয়?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

Eval harness কোন temperature-এ চালাবে, আর কেন?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

top-p (nucleus) আর top-k-র মূল পার্থক্য কী?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

Brainstorming / creative draft-এর জন্য temperature কেমন রাখবে?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

Quick check

temperature=0 দিলে কি একই input-এ ১০০% একই output guaranteed?

ভুল হলেও সমস্যা নেই — প্রতিটা option-এর সাথে ব্যাখ্যা আছে।

5

Prove It To Yourself

চারটা takeaway মনে রাখো। Prompting-এর গল্প এখানেই শেষ।

Note

চারটা জিনিস মনে রাখো — 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 থেকে।

Glossary

শব্দার্থ — পরে ফিরে দেখার জন্য

একনজরে সব 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।
References

Sources consulted to author this lesson. Citation style is informal — follow the links if you want to dig deeper.

Exit check

দুই বাক্যে নিজের ভাষায় লেখো

নিজের ভাষায় দুই বাক্যে লেখো — নিজের কোন task-এ temperature 0 রাখবে আর কোনটায় বেশি (কেন), এবং eval harness চালানোর সময় কোন temperature ব্যবহার করবে।

0 chars
Back to course