মূল content-এ যাও

Generative AI/LLM-এর ভিত্তি/Lesson 03

Next-token prediction

LLM-এর একমাত্র কাজ পরের token অনুমান করা। গোনা দিয়ে একটা bigram language model বানাও, তা দিয়ে লেখা generate করো, আর দেখো GPT আসলে এরই এক বিশাল রূপ।

সময়
24 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

তোমার phone-এর keyboard "আমি ভাত" লিখলে পরের শব্দ suggest করে, যেমন "খাই"। ChatGPT ঠিক এই কাজটাই করে, শুধু অনেক অনেক ভালোভাবে:

P(পরের token∣আগের সব token)P(\text{পরের token} \mid \text{আগের সব token})

একটা token অনুমান করো, যোগ করো, আবার পরেরটা অনুমান করো। এভাবে পুরো উত্তর তৈরি হয়। একে বলে autoregressive generation।

"আমি ভাত"            → খাই (0.7), রান্না (0.2), ...
"আমি ভাত খাই"         → । (0.8), না (0.1), ...
"আমি ভাত খাই ।"       → ...

কেন দরকার?

LLM-এর প্রায় সব আচরণ এখান থেকে বোঝা যায়:

  • Hallucination: Model "সত্য" বলার জন্য train হয়নি, train হয়েছে "সম্ভাব্য পরের token"-এর জন্য। শুনতে বিশ্বাসযোগ্য ভুল তথ্যও সম্ভাব্য হতে পারে।
  • Streaming: উত্তর token-by-token আসে।
  • Prompt engineering: Prompt বদলালে আগের token বদলায়, তাই পরের token-এর probability বদলায়।

গোনা দিয়ে language model

সবচেয়ে সহজ model হলো bigram। এটা শুধু ঠিক আগের token দেখে। Training মানে corpus-এ গোনা: প্রতিটা শব্দের পরে কোন শব্দ কতবার এসেছে।

main.py

এটাই একটা language model। খুব ছোট আর খুব বোকা, কিন্তু GPT-র মতোই probability দেয়।

Bigram থেকে GPT

BigramGPT/Claude
কতটা আগে দেখে১টা tokenহাজার হাজার token (context window)
কীভাবে শেখেগুনেNeural network + gradient descent
Parameterশব্দ-জোড়ার tableশত শত কোটি weight
মূল কাজপরের token-এর probabilityএকই

মূল কাজ একই। পার্থক্য হলো কতটা context দেখতে পারে আর কতটা ভালোভাবে সাধারণীকরণ (generalize) করে। Bigram কখনো না দেখা শব্দ-জোড়ার জন্য কিছু বলতে পারে না। Neural network embedding দিয়ে বোঝে যে "মাছ" আর "ভাত" দুটোই খাবার।

Training loss: কতটা অবাক হলো

Model ঠিক token-কে কত probability দিয়েছিল, তার উপর ভিত্তি করে cross-entropy loss মাপা হয়:

L=−log⁡P(আসল পরের token)L = -\log P(\text{আসল পরের token})
main.py

নিশ্চিতভাবে ঠিক হলে loss ছোট। ঠিক token-কে কম probability দিলে, অর্থাৎ "অবাক" হলে, loss বড়। GPT-র pre-training মানে trillion-খানেক token-এ এই loss কমানো।

Exercise

Exercise

Bigram গোনা

+20 XP

bigram_counts(tokens) লেখো। প্রতিটা token-এর পরে কোন token কতবার এসেছে, তার nested dict return করবে:

{আগের_token: {পরের_token: সংখ্যা}}

উদাহরণ: ["আমি", "ভাত", "খাই", "আমি", "মাছ", "খাই"] → {"আমি": {"ভাত": 1, "মাছ": 1}, "ভাত": {"খাই": 1}, "খাই": {"আমি": 1}, "মাছ": {"খাই": 1}}

solution.py

Quiz

  1. Q1একটা LLM training-এর সময় আসলে কী শেখে?
  2. Q2Bigram model-এর সবচেয়ে বড় দুর্বলতা কী?
  3. Q3LLM কীভাবে একটা পুরো অনুচ্ছেদ লেখে?
0/3 answered

Challenge

Challenge

একটা ছোট্ট language model

+50 XP

Bigram count থেকে একটা model:

  1. next_probs(counts, token) — token-এর পরে প্রতিটা সম্ভাব্য token-এর probability-র dict। প্রতিটা count-কে মোট দিয়ে ভাগ করবে। token কখনো না দেখে থাকলে খালি dict {}।
  2. generate(counts, start, n) — greedy generation। start থেকে শুরু করে বারবার সবচেয়ে বেশি probability-র পরের token যোগ করবে। সমান হলে যেটা dict-এ আগে আছে। মোট nটা নতুন token যোগ হলে, অথবা পরের token না থাকলে থামবে। Return: পুরো token list (start সহ)।
solution.py

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

Challenge-এ তোমার greedy generation সবসময় একই লেখা দেয়, আর প্রায়ই একই লুপে আটকে যায় ("খাই । আমি ভাত খাই । আমি ভাত ...")। আসল LLM তাই সবসময় সবচেয়ে সম্ভাব্য token নেয় না, probability অনুযায়ী নমুনা (sample) নেয়। কতটা এলোমেলোভাবে নেবে, সেটা ঠিক করে একটা setting যেটা তুমি API-তে দেখবে: temperature।

Interview প্রশ্ন

  • Beginner: Language model কী? "Autoregressive" মানে কী?
  • Intermediate: LLM কেন hallucinate করে? Next-token prediction দিয়ে ব্যাখ্যা করো।
  • Advanced: N-gram model-এর sparsity সমস্যা কী? Neural language model কীভাবে এটা সমাধান করে?

এরপর কী?

Probability আছে। এখন কোন token বেছে নেবে? সবচেয়ে সম্ভাব্যটা, নাকি একটু ঝুঁকি নেবে? পরের lesson: Sampling আর temperature।