← أحدث الأبحاث
🤖 AI

Accelerating Constrained Decoding with Token Space Compression

تقدم هذه الورقة CFGzip، وهي تقنية لضغط مساحة الرموز (token space) غير متصلة بالإنترنت، تقلل بشكل كبير من العبء الحسابي لفك التشفير المقيد، محققةً تسريعًا يصل إلى 7.5 ضعفًا في إجمالي وقت التوليد لقواعد السياق الحر المعقدة.

المؤلفون الأصليون: Michael Sullivan, Alexander Koller

نُشر 2026-05-29
📖 4 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: Michael Sullivan, Alexander Koller

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تخيل أن لديك طباخاً موهوباً للغاية ولكنه فوضوي قليلاً (النموذج اللغوي الكبير - LLM)، يمكنه طهي أي شيء تقريباً. ومع ذلك، فأنت بحاجة منه إلى إعداد طبق يتبع وصفة صارمة ومعقدة للغاية (قواعد خالية من السياق - CFG)، مثل لغة برمجة معينة أو تنسيق بيانات دقيق.

ولمنع وقوع أي خطأ، استأجرت محرك قواعد (Grammar Engine) صارماً (مثل رئيس طهاة أو مفتش سلامة أغذية) يقف بجانب الطباخ. وقبل أن يضيف الطباخ أي مكون، يقوم المفتش بفحص المخزن بأكره ليرى ما إذا كان هذا المكون تحديداً مسموحاً به في هذه الخطوة بالضبط من الوصفة.

المشكلة: "المخزن" كبير جداً

المشكلة هي أن مخزن الطباخ (قاموس الرموز - token vocabulary) ضخم للغاية، ويحتوي على مئات الآلاف من المكونات المختلفة (كلمات، رموز، قطع برمجية).

في كل مرة يريد فيها الطباخ إضافة مكون واحد، يتعين على المفتش المرور عبر المخزن بأكمله للتحقق مما إذا كان ذلك العنصر تحديداً صالحاً أم لا. بالنسبة للوصفات البسيطة (مثل بيانات JSON)، يكون الأمر سريعاً. ولكن بالنسبة للوصفات المعقدة (مثل لغة C++ أو لغة مصطنعة تسمى "Bython")، يصبح المفتش مثقلاً؛ إذ يتعين عليه فحص الكثير من الاحتمالات، مما يؤدي إلى إبطاء عملية الطهي بشكل كبير — أحياناً يستغرق الأمر من مرتين إلى 10 أضعاف الوقت المعتاد. وتسمي الورقة البحثية هذا بـ "التكاليف الإضافية العالية التي لا يمكن معالجتها" (intractably high overhead).

الحل: CFGZIP (خدعة "التجميع")

قدم المؤلفون أداة جديدة تسمى CFGZIP. بدلاً من جعل المفتش يفحص كل مكون في المخزن، يقوم CFGZIP بإعادة تنظيم المخزن قبل بدء عملية الطهي.

إليك التشبيه:

  1. تجميع المكونات: ينظر CFGZIP إلى المخزن ويدرك أن العديد من المكونات قابلة للتبادل لأغراض الوصفة. على سبيل المثال، في جزء معين من وصفة برمجية، قد تعمل الكلمات if و else و while بنفس الطريقة من الناحية القواعدية. أو، في سياق آخر، قد تكون الأرقام 1 و 2 و 3 جميعها بمثابة عناصر نائبة صالحة.
  2. إنشاء "حاويات ممثلة": يقوم CFGZIP بتجميع هذه المكونات القابلة للتبادل في حاويات (buckets). ويختار مكوناً واحداً "ممثلاً" من كل حاوية (عادةً ما يكون الأقصر) ليحل محل المجموعة بأكملها.
  3. سير العمل الجديد:
    • قبل الطبخ (خارج نطاق التشغيل - Offline): يقوم النظام بالعمل الشاق المتمثل في فرز المخزن إلى هذه الحاويات. يتم ذلك مرة واحدة ويتم حفظه.
    • أثناء الطبخ (الاستدلال - Inference): عندما يختار الطباخ مكوناً، يقوم النظام بسرعة باستبداله بـ "الممثل" الخاص به من الحاوية. يتعين على المفتش الآن التحقق من الممثل مقابل الوصفة، وليس من كامل المخزن.
    • النتيجة: نظرًا لأن المفتش يتحقق الآن من قائمة صغيرة من الممثلين بدلاً من المخزن الأصلي الضخم، تصبح العملية سريعة للغاية.

