لو بعتت 1000 رسالة بالعربي لـ Claude ولقيت الفاتورة تقريبًا 3 أضعاف نفس عدد الرسائل بالإنجليزي، المشكلة مش في السعر. السبب مفهوم اسمه Tokenization، وفهمه كويس هيوفّر عليك 40% إلى 60% من الفاتورة الشهرية لو شغلك كله نصوص عربية.
المشكلة باختصار
الموديلات زي Claude و GPT و Gemini مش بتشوف الكلام اللي انت بتكتبه زي ما انت بتشوفه. هي بتقسّمه أول لقطع صغيرة اسمها tokens، وبتحاسبك على عدد القطع دي. المشكلة إن نفس المعنى بالظبط بيدّيك عدد قطع مختلف تمامًا حسب اللغة. الإنجليزي بياخد قطع قليلة. العربي بياخد قطع كتير. الفرق ممكن يوصل لـ 3.5x على نصوص حقيقية، وده بينعكس مباشرة على الفاتورة وعلى حد الـ context window كمان.
تخيّل إنك بتبني بالليجو
قبل ما ندخل في التعريف العلمي، خليني أقولك المثال ده. تخيّل إن عندك ولدين بيلعبوا ليجو. الأول واخد علبة فيها قطع كبيرة، كل قطعة عليها كلمة كاملة زي "بيت" و"مدرسة" و"قطة". التاني عنده علبة فيها حروف صغيرة بس: "ب"، "ي"، "ت"، "م"، إلخ.
الاتنين عايزين يبنوا جملة "البيت الكبير". الأول هيستخدم 3 قطع جاهزة (ال + بيت + الكبير). التاني هيحتاج 11 قطعة لأنه بيركّب حرف ورا حرف. الموديل بيحاسبك على عدد القطع اللي اتركّبت، مش على المعنى النهائي.
ده اللي بيحصل بالظبط مع Claude. الموديل عنده "علبة قطع" جاهزة اسمها vocabulary، حجمها حوالي 100,000 توكن. معظم القطع الجاهزة دي كلمات إنجليزية شائعة، لأن الموديل اتدرب على بيانات الإنترنت اللي 90% منها إنجليزي تقريبًا. لما بتبعتله إنجليزي، بيلاقي قطع كبيرة مظبوطة. لما بتبعتله عربي، بيضطر يقسمه لقطع صغيرة جدًا، وأحيانًا لبايتات فردية.
إيه هو الـ Tokenization بالظبط؟
الـ Tokenization هي عملية تحويل النص الخام لوحدات متفرقة (tokens)، الموديل بيتعامل معاها كأرقام بدل ما يتعامل مع حروف أو كلمات. كل توكن بياخد رقم ثابت (token ID) من قاموس مغلق اسمه vocabulary، حجمه عادة بين 32,000 و 200,000 إدخال.
الخوارزمية الشائعة في الـ LLMs الحديثة اسمها Byte-Pair Encoding أو BPE. بتشتغل بالطريقة دي:
- تبدأ بالنص كله مقسوم لبايتات فردية (256 بايت ممكن).
- تعدّ أزواج البايتات الأكثر تكرارًا في dataset التدريب.
- تدمج الزوج الأكثر تكرارًا في توكن واحد جديد.
- تكرر الخطوتين 2 و 3 لحد ما توصل لحجم الـ vocabulary المطلوب.
المشكلة هنا: الـ dataset اللي اتدرب عليه الـ tokenizer أغلبه إنجليزي. فالكلمات الإنجليزية الشائعة زي "the" و "ing" و "tion" بقت توكن واحد. لكن الكلمات العربية الشائعة زي "اللي" و "بتاعة" ما اتدمجتش بنفس الكفاءة، وبتفضل مقسومة لبايتات.