টোকেনাইজেশন: পর্দার আড়ালে
আপনি একটি চ্যাটবট ডেপ্লয় করলেন। ইংরেজি কুয়েরিতে ৪২টি টোকেন ব্যবহৃত হয়। একজন স্প্যানিশ ব্যবহারকারী একটি কুয়েরি পাঠালেন এবং এতে ১০৩টি টোকেন ব্যবহৃত হলো। হঠাৎ করেই আপনার API খরচ ৪০% বেড়ে গেল।
এটি তখনই ঘটে যখন আপনি টোকেনাইজেশনকে একটি অদৃশ্য কারিগরি প্রক্রিয়া হিসেবে বিবেচনা করেন। প্রতিটি লার্জ ল্যাঙ্গুয়েজ মডেল (LLM) চারটি সাবওয়ার্ড অ্যালগরিদমের একটি ব্যবহার করে। আপনার পছন্দ নির্ধারণ করে দেয় ভোকাবুলারি সাইজ, ভাষার দক্ষতা এবং আপনার মাসিক বিল।
টোকেনাইজেশন তিনটি গুরুত্বপূর্ণ বিষয় নিয়ন্ত্রণ করে:
- ইনফারেন্স খরচ (Inference cost): LLM API গুলো টোকেন অনুযায়ী চার্জ করে। একটি ছোট ভোকাবুলারি একটি শব্দকে ৮টি টোকেনে বিভক্ত করতে পারে। একটি বড় ভোকাবুলারি এটি মাত্র ৩টি টোকেনে সম্পন্ন করতে পারে। বড় পরিসরে এই পার্থক্যটি প্রকৃত অর্থের অপচয় ঘটায়।
- ভোকাবুলারি কভারেজ (Vocabulary coverage): দুর্বল ভোকাবুলারি দীর্ঘ সিকোয়েন্স তৈরি করে। এর ফলে টেক্সট জেনারেশন ধীর হয়ে যায় এবং খরচ বেড়ে যায়।
- মডেলের আচরণ (Model behavior): যদি একটি টোকেনাইজার "cowboy" শব্দটিকে ["cow", "boy"] হিসেবে বিভক্ত করে, তবে মডেলটি সেভাবে শেখে, যা ["c", "owb", "oy"] হিসেবে বিভক্ত করার চেয়ে আলাদা।
নিচে চারটি প্রধান প্রকারের কার্যপদ্ধতি দেওয়া হলো:
BPE (Byte Pair Encoding)
- কার্যপদ্ধতি: এটি ক্যারেক্টার বা অক্ষর দিয়ে শুরু হয়। এটি ঘনঘন ব্যবহৃত পাশাপাশি থাকা জোড়াগুলো গণনা করে এবং সেগুলোকে নতুন টোকেনে মার্জ (merge) করে। একটি নির্দিষ্ট সাইজে পৌঁছানো পর্যন্ত এটি প্রক্রিয়াটি পুনরাবৃত্তি করে।
- সুবিধা: দ্রুত এবং ডিটারমিনিস্টিক (deterministic)।
- ব্যবহারকারী: GPT-4o, Llama 3, Mistral.
WordPiece
- কার্যপদ্ধতি: এটি BPE-এর মতোই, তবে এটি র (raw) ফ্রিকোয়েন্সির পরিবর্তে লাইকলিহুড (likelihood) ব্যবহার করে। এটি এমন মার্জ বেছে নেয় যা ট্রেনিং ডেটার সম্ভাবনা (probability) সর্বোচ্চ করে।
- সুবিধা: ভাষাগতভাবে আরও অর্থবহ টোকেন তৈরি করে।
- ব্যবহারকারী: BERT, Google models.
SentencePiece
- কার্যপদ্ধতি: এটি ইনপুটকে র (raw) ইউনিকোড বাইট হিসেবে বিবেচনা করে। স্পেস বা ফাঁকা স্থানের ভিত্তিতে বিভক্ত করার মতো কোনো প্রি-টোকেনাইজেশন ধাপের প্রয়োজন হয় না।
- সুবিধা: বহুভাষিক সাপোর্টের জন্য সেরা কারণ এটি ল্যাঙ্গুয়েজ-অ্যাগনস্টিক (language-agnostic)।
- ব্যবহারকারী: Llama 2, Llama 3, Gemma.
Unigram
- কার্যপদ্ধতি: এটি একটি বিশাল ভোকাবুলারি দিয়ে শুরু হয় এবং একটি প্রোবাবিলিস্টিক মডেল ব্যবহার করে সেটিকে ছাঁটাই (prune) করে। এটি সেরা সেগমেন্টেশন পাথ বেছে নেয়।
- সুবিধা: টোকেন থেকে অর্থের ম্যাপিং আরও সামঞ্জস্যপূর্ণ হয়।
- ব্যবহারকারী: T5, XLNet.
ডেভেলপারদের জন্য মূল বিষয়সমূহ:
- আপনার ভাষার মিশ্রণের দিকে নজর দিন: BPE মডেলগুলো যা স্পেসের ওপর নির্ভর করে, সেগুলো জাপানি বা হিন্দির মতো ভাষার ক্ষেত্রে সমস্যায় পড়ে। গ্লোবাল প্রোডাক্টের জন্য SentencePiece ব্যবহার করুন।
- ভার্সন নির্দিষ্ট রাখুন (Pin your versions):
cl100k_baseথেকেo200k_base-এ পরিবর্তন করলে আপনার টোকেন সংখ্যা বদলে যাবে। ইভ্যালুয়েশনের সময় আপনি কোন এনকোডিং ব্যবহার করছেন তা সবসময় ট্র্যাক করুন। - সঠিকভাবে বেঞ্চমার্ক করুন: বিভিন্ন মডেল ফ্যামিলির মধ্যে টোকেন সংখ্যার তুলনা করবেন না। নির্ভুল থাকার জন্য সবসময় ক্যারেক্টার বা বাইট কাউন্ট ব্যবহার করে বেঞ্চমার্ক করুন।
এই টুলগুলো বোঝা আপনাকে হতবাক ফিন্যান্স টিমের পরিবর্তে সাশ্রয়ী পণ্য সরবরাহ করতে সাহায্য করে।
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi