باختصار
ترميز أزواج البايتات (Byte Pair Encoding) خوارزمية تجزئة (Tokenization) بتبني قاموس الرموز عن طريق دمج أكتر زوج رموز متجاورين تكرارًا في النصوص، مرّة بعد مرّة، لحدّ ما توصل لحجم المفردات المطلوب.
بالتفصيل
الخوارزمية اتطوّرت في الأصل لضغط النصوص، وبعدين استخدمتها OpenAI للتجزئة في تدريب نموذج GPT. النهارده بتستخدمها نماذج كتير زي GPT-2 وRoBERTa وBART وDeBERTa.
التدريب بيمشي كده: تبدأ بمفردات أساسية فيها كل الحروف الموجودة في النصوص. بعدين تدوّر على أكتر زوج متجاور متكرّر، وتدمجه في رمز جديد، وتضيفه للمفردات كـ«قاعدة دمج». وتكرّر. في الأوّل الرموز الجديدة بتبقى حرفين، ومع الوقت بتبقى أجزاء كلمات أطول.
ولمّا ييجي نصّ جديد، النموذج بيقسّمه لحروف ويطبّق قواعد الدمج اللي اتعلّمها بنفس الترتيب. عشان كده نفس النصّ بيدّي دايمًا نفس الرموز.
نقطة ذكية: نماذج زي GPT-2 بتشتغل على مستوى البايت بدل الحرف، عشان المفردات الأساسية تبقى 256 بايت بس، وأي حرف في أي لغة يتمثّل من غير ما يتحوّل لرمز «مجهول». الطريقة دي اسمها Byte-level BPE.
مثال عملي
من مثال دورة Hugging Face: عندك الكلمات hug (10 مرّات) وpug (5) وpun (12) وbun (4) وhugs (5).
- أكتر زوج متكرّر هو
u+g(20 مرّة)، فيتعمل رمز جديدug. - بعده
u+n(16 مرّة)، فيتعملun. - بعده
h+ug(15 مرّة)، فيتعملhug، أوّل رمز من 3 حروف.
دلوقتي كلمة bug هتتقطّع لـb + ug. ولهذا السبب بتلاقي النصوص العربية أحيانًا بتستهلك رموز أكتر من الإنجليزية لنفس المعنى: لو المفردات اتبنت على نصوص أغلبها إنجليزي، الكلمات العربية بتتقطّع لأجزاء أصغر.
مصطلحات مرتبطة
المصادر: Hugging Face LLM Course


