Peek2: Regex-free Byte-level Byte-Pair Encoding Pretokenizer for LLM Inference on Edge Devices
تقدم الورقة البحثية Peek2، وهو محلل أولي (pretokenizer) عالي التحسين وخالٍ من التعبيرات النمطية (regex-free) لتقنية Byte-level BPE، والذي يحقق سرعة إنتاجية في الاختبارات المرجعية الدقيقة تصل إلى 2.48 ضعفاً وسرعة ترميز إجمالية تبلغ 1.14 ضعفاً على الأجهزة الطرفية مع الحفاظ على مخرجات متطابقة مع أدوات الترميز القياسية القائمة على cl100k.
تخيل أنك تحاول إرسال رسالة طويلة إلى صديق، لكن صديقك لا يفهم إلا كلمات رمزية قصيرة ومحددة. قبل أن تتمكن من إرسال الرسالة، يجب عليك تفكيك جملتك إلى تلك الكلمات الرمزية. تسمى هذه العملية التقطيع (Tokenization)، وهي الطريقة التي تفهم بها أجهزة الكمبيوتر مثل GPT-3 أو LLaMa لغة البشر.
تقدم الورقة البحثية التي تقرأها أداة جديدة تسمى Peek2. وإليك كيفية عملها، مشروحة ببساطة:
المشكلة: ازدحام حركة المرور في "Regex"
حالياً، تستخدم معظم أجهزة الكمبيوتر طريقة تسمى Regex (التعبيرات النمطية) لتقطيع النصوص إلى هذه الكلمات الرمزية. فكر في Regex كأنه حارس أمن صارم ومعقد عند مدخل نادٍ ليلي.
لدى الحارس قائمة ضخمة من القواعد (الفروع/Branches).
عندما يصل شخص ما (حرف)، يتحقق الحارس من مطابقتهم للقاعدة رقم 1. إذا لم يتناسبوا معها، يتحقق من القاعدة رقم 2. إذا فشل ذلك، ينتقل إلى القاعدة رقم 3، وهكذا.
عملية "التحقق، الفشل، ثم التحقق مجدداً" هذه بطيئة، خاصة على الأجهزة الصغيرة ذات القدرة المنخفضة مثل أجهزة اللابتوب أو التابلت (أجهزة الحافة/Edge devices). الأمر يشبه جعل الشخص ينتظر بينما يقلب الحارس في كتاب قواعد ضخم في كل مرة يقترب فيها شخص ما.
الحل: اختصار "Peek2"
ابتكر المؤلفون Peek2، وهي طريقة جديدة للقيام بهذه المهمة بشكل أسرع بكerer واستهلاك أقل للذاكرة.
بدلاً من قيام الحارس بتقليب كتاب القواعد، يستخدم Peek2 ورقة غش (جدول بحث).
الـ "Peek" (اللمحة): بدلاً من التحقق من حرف واحد في كل مرة، ينظر Peek2 إلى حرفين في وقت واحد (مثل استراق النظر للأمام).
الفئات: يقوم بتصنيف هذين الحرفين بسرعة في مجموعات بسيطة (مثلاً: "هل هو مسافة؟"، "هل هو رقم؟"، "هل هو حرف؟").
ورقة الغش: ولأن عليه فقط النظر في مجموعتين، فقد صنع المؤلفون شبكة صغيرة بحجم 7×7 (مثل لوحة سودوكو). أنت فقط تنظر إلى المجموعتين، وتجد المربع على الشبكة، والشبكة تخبرك فوراً بما يجب فعله بعد ذلك.
التشبيه:
الطريقة القديمة (Regex): تمشي نحو متاهة. تجرب الباب الأيسر، فيكون مغلقاً. تجرب الباب الأيمن، فيكون مغلقاً. تجرب الباب الخلفي، فيكون مفتوحاً. ثم تكرر هذا لكل شخص في الطابور.
الطريقة الجديدة (Peek2): تمشي نحو جدار به خريطة واحدة ضخمة. تشير إلى مكانك، والخريطة ترسم لك خطاً مباشراً إلى المخرج فوراً. لا تخمين، لا أبواب مغلقة، فقط مسار مباشر.
لماذا يهم هذا؟
تدعي الورقة أنه من خلال استبدال "المتاهة" بـ "الخريطة"، جعلوا العملية أسرع بكثير:
السرعة: في بعض الاختبارات، كانت أسرع بمقدار 2.48 مرة في مرحلة التقطيع فقط.
الإجمالي: عند النظر إلى المهمة كاملة المتمثلة في تحويل النص إلى كلمات رمزية، كانت أسرع بنحو 14% بشكل عام.
الدقة: تنتج نفس النتائج تماماً مثل الطريقة القديمة. إنها "بديل جاهز للاستخدام" (drop-in replacement)، مما يعني أنه يمكنك استبدال الحارس القديم بالجديد دون تغيير أي شيء آخر أو كسر النظام.
العقبة (القيود)
الورقة صريحة بشأن ما لا تفعله هذه الأداة:
هي لأجهزة محددة: تم اختبارها على أجهزة الكمبيوتر المكتبية. يأمل المؤلفون أن تعمل على الهواتف والأجهزة اللوحية أيضاً، لكنهم لم يثبتوا ذلك بعد.
هي لنماذج محددة: تعمل مع النماذج التي تستخدم أسلوب "cl100k" (مثل GPT-3 و LLaMa-3). هي لا تصلح كل نماذج الذكاء الاصطناعي الموجودة في العالم بشكل سحري.
هي تحتفظ بالأخطاء: كانت الطريقة القديمة تحتوي على بعض الأخطاء الغريبة (مثل تقسيم كلمة بشكل غير صحيح). ولأن Peek2 مصمم ليكون نسخة طبق الأصل من سلوك الطريقة القديمة، فإنه يحتفظ بنفس تلك الأخطاء. إصلاح هذه الأخطاء يتطلب إعادة تدريب نماذج الذكاء الاصطناعي، وهي مهمة أكبر بكثير من مجرد استبدال الأداة.
باخت-القول: Peek2 هو طريقة أذكى وأسرع لتقطيع النصوص للذكاء الاصطناعي، مصممة خصيصاً لتعمل بسلاسة على الأجهزة اليومية دون الحاجة إلى كمبيوتر خارق.
إليك ملخص تقني مفصل لورقة البحث بعنوان: "Peek2: معالج أولي للترميز بنظام (Byte-level Byte-Pair Encoding) خالٍ من التعبيرات النمطية (Regex) للاستدلال لنماذج اللغات الكبيرة (LLM) على أجهزة الحافة (Edge Devices)."
1. بيان المشكلة
تعتمد نماذج اللغات الكبيرة (LLMs) على أداة ترميز Byte-level Byte-Pair Encoding (BPE) لتحويل النصوص الخام إلى تسلسلات من الرموز (tokens). وتعد عملية الترميز الأولي (pretokenization) خطوة أولية حاسمة في هذه العملية، حيث تقوم بتقسيم النص إلى أجزاء أصغر قبل مرحلة دمج الأزواج.
الوضع الحالي: تعتمد معظم أدوات الترميز الأولي (وتحديداً معيار cl100k المستخدم في GPT-3 وLLaMa-3 وQwen-2.5) على التعبيرات النمطية (Regular Expressions - Regex).
عنق الزجاجة: بينما يُعد تجميع وتنفيذ التعبيرات النمطية أمراً مقبولاً على وحدات المعالجة المركزية (CPUs) القوية في الخوادم، إلا أنه يتسبب في عبء تشغيلي كبير على أجهزة الحافة (أجهزة المكتب، المحمول، الأنظمة المدمجة) بسبب:
الطبيعة التسلسلية وغير القابلة للتوازي لمرحلة الترميز الأولي.
القيد: يجب أن يحافظ أي تحسين على التوافق التام مع السلوك الأصلي (bug-for-bug compatibility) لترميز التدريب الأصلي. إن تغيير حدود التقسيم دون إعادة تدريب النموذج سيؤدي إلى تدهور معدلات ضغط BPE وأداء النماذج اللاحق.
2. المنهجية: خوارزمية Peek2
يقترح المؤلفون Peek2، وهي إعادة تنفيذ لخوارزمية cl100k خالية من التعبيرات النمطية (Regex-free). وبدلاً من استخدام الأتمتة المحدودة غير الحتمية (NFA) أو مطابقة التعبيرات النمطية المعقدة، تستخدم Peek2 نهجاً حتمياً يعتمد على الجداول (table-driven approach) مستوحى من خوارزمية Hopcroft لتقليل الأتمتة المحدودة (DFA Minimization).
المكونات التقنية الرئيسية:
تصنيف الحروف (PeekCategorize): بدلاً من مطابقة قيم Unicode الخام مقابل أنماط معقدة، تقوم Peek2 أولاً بخرائط كل حرف إلى واحد من 7 فئات منفصلة بناءً على فئة Unicode الخاصة به:
مسافة ASCII
علامة الاقتباس المفردة ASCII
سطر جديد/رجوع آخر السطر (CR/LF) ASCII
حروف Unicode
المسافات البيضاء في Unicode
أرقام Unicode
جميع القيم الأخرى هذا يقلل مساحة المدخلات من أكثر من 105 قيمة محتملة إلى 7 فئات فقط.
جدول البحث لقرار التفرع (Branch Decision Lookup Table):
تتضمن منطق التعبيرات النمطية الأصلي تسلسلاً من الفروع (من Branch0 إلى Branch6) حيث يحاول المحرك المطابقة بالتتابع، مع العودة للخلف في حال فشل المطابقة.
تستبدل Peek2 منطق "المحاولة والفشل" التسلسلي هذا بـ جدول بحث 7×7.
تقوم الخوارزمية بـ "استراق النظر" (peek) إلى الحرف الحالي والحرف التالي، وتحدد فئاتهما، ثم تستخدم الزوج (التركيبة) كفهرس في الجدول.
يعيد مدخل الجدول مباشرة معرف الفرع (Branch ID) (من 0 إلى 6) لتنفيذه، مما يلغي الحاجة إلى التراجع (backtracking) أو التعامل مع المكدس (stack) عند الفشل.
تدفق الخوارزمية:
تصنيف الحرف الحالي والحرف التالي.
إجراء عملية بحث واحدة في الجدول لاختيار معالج الفرع الصحيح.
تنفيذ منطق الفرع المحدد (والذي تم تبسيطه للتعامل فقط مع نوع الجزء المحدد).
معالجة بقية السلسلة بشكل متكرر (Recursively).
تحليل التعقيد:
التعقيد الزمني:O(n)، حيث n هو طول المدخلات. يتم زيارة كل حرف مرة واحدة (أو مرتين في حالات نادرة من التراجع) مقارنة بـ O(n×k) أو O(n×m) لمحركات التعبيرات النمطية القائمة على NFA.
التعقيد المكاني:O(1). جدول البحث ثابت الحجم (7×7)، ويتطلب ذاكرة ضئيلة جداً مقارنة بآلات الحالة المعقدة التي تولدها مجمعات التعبيرات النمطية.
3. المساهمات الرئيسية
تنفيذ خالٍ من التعبيرات النمطية (Regex-Free): إزالة كاملة لاعتماديات التعبيرات النمطية لترميز cl100k الأولي، واستبدال مطابقة الأنماط المعقدة بآلة حالة حتمية خفيفة الوزن.
التحسين لأجهزة الحافة (Edge Optimization): مصمم خصيصاً للبيئات ذات الموارد المحدودة، حيث يوفر استهلاكاً ثابتاً للذاكرة وتعقيداً زمنياً خطياً دون العبء الناتج عن تجميع التعبيرات النمطية.
التوافق التام مع السلوك الأصلي (Bug-for-Bug Compatibility): تم إثبات أن الخوارزمية تنتج حدود تقسيم متطابقة تماماً مع أداة الترميز الأصلية القائمة على التعبيرات النمطية، مما يضمن عدم الحاجة لإعادة تدريب النموذج.
التكامل مع المصادر المفتوحة: تم دمج التنفيذ في مكتبة Hugging Face tokenizers (بلغة Rust الآمنة)، مما يجعله متاحاً للاستخدام الفوري من قبل المجتمع.
4. النتائج التجريبية
اختبر المؤلفون Peek2 على معالج Intel Core i5-13600KF عبر أربعة مجموعات بيانات: الإنجليزية (en)، الصينية (cn)، البرمجة (code)، والرياضيات (math).
الاختبار الدقيق (مرحلة الترميز الأولي فقط):
زيادة الإنتاجية (Throughput): أسرع بمقدار يصل إلى 2.48× من تنفيذ التعبيرات النمطية الأصلي.
تباين البيانات:
الإنجليزية (en): تسريع بنسبة ~2.48× (أعلى مكسب بسبب الترميز على مستوى الكلمات).
الصينية (cn): تسريع بنسبة ~2.20× (مكسب أقل لأن تقسيم اللغة الصينية أقل تفصيلاً في هذه المرحلة).
الدقة: تطابق بنسبة 100% في المخرجات مع أداة الترميز الأصلية.
الاختبار الشامل (خط معالجة BPE الكامل):
الإنتاجية الإجمالية: تحسن بنسبة 1.03× إلى 1.14× عبر جميع المهام (الترميز وتدريب BPE).
التأثير على البرمجة والرياضيات: أظهرت هذه المجموعات أكبر المكاسب النسبية في مهام الترميز لأنها تعتمد بكثافة على الترميز الأولي وتتضمن عمليات دمج أزواج أقل في المراحل اللاحقة.
تقليل الوقت: في مجموعة بيانات البرمجة (code)، انخفض وقت الترميز الأولي من 22.8% من إجمالي وقت خط المعالجة إلى 14.0%.
5. الأهمية والعمل المستقبلي
الأهمية: تعالج Peek2 عنق زجاجة حرج في استدلال نماذج اللغات الكبيرة (LLM) على أجهزة الحافة. ومن خلال تحسين مرحلة الترميز الأولي المتسلسلة، فإنها تتيح بدء تشغيل أسرع وإنتاجية أعلى على الأجهزة الاستهلاكية، مما يسهل الانتقال من البنى المركزية المعتمدة على الخوادم إلى بنى هجينة بين الحافة والسحابة.
القيود والتوجهات المستقبلية:
تقتصر حالياً على أدوات الترميز الأولي من طراز cl100k.
أُجريت التجارب على معالجات سطح المكتب؛ ويهدف العمل المستقبلي إلى اختبارها على الأجهزة المدمجة ونقل الخوارزمية إلى وحدات TPU/APU.
يشير المؤلفون إلى أنه بينما تتوافق Peek2 مع سلوك التعبيرات النمطية (المتضمن لبعض الأخطاء) الحالي، إلا أن بعض أخطاء التقسيم (مثل سوء تفسير الاختصارات) موجودة في بيانات التدريب الأصلية. إصلاح هذه الأخطاء يتطلب إعادة تدريب النموذج، وهو أمر خارج نطاق هذا التحسين.
باختصار، تثبت Peek2 أن استبدال منطق التعبيرات النمطية المعقد بجدول بحث بسيط ومصنف يمكن أن يسرع عملية ترميز نماذج اللغات الكبيرة بشكل كبير على أجهزة الحافة دون التضحية بأداء النموذج أو الحاجة لإعادة التدريب.