Thinking Progress Vectors: شريط تحميل لنماذج الاستدلال، مقروءًا من الورقة البحثية والشيفرة
تفكّر نماذج الاستدلال طويلًا ولا تُظهر لك شيئًا أثناء ذلك. Thinking Progress Vectors أو TPV مستودع بحثي يحاول قراءة شريط تقدّم مباشرة من الحالات المخفية للنموذج، ثم استخدام الإشارة نفسها لجعله يفكّر أقل. قرأت الورقة البحثية وكل سكربت. لم أشغّل أيًّا منها.

تفكّر نماذج الاستدلال طويلًا ولا تُظهر لك شيئًا أثناء ذلك. Thinking Progress Vectors أو TPV مستودع بحثي يحاول قراءة شريط تقدّم مباشرة من الحالات المخفية للنموذج، ثم استخدام الإشارة نفسها لجعله يفكّر أقل. قرأت الورقة البحثية وكل سكربت. لم أشغّل أيًّا منها.
الخلاصة
يرافق المستودع الورقة البحثية «Overclocking LLM Reasoning» (arXiv 2506.07240، يونيو 2025). يقدّر انحدار خطي على الحالات المخفية في الطبقة الأخيرة مدى تقدّم النموذج في رموز تفكيره. وإضافة هذا المتجه، مضروبًا في رقم يسمى alpha، أثناء التوليد تقصّر التفكير. تذكر الورقة مكاسب كبيرة عند ميزانيات الرموز الصغيرة في اختبارات الرياضيات، لكنها تتقلص أو تنعكس عند ميزانيات أكبر وعلى النموذج الأصغر. يتطلب العمل أوزانًا مفتوحة ومعالج رسوميات، ولا يتضمن متجهًا مدرَّبًا ولا واجهة، والترخيص يمنع الاستخدام التجاري. لم يشغّل أحد الشيفرة لهذه المراجعة.
ما تدّعيه الورقة
الورقة من تأليف روي أيزنشتات وإيتامار زيمرمان وليور وولف، ومنسوبة إلى جامعة تل أبيب (وزيمرمان أيضًا مع IBM Research). النسخة التي قرأتها هي v1 بتاريخ 8 يونيو 2025، ومعلَّمة بأنها نسخة أولية قيد المراجعة. نقطة انطلاقها مشكلة معروفة: النموذج الذي يفكّر قليلًا جدًا يفوّت تعقيد المهمة، والذي يفكّر طويلًا جدًا قد يدور في حلقة ويشكّ في نفسه وينفد منه الحد المسموح.
تقدّم الورقة ادعاءين. الأول أن النموذج يحتفظ داخليًا بتقدير لمدى تقدّمه في مرحلة التفكير، وأن إسقاطًا خطيًا بسيطًا للطبقة المخفية الأخيرة يستعيد هذا التقدير. ويسمّي المؤلفون متجه الإسقاط متجه تقدّم التفكير. والثاني أن هذه الإشارة سببية: إذا دفعتَ الحالة المخفية على امتداد المتجه أثناء التوليد ينهي النموذج تفكيره أبكر. ويسمّون ذلك overclocking أي «رفع التردد».
كل شيء مختبَر على نموذجين مقطَّرين من DeepSeek-R1، أحدهما 32B مبني على Qwen والآخر 8B مبني على Llama، وعلى اختبارين في الرياضيات هما Math-500 وGSM-8K. هذا النطاق مهم لكل ما يلي.
خط المعالجة خطوة بخطوة
يقسّم ملف README العمل إلى أربعة سكربتات. هذا ما يفعله كل منها كما قرأته في الشيفرة.
- generate_tpv_data.py - يحمّل نموذجًا بنصف الدقة، ويبني الطلب «{problem}, please reason step by step, and put your final answer within \boxed{}»، وينهيه بوسم فتح التفكير، ثم يولّد إجابات بالعيّنات. القيم الافتراضية تطابق الورقة: 30 مسألة من Math-500 و5 عيّنات لكل منها ودرجة حرارة 0.6 وtop-p 0.95 وبذرة 42. يطلب من generate في Hugging Face كل الحالات المخفية ويحفظ متجه الطبقة الأخيرة لكل رمز مولَّد.
- prepare_tpv_dataset.py - يستبعد العيّنات التي فيها أخطاء أو ملفات ناقصة، ثم يبحث عن وسم إغلاق التفكير بين الرموز المولَّدة. العيّنة التي لا يُغلق تفكيرها أبدًا تُتجاوز. وفي الباقي ينال الرمز رقم j من N التسمية j/N، فترتفع التسمية من قرب 0 إلى 1 تمامًا. ويجري التقسيم إلى تدريب واختبار (80/20، بذرة 42) حسب المسألة، فلا تظهر المسألة الواحدة في الجانبين.
- train_tpv.py - يلائم نموذجًا خطيًا بالحل المغلق: H المنقولة في H زائد epsilon صغير جدًا (1e-10 افتراضيًا) في مصفوفة الوحدة، مقابل التسميات. لا يوجد حد ثابت. يطبع متوسط مربع الخطأ على التدريب والاختبار ويرسم مخططًا نقطيًا. متجه الأوزان المحفوظ هو TPV.
- tpv_intervention.py - يحمّل النموذج والمتجه، ويسجّل هوكًا، ويولّد بفك ترميز جشع. الافتراضي هو نموذج Llama 8B وقيمة alpha تساوي 100 و2048 رمزًا جديدًا.
الهوك: ما الذي يفعله التدخل فعلًا
التدخل كله هوك واحد للمرور الأمامي على model.model.norm، وهي طبقة التطبيع الأخيرة في نموذج مفكّك الترميز من Hugging Face. بعد أن تعمل هذه الطبقة ينسخ الهوك مخرجها ويضيف alpha مضروبًا في TPV إلى موضع الرمز الأخير. وتكتبه الورقة h_alpha = h + alpha في theta، فيرتفع التقدم المتوقع theta في h بمقدار alpha مضروبًا في مربع طول theta.
موضعه مقصود. تشرح الورقة أن الطبقة المخفية الأخيرة تقع بعد طبقات الانتباه، فلا تُمَسّ المفاتيح والقيم المخزَّنة مؤقتًا للرموز السابقة. الدفعة تؤثر فقط في اختيار الرمز التالي. لكن هذا الرمز يصبح مدخل الخطوة التالية، فيتراكم الأثر على مرحلة التفكير كلها. ويُزال الهوك في كتلة finally عند انتهاء التوليد.
ملاحظتان عمليتان من الشيفرة. قيمة alpha غير قابلة للنقل: حجم المتجه يعتمد على طريقة تدريب الانحدار، فالرقم 100 يعني شيئًا مختلفًا لكل نموذج ولكل مجموعة تدريب. والمتجه float32 عادي يُضاف إلى حالات بنصف الدقة، وأود التحقق من ذلك في تشغيل حقيقي.
ما هو «شريط التحميل» في هذا المستودع
تعرض الورقة شريط تقدّم تفاعليًا وتشير إلى صفحة مشروع فيها أمثلة. المستودع نفسه لا يحوي واجهة كهذه. ينتهي جانب المراقبة عند رسم للانحدار: مخطط نقطي للموضع المتوقع مقابل الموضع الحقيقي لما يصل إلى 1000 رمز اختبار، مع خط تمهيد أسّي (معامل 0.1) مرسوم على عيّنات مرتبة حسب الموضع الحقيقي. هذا الرسم يتحقق من الانحدار. وليس شريطًا حيًا فوق توليد فعلي.
إذا أردت شريطًا في واجهة فعليك بناؤه: شغّل النموذج محليًا، وخذ آخر حالة مخفية عند كل خطوة، واضربها في المتجه، ومهّد السلسلة، وارسمها. وتضيف الورقة أن شبكة تكرارية صغيرة (GRU من طبقة واحدة) يمكنها أن تحل محل التمهيد الأسّي وتحقق خسارة أقل في الوضعين المدرَّب وzero-shot. هذا المتغير موصوف في الورقة، ولم أبحث عنه في المستودع.
أرقام الورقة
تقارن الورقة TPV بثلاثة خطوط أساس تحت ميزانيات رموز ثابتة: النموذج الأساسي، وأقصر إجابة من خمس عند حرارة 0.6، وطلب يأمر النموذج بالإيجاز والتوقف. وتحسب الإجابات الصحيحة. الجدول التالي ينقل أعداد الإجابات الصحيحة على Math-500 لخمسة صفوف كما طُبعت في الورقة. لم أعد حساب أي منها.
| الطريقة | 32B: 512 | 32B: 1024 | 32B: 2048 | 8B: 512 | 8B: 1024 | 8B: 2048 |
|---|---|---|---|---|---|---|
| النموذج الأساسي | 36 | 154 | 278 | 6 | 47 | 112 |
| درجة الحرارة (أقصر من 5) | 54 | 146 | 294 | 29 | 95 | 137 |
| الطلب الموجز | 53 | 211 | 316 | 50 | 107 | 153 |
| TPV مع alpha تساوي 100 | 100 | 201 | 284 | 26 | 70 | 102 |
| TPV مع alpha تساوي 100 + الطلب الموجز | 148 | 256 | 300 | 91 | 124 | 142 |
كيف تُقرأ هذه الأرقام
على النموذج 32B وبميزانية 512 رمزًا يرفع TPV مع alpha تساوي 100 الإجابات الصحيحة من 36 للنموذج الأساسي إلى 100، ويتفوق على خطّي الأساس (54 و53). هذه هي النتيجة الرئيسية وهي كبيرة. ويذكر المؤلفون أيضًا أن إضافة TPV إلى الطلب الموجز تعطي أفضل أداء، حتى 148 عند 512 رمزًا. وقراءتهم أن الطريقتين متكاملتان.
الصورة أقل انتظامًا في مواضع أخرى. عند 2048 رمزًا على النموذج نفسه يحصل الطلب الموجز وحده على 316 وTPV وحده على 284، والمؤلفون يقولون ذلك بأنفسهم. وعلى النموذج 8B يتفوق TPV وحده مع alpha تساوي 100 على النموذج الأساسي عند 512 و1024 رمزًا، لكنه يتخلف عن خطّي الأساس عند كل ميزانية في Math-500، وعند 2048 رمزًا يحصل على 102 مقابل 112 للنموذج الأساسي. وقيمة alpha تساوي 5 لا تغيّر شيئًا تقريبًا على هذا النموذج.
ادعاء الكفاءة أصغر وأوضح. مع alpha تساوي 100 على النموذج 8B مع الطلب الموجز على GSM-8K تقول الورقة إن متوسط طول التفكير ينخفض من نحو 500 رمز إلى أقل من 350، أي توفير 30%. ويعرض مثال في الورقة مسألة جلوس حول طاولة يتجاوز فيها التفكير الأصلي 2048 رمزًا بينما تجيب النسخة المدفوعة بـ 720 في 806 رموز.
أين تقل الأدلة
هذه أحكامي الخاصة من قراءة الورقة، وليست نتائج من تشغيل. مجموعة التدريب صغيرة: 30 مسألة لدراسة المراقبة و80 مسألة من Math-500 لانحدار التقييم، وكل عيّنة تدريب هي مرحلة تفكير انتهت. أما التشغيلات الطويلة التي لم تُغلق فليست في البيانات، وهي بالضبط ما يحتاج شريط التقدم إلى التعامل معه أكثر من غيره.
والهدف كذلك موضع نسبي وليس عملًا متبقيًا. مسألتان حلّهما 400 و4000 رمز تنتهيان كلتاهما عند 1.0. والشريط عند 50% يخبرك أن النموذج في منتصف ما سيكتبه في النهاية، لا كم سيستغرق ذلك. وقسم القيود في الورقة نفسها يسرد الباقي: الرياضيات فقط، ولا دراسة للآثار الجانبية على التماسك أو الدقة الوقائعية، والحاجة إلى الوصول إلى الحالات المخفية، ولا نظر في اتساع البحث أو عدم اليقين.
تحذير أخير. الأسرع ليس بالضرورة الأفضل في المسائل الصعبة. النموذج الذي يُدفع إلى التوقف عن الشك في نفسه سيتوقف أيضًا عن مراجعة نفسه. تذكر الورقة أن معدل الخطأ لم يتغير، لكن جداولها المطبوعة تُظهر إجابات خاطئة أكثر (المجاب عنها ناقص الصحيحة) في بعض الصفوف، مثلًا 2 للنموذج الأساسي 32B على Math500 عند 512 رمزًا مقابل 6 مع TPV عند alpha 100، وكذلك مسائل مجاب عنها أكثر بكثير. لم أشغّل شيئًا، فهذه قراءة المؤلفين لا شيئًا تحققت منه.
مقارنة بمؤشرات التقدم المعتادة
مؤشرات التقدم الحالية لنماذج الاستدلال خارجية في الغالب عن النموذج: مؤشر دوّار، أو عدّاد للوقت المنقضي، أو عدد الرموز، أو ملخص قصير للأفكار حتى الآن. يقارن الجدول بينها وبين TPV في ما يستطيع كل منها قوله للمستخدم بأمانة. وهو تحليل خاص بي، ويصف أنواعًا من المؤشرات لا منتجات بعينها.
| المؤشر | ما يخبر به المستخدم | يحتاج حالات مخفية | أهم نقطة ضعف |
|---|---|---|---|
| المؤشر الدوّار | شيء ما يعمل | لا | لا يقول شيئًا عن المدة |
| عدّاد الوقت | كم مضى على التشغيل | لا | لا يتنبأ بالنهاية |
| عدّاد الرموز | كم من التفكير كُتب | لا | الطول ليس تقدّمًا |
| ملخص الأفكار حتى الآن | ما يفكّر فيه النموذج | لا | هو أيضًا مخرج للنموذج وقد يكون خاطئًا |
| شريط TPV | تقدير لحصة التفكير المنجزة | نعم، مع أوزان مفتوحة | موضع نسبي فقط، واختُبر على الرياضيات فقط |
الترخيص وكلفة التشغيل
يذكر README وملف LICENSE الترخيص CC BY-NC-SA 4.0، وتضيف ترويسات الشيفرة أن الاستخدام التجاري يتطلب ترخيصًا منفصلًا من صاحب الحقوق المذكور في README. وبيانات GitHub نفسها تصف الترخيص بأنه «Other». ببساطة: ادرسه وأعد إنتاجه وشارك تعديلاتك بالشروط نفسها، لكن لا تبنِ عليه منتجًا دون اتفاق.
تقول الورقة إن كل تجربة استخدمت معالج رسوميات A100 واحدًا واستغرقت يومين على الأكثر. وملف requirements.txt قائمة أوامر conda وpip لـ Python 3.10 وPyTorch 2.3.1 مع CUDA 12.1 وaccelerate وbitsandbytes وdatasets وبضع حزم أخرى. ولا يذكر transformers الذي يستورده كل سكربت، فسيحتاج التثبيت النظيف إلى إضافته. آخر إيداع بتاريخ 7 يوليو 2025، وكان للمستودع عند اطلاعي مساهم واحد و56 نجمة ومسألة مفتوحة واحدة.
لمن هو
يناسب الباحثين والمجرّبين الذين يشغّلون نماذج استدلال مفتوحة الأوزان محليًا ويريدون دراسة إشارات التقدم أو اختبار ادعاء «رفع التردد» على مهامهم. ويناسب أيضًا من يبنون واجهة استدلال محلية ويبحثون عن نقطة بداية لشريط تقدّم ويقبلون ترخيصًا غير تجاري.
ولا يناسب من يستخدمون نموذج استدلال مستضافًا عبر واجهة برمجية، لأن الطريقة تحتاج إلى الحالات المخفية. ولا يناسب فريقًا يريد ميزة تجارية بلا ترخيص. ولا يناسب من ينتظر منتجًا مصقولًا: لا متجه مدرَّبًا ولا واجهة ولا اختبارات.
التجربة العملية: لم تُنجز
لم أثبّت هذا ولم أشغّل سكربتًا واحدًا، فلا توجد في هذه المراجعة أزمنة ولا رسوم ولا مخرجات. لو اختبرته لدرّبت متجهًا على النموذج 8B، ورسمت الشريط على طلبات ليست رياضيات، وقارنت alpha عند 0 و5 و100 على مهام يمكن التحقق من إجابتها. هذه خطة وليست نتيجة، وسأقول ذلك بوضوح إن أورد إصدار لاحق نتيجة.
المصادر والحدود
كل ادعاء أعلاه مأخوذ من الورقة (النص الكامل، v1) أو من المستودع عند الإيداع المذكور في قائمة المصادر، وقد قرأته في 4 أكتوبر 2026. لم يُشغَّل أي كود.
- https://github.com/royeisen/reasoning_loading_bar
- https://github.com/royeisen/reasoning_loading_bar/blob/master/LICENSE
- https://github.com/royeisen/reasoning_loading_bar/blob/master/tpv_intervention.py
- https://github.com/royeisen/reasoning_loading_bar/blob/master/requirements.txt
- https://github.com/royeisen/reasoning_loading_bar/blob/master/README.md
- https://github.com/royeisen/reasoning_loading_bar/blob/master/train_tpv.py
- https://github.com/royeisen/reasoning_loading_bar/blob/master/prepare_tpv_dataset.py
- https://github.com/royeisen/reasoning_loading_bar/blob/master/generate_tpv_data.py
- https://arxiv.org/abs/2506.07240
- https://arxiv.org/pdf/2506.07240