لماذا يعد هذا أمراً مهماً؟

تزعم الورقة البحثية أن استخدام CFGZIP مع محرك قواعد رفيع المستوى (XGrammar2) يحقق تسريعاً هائلاً:

  • تقليل زمن الاستجابة (Latency Reduction): ينخفض الوقت الذي يستغرقه التحقق من القواعد بمقدار 10 إلى 100 ضعف (رتبتين عشريتين).
  • التسريع الإجمالي: تصبح عملية توليد النص بأكملها أسرع بـ 7.5 مرة للمهام المعقدة.
  • لا يوجد فقدان في الجودة: هذا ضغط "عديم الفقد" (lossless). المخرج النهائي هو مطابق تماماً بايت ببايت لما كنت ستحصل عليه بدون التسريع. لا يزال الطباخ ينتج نفس الطبق المثالي تماماً؛ لقد وصل فقط إلى النتيجة بشكل أسرع بكثير.

نتائج واقعية من الورقة البحثية

اختبر الباحثون هذا على ثلاثة نماذج ذكاء اصطناعي مختلفة (Llama و Qwen و GPT) وأربعة مهام مختلفة:

  1. JSON و XML: تنسيقات بيانات قياسية.
  2. C++: لغة برمجة معقدة.
  3. Bython: لغة برمجة خيالية ومصطنعة (تشبه Python ولكن مع أقواس مجعدة وفواصل منقوطة بدلاً من المسافات).

النتائج:

  • بالنسبة للتنسيقات القياسية (JSON)، كان التسريع جيداً ولكنه لم يكن ثورياً لأن تلك القواعد بسيطة بالفعل.
  • بالنسبة للغات المعقدة وغير المألوفة (مثل C++ و Bython)، كان الفرق هائلاً. بدون CFGZIP، كان محرك القواعد بطيئاً جداً لدرجة تجعل الذكاء الاصطناعي غير قابل للاستخدام عملياً لهذه المهام. ومع CFGZIP، استطاع الذكاء الاصطناعي توليد أكواد معقدة بسرعة وبشكل صحيح.
  • ومن المثير للاهتمام، بالنسبة لمهمة "Bython" (التي لم يرها الذكاء الاصطناعي من قبل)، أدى استخدام هذه الطريقة المقيدة إلى تحسين قدرة الذكاء الاصطناعي على كتابة كود يعمل من 2.3% إلى 46.9% (لأحد النماذج)، مما يثبت أن القواعد الصارمة تساعد الذكاء الاصطناعي عندما تكون المهمة صعبة.

العقبة (القيود)

تشير الورقة إلى قيد رئيسي واحد: وقت التحضير.
فرز المخزن إلى حاويات (الحساب المسبق خارج نطاق التشغيل) يستغرق وقتاً.

  • إذا كنت بحاجة لتوليد ملف JSON لمهمة سريعة لمرة واحدة، فقد يكون الوقت المستغرق لفرز المخزن أطول من مجرد القيام بالمهمة بشكل طبيعي.
  • ومع ذلك، إذا كنت تقوم بـ توليد أكواد برمجية واسعة النطاق أو تستخدم نفس القواعد المعقدة مراراً وتكراراً، فإن وقت الإعداد الأولي يستحق العناء لأن عملية "الطبخ" (التوليد) ستصبح أسرع بكثير.

الملخص

CFGZIP يشبه أمين مكتبة ذكي يعيد تنظيم مكتبة ضخمة إلى "حاويات مواضيع" قبل وصولك. بدلاً من بحثك عن كل كتاب بمفرده للعثور على الكتاب المناسب، يشير إليك أمين المكتبة ببساطة إلى "حاوية الموضوع" الممثلة. هذا يجعل العثور على المعلومات الصحيحة (أو في هذه الحالة، توليد الكود الصحيح) أسرع بكثير دون فقدان كتاب واحد أو تغيير القصة أبداً.

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →