মূল content-এ যাও

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 TT দিয়ে আগে ভাগ করা হয়:

pi=ezi/T∑jezj/Tp_i = \frac{e^{z_i / T}}{\sum_j e^{z_j / T}}
main.py
  • T<1T < 1: বড় আরও বড়, ছোট আরও ছোট। Distribution "তীক্ষ্ণ", প্রায় greedy।
  • T=1T = 1: Model-এর আসল probability।
  • T>1T > 1: সবাই কাছাকাছি, তাই "stone"-এর মতো অদ্ভুত token-এর সুযোগ বাড়ে।

Sampling নিজে চালিয়ে দেখো

main.py

Top-k আর top-p: লেজ কেটে ফেলা

বেশি temperature-এর বিপদ হলো হাজার হাজার অসম্ভব token-এর ছোট ছোট probability মিলে একটা বড় অংশ হয়ে যায়। মাঝে মাঝে আবর্জনা token উঠে আসে। সমাধান হলো আগে লেজ কেটে ফেলা:

  • Top-k: শুধু সবচেয়ে সম্ভাব্য kkটা থেকে বাছো
  • Top-p (nucleus): সবচেয়ে সম্ভাব্যগুলো থেকে ততগুলো নাও, যতগুলোতে জমা probability pp হয়। 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

+20 XP

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 না হয়: ভাগ করার পর সবচেয়ে বড় মানটা বিয়োগ করে নাও। এতে ফলাফল বদলায় না।

solution.py

Quiz

  1. Q1Temperature কমালে (যেমন 0.2) কী হয়?
  2. Q2Top-p (nucleus) sampling কী করে?
  3. Q3Temperature 0 দিলেও কি LLM-এর উত্তর সবসময় একই হবে?
0/3 answered

Challenge

Challenge

Top-k আর top-p filter

+50 XP

দুটো function লেখো। দুটোই একটা probability array নেবে আর নতুন probability array দেবে, যেখানে বাদ পড়া token-গুলো 0 আর বাকিগুলো আবার normalize করা (যোগফল 1):

  1. top_k(probs, k) — শুধু সবচেয়ে বড় kটা রাখবে
  2. 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]

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

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।