What are LLMs?পড়তে ১০ মিনিট লাগবে

টোকেন ও কনটেক্সট উইন্ডো

শব্দগুলোকে ছোট ছোট টুকরোয় ভাগ করা হয়, আর এআই একসাথে কেবল নির্দিষ্ট কিছু টুকরোই মনে রাখতে পারে
scope:প্রাথমিক ধারণাdifficulty:শিক্ষানবিস

ভাষার ছোট ছোট টুকরো

আপনি যখন এলএলএম-কে কোনো মেসেজ পাঠান, এআই কিন্তু আপনার শব্দগুলোকে মানুষের মতো করে পড়ে না। সে "কেমন আছো তুমি?"-কে চারটি আলাদা শব্দ হিসেবে দেখে না। বরং সে আপনার টেক্সটকে ছোট ছোট টোকেন (Tokens)-এ ভাগ করে নেয় — যা হতে পারে একটি শব্দ, শব্দের অংশ বা এমনকি একটি মাত্র অক্ষর।

একে একটি পাজল গেমের মতো কল্পনা করুন। "আমি প্রোগ্রামিং করি" বাক্যটি হয়তো তিনটি পাজল টুকরো হয়ে যাবে: [আমি] [প্রোগ্রামিং] [করি]। বেশ সহজ, তাই না?

কিন্তু "অবিস্মরণীয়" শব্দটির কথা ভাবুন। এটি হয়তো ভেঙে হবে: [অ] [বিস্মরণ] [ীয়] — তিনটি টুকরো! টোকেনাইজার শব্দটিকে এমন সব টুকরোয় ভাগ করে যা সে আগে থেকেই চেনে বা চিনে অভ্যস্ত।

আর যদি খুব অপরিচিত কোনো শব্দ হয়, যেমন- "হ্যালুসিনেশন"? এটি হয়তো হবে: [হ্য] [লু] [সিনে] [শন] — চারটি টুকরো।

কেন আস্ত শব্দ ব্যবহার করা হয় না?

ভালো প্রশ্ন! টোকেনাইজ করার পেছনে বেশ কিছু কারণ আছে:

  • শব্দভাণ্ডারের আকার — পৃথিবীতে কোটি কোটি শব্দ আছে (নাম, টেকনিক্যাল শব্দ, বিভিন্ন ভাষা)। সবকিছুর জন্য আলাদা জায়গা রাখা অসম্ভব। কিন্তু প্রায় ৫০,০০০ থেকে ১,০০,০০০ টোকেন টুকরো থাকলে তা দিয়ে দুনিয়ার যেকোনো শব্দ তৈরি করা সম্ভব।
  • নতুন শব্দ চেনা — মডেল হয়তো ট্রেনিংয়ের সময় "চ্যাটজিপিটি (ChatGPT)" শব্দটি দেখেনি। কিন্তু সে [Chat] [G] [PT] এই টুকরোগুলো চেনে, তাই সে শব্দটি নিয়ে কাজ করতে পারে।
  • বহুভাষিক সাপোর্ট — একই টোকেনাইজার বাংলা, ইংরেজি, চাইনিজ আর কোড — সবকিছুর টুকরো জমা রেখে সেগুলো অনায়াসে হ্যান্ডেল করতে পারে।

টোকেনের হিসাব-নিকাশ

ইংরেজি টেক্সটের জন্য একটি সহজ হিসাব হলো:

  • ১টি টোকেন ≈ ৪টি অক্ষর (স্পেস সহ)
  • ১টি টোকেন ≈ ০.৭৫টি শব্দ
  • ১০০টি টোকেন ≈ ৭৫টি শব্দ

তার মানে দাঁড়ায়:

  • একটি টুইট (২৮০ ক্যারেক্টার) ≈ ৭০টি টোকেন
  • এক পৃষ্ঠা লেখা (৫০০ শব্দ) ≈ ৬৭০টি টোকেন
  • একটি ছোট উপন্যাস (৫০,০০০ শব্দ) ≈ ৬৭,০০০টি টোকেন
  • হ্যারি পটার সিরিজের সব বই (১০,৮৪,০০০ শব্দ) ≈ ১৪,৫০,০০০টি টোকেন!

এই হিসাবটা কেন জরুরি? কারণ আপনি যখন এলএলএম-এর API ব্যবহার করেন, তখন প্রতিটি টোকেনের জন্য আপনাকে টাকা দিতে হয়। আবার মডেলে একসাথে কতটুকু লেখা দেওয়া যাবে সেটারও একটা সীমা থাকে — যাকে বলে কনটেক্সট উইন্ডো (Context Window)

টোকেনাইজেশনের কিছু অবাক করা দিক

কিছু জিনিস মানুষকে বেশ অবাক করে:

  • স্পেস বা খালি জায়গাও গুনা হয় — " হ্যালো" (শুরুতে স্পেস সহ) আর "হ্যালো" দুটি আলাদা টোকেন!
  • সংখ্যাগুলো অদ্ভুত — "১২৩" হয়তো একটি টোকেন, কিন্তু "১২৩৪৫" হয়তো দুটি টোকেন: [১২৩] [৪৫]। এলএলএম মাঝেমধ্যে অংকে ভুল করে কারণ সে সংখ্যাগুলোকে টোকেন হিসেবে দেখে।
  • অ-ইংরেজি ভাষায় টোকেন বেশি লাগে — বাংলা, চাইনিজ বা জাপানিজ ফন্টের জন্য প্রতিটি অক্ষরে ২-৩টি টোকেন লাগতে পারে। কারণ টোকেনাইজার মূলত ইংরেজি ডেটা দিয়ে বেশি ট্রেইন করা। এর মানে বাংলা ইউজাররা কার্যকরভাবে একটু ছোট কনটেক্সট উইন্ডো পান।
  • ইমোজি অনেক দামী — একটি মাত্র ইমোজি ২ থেকে ৪টি টোকেন খেয়ে ফেলতে পারে!

টোকেনাইজেশন কীভাবে কাজ করে

# টোকেন দেখার জন্য ওপেনএআই-এর (OpenAI) tiktoken লাইব্রেরি ব্যবহার
import tiktoken
# জিপিটি-৪ (GPT-4) এর টোকেনাইজার
enc = tiktoken.encoding_for_model("gpt-4")
# কিছু টেক্সট টোকেনাইজ করা
text = "Hello, world! I love programming."
tokens = enc.encode(text)
print(f"টেক্সট: {text}")
print(f"টোকেনস: {tokens}")
print(f"মোট: {len(tokens)} টি টোকেন")
print()
# প্রতিটি টোকেন দেখতে কেমন তা দেখা
for t in tokens:
print(f" টোকেন {t} -> '{enc.decode([t])}'")
print()
# ছোট এবং লম্বা শব্দের তুলনা
for word in ["cat", "programming", "Pneumonoultramicroscopicsilicovolcanoconiosis"]:
toks = enc.encode(word)
print(f"'{word}' -> {len(toks)} টি টোকেন")
Output
টেক্সট: Hello, world! I love programming.
টোকেনস: [9906, 11, 1917, 0, 358, 3021, 15840, 13]
মোট: 8 টি টোকেন

  টোকেন 9906 -> 'Hello'
  টোকেন 11 -> ','
  টোকেন 1917 -> ' world'
  টোকেন 0 -> '!'
  টোকেন 358 -> ' I'
  টোকেন 3021 -> ' love'
  টোকেন 15840 -> ' programming'
  টোকেন 13 -> '.'

'cat' -> 1 টি টোকেন
'programming' -> 1 টি টোকেন
'Pneumonoultramicroscopicsilicovolcanoconiosis' -> 11 টি টোকেন
Note: কেন এলএলএম অক্ষর গুনতে ভুল করে: আপনি যদি জিজ্ঞেস করেন "'strawberry' শব্দটিতে কয়টি 'r' আছে?" তবে এলএলএম প্রতিটি অক্ষর আলাদাভাবে দেখে না। সে দেখে টোকেন যেমন- [str] [aw] [berry]। অক্ষরগুলো টোকেনের ভেতরে লুকানো থাকে! তাই অক্ষর গোনা বা স্পেলিংয়ের কাজে এলএলএম প্রায়ই হিমশিম খায়।

কনটেক্সট উইন্ডো: এআই-এর স্বল্পমেয়াদী স্মৃতি

কল্পনা করুন আপনি অনেক মোটা একটি বই পড়ছেন, কিন্তু আপনি একসাথে কেবল শেষ ১০০ পৃষ্ঠাই মনে রাখতে পারেন। আপনি যখন ১০১ নম্বর পৃষ্ঠায় যান, আপনি ১ নম্বর পৃষ্ঠা ভুলে যান। ২০০ নম্বর পৃষ্ঠায় পৌঁছানোর পর ১০০ পৃষ্ঠার আগের সবকিছু স্মৃতি থেকে মুছে যায়।

এটাই হলো কনটেক্সট উইন্ডো (Context Window)। এটি হলো টেক্সটের সেই সর্বোচ্চ সীমা যা একটি এলএলএম একসাথে "দেখতে" পারে — এর মধ্যে আপনার মেসেজ এবং এআই-এর তৈরি উত্তর উভয়ই অন্তর্ভুক্ত।

বিগত কয়েক বছরে কনটেক্সট উইন্ডোর উন্নতি

  • GPT-3 (২০২০) — ৪,০৯৬ টোকেন (~৩,০০০ শব্দ, ~৬ পৃষ্ঠা)
  • জিপিটি-৩.৫ (GPT-3.5) (২০২২) — ৪,০৯৬ টোকেন, পরে ১৬,৩৮৪ পর্যন্ত বাড়ানো হয়
  • জিপিটি-৪ (GPT-4) (২০২৩) — ৮,১৯২ বা ৩২,৭৬৮ টোকেন (~২৫,০০০ শব্দ, ~৫০ পৃষ্ঠা)
  • জিপিটি-৪ (GPT-4) Turbo (২০২৩) — ১২৮,০০০ টোকেন (~৯৬,০০০ শব্দ, ~১টি উপন্যাস)
  • ক্লড (Claude) 3 (২০২৪) — ২০০,০০০ টোকেন (~১,৫০,০০০ শব্দ, ~দেড়টি উপন্যাস)
  • জেমিনি (Gemini) 1.5 Pro (২০২৪) — ১০,০০,০০০ টোকেন (~৭,৫০,০০০ শব্দ, ~১০টি উপন্যাস!)

মাত্র চার বছরে কনটেক্সট উইন্ডো ২৫০ গুণ বেড়েছে। এলএলএম প্রযুক্তির এটি অন্যতম দ্রুত উন্নত হওয়া একটি দিক।

উইন্ডো পূর্ণ হয়ে গেলে কী হয়?

যখন আপনার চ্যাট কনটেক্সট উইন্ডো ছাড়িয়ে যায়, তখন একদম শুরু দিকের কথাগুলো বাদ পড়ে যায়। মডেল সেগুলো আর দেখতে পারে না। একে প্রযুক্তিগত ভাষায় বলে ট্রাঙ্কেশন (Truncation)

কিছু সিস্টেম এই সমস্যা কাটানোর চেষ্টা করে:

  • সামারাইজেশন (Summarization) — পুরানো মেসেজগুলো ফেলে দেওয়ার আগে সেগুলোর একটা সারসংক্ষেপ তৈরি করে রাখা।
  • RAG — পুরানো কথাগুলো ডাটাবেসে সেভ করে রাখা এবং দরকার হলে সেখান থেকে খুঁজে আনা।
  • স্লাইডিং উইন্ডো (Sliding window) — শুধু সিস্টেমের মূল কমান্ড আর অতি সাম্প্রতিক মেসেজগুলো রাখা, মাঝেরগুলো বাদ দেওয়া।

আপনার জন্য কেন কনটেক্সট উইন্ডো জরুরি

কনটেক্সট উইন্ডো সম্পর্কে ধারণা থাকলে আপনি এলএলএম আরও ভালো ভাবে ব্যবহার করতে পারবেন:

  • বড় দস্তাবেজ বা ডকুমেন্ট — ১০০ পৃষ্ঠার একটি আইনি চুক্তি বিশ্লেষণ করতে হবে? নিশ্চিত হয়ে নিন আপনার মডেলের কনটেক্সট উইন্ডো যথেষ্ট বড় কিনা, অথবা সেটিকে ছোট ছোট খণ্ডে ভাগ করে দিন।
  • কথোপকথনের দৈর্ঘ্য — দীর্ঘক্ষণ কথা বললে এআই হয়তো আপনার আগের কথাগুলো "ভুলে" যেতে পারে। এটা তার খারাপ ব্যবহার নয় — সে আসলেই ওগুলো আর দেখতে পাচ্ছে না।
  • খরচ — উইন্ডো যত বড়, টোকেন প্রসেস তত বেশি, আর খরচও তত বেশি।
  • গতি — বেশি টোকেন প্রসেস করতে একটু বেশি সময় লাগে। বিশাল কোনো ফাইল আপলোড করার পর প্রথম উত্তর আসতে একটু দেরি হতে পারে।

সবচেয়ে ভালো উপায় হলো — সংক্ষেপে এবং স্পষ্টভাবে কথা বলা। সবচেয়ে গুরুত্বপূর্ণ তথ্যগুলো মেসেজের শুরুতেই দিন। ফালতু কথা লিখে টোকেন নষ্ট করবেন না। কারণ প্রতিটি টোকেনই গুরুত্বপূর্ণ!

Challenge

ছোট কুইজ

কেন 'অবিস্মরণীয়' শব্দটি একাধিক টোকেনে ভাগ হতে পারে?

পড়া চালিয়ে যান

এলএলএম (LLM) কী?
এক বিশাল পাঠক যে দুনিয়ার সব বই পড়ে ফেলেছে এবং এখন আপনার কথা শেষ করতে সাহায্য করে
এলএলএম কীভাবে কাজ করে?
বিড়ালটি ___ এর ওপর বসে আছে। শত শত কোটি উদাহরণ আর গণিতের ম্যাজিকে মেশিন কীভাবে সঠিক শব্দটি খুঁজে পায়?
চ্যাটজিপিটি (ChatGPT)
সেই চ্যাটবট যা মাত্র ৫ দিনে ইন্টারনেট তোলপাড় করে দিয়েছিল এবং এআই সম্পর্কে আমাদের ধারণাই বদলে দিয়েছিল
ক্লড (Claude)
শুরু থেকেই নিরাপদ, ক্ষতিকর নয় এবং সৎ হওয়ার শপথ নিয়ে তৈরি — আলাপ করুন অ্যানথ্রোপিকের ক্লড-এর সাথে