SWERank: ثورة في تحديد مواقع أخطاء البرمجيات

تُعَدّ عملية تحديد موقع الخطأ في البرمجيات، سواءً كان خطأً برمجياً أو طلباً جديداً للميزة، من أكثر المهام استهلاكاً للوقت والجهد في دورة تطوير البرمجيات. وعلى الرغم من التطورات في توليد التصحيحات التلقائية ومساعدي البرمجة، إلا أن تحديد مكان التغيير المطلوب في قاعدة التعليمات البرمجية غالباً ما يستغرق وقتاً أطول من تحديد كيفية إصلاحه. وقد أحرزت الأساليب القائمة على الوكلاء والمدعومة بنماذج اللغات الكبيرة (LLMs) تقدماً في هذا المجال من خلال محاكاة سير عمل المطورين من خلال استخدام الأدوات المتكرر والتفكير المنطقي. ومع ذلك، فإن هذه الأنظمة عادةً ما تكون بطيئة وهشة ومكلفة التشغيل، خاصةً عند بناؤها على نماذج مغلقة المصدر. وفي الوقت نفسه، فإن نماذج استرجاع التعليمات البرمجية الحالية، على الرغم من سرعتها، ليست مُحسّنة للشمولية والتركيز السلوكي لأوصاف المشكلات الواقعية. ويُشكل هذا التناقض بين المدخلات اللغوية الطبيعية وقدرة البحث عن التعليمات البرمجية تحدياً أساسياً لتشغيل التصحيح الآلي القابل للتطوير.

SWERank: إطار عمل عملي لتحديد المواقع بدقة

للتغلب على هذه القيود، قدمت Salesforce AI إطار عمل SWERank، وهو إطار عمل خفيف الوزن وفعال مصمم خصيصاً لتحديد مواقع مشاكل البرمجيات. يُصمم SWERank لسد الفجوة بين الكفاءة والدقة من خلال إعادة صياغة عملية تحديد الموقع كمهمة تصنيف للتعليمات البرمجية. ويتكون الإطار من مكونين رئيسيين:

  • SWERankEmbed: نموذج استرجاع ثنائي المُشفّر يُشفّر مشاكل GitHub ومقاطع التعليمات البرمجية في مساحة تضمين مشتركة من أجل استرجاع فعال قائم على التشابه.
  • SWERankLLM: مُعيد ترتيب قائم على قائمة مبني على نماذج اللغات الكبيرة المُدرّبة على التعليمات، والذي يُحسّن تصنيف المرشحين المسترجَعَين باستخدام الفهم السياقي.

وللتدريب على هذا النظام، قام فريق البحث بإنشاء SWELOC، وهي مجموعة بيانات واسعة النطاق مُستخرجة من مستودعات GitHub العامة، تربط تقارير المشاكل الواقعية بالتغييرات المُقابلة في التعليمات البرمجية. ويُدخِل SWELOC أمثلة تدريبية متباينة باستخدام تصفية الاتساق واستخراج السلبيات الصعبة لضمان جودة البيانات وملاءمتها.

البنية والمساهمات المنهجية

في جوهره، يتبع SWERank خط أنابيب من مرحلتين:

  1. مرحلة الاسترجاع: يقوم SWERankEmbed بتعيين وصف مشكلة مُعطاة ووظائف مرشحة إلى تمثيلات متجهة كثيفة. باستخدام خسارة InfoNCE المتباينة، يتم تدريب مُسترجِع البيانات لزيادة التشابه بين المشكلة ووظيفتها المُرتبطة بها حقاً مع تقليل تشابهها مع مقاطع التعليمات البرمجية غير ذات الصلة. ومن الجدير بالذكر أن النموذج يستفيد من السلبيات الصعبة المُستخرجة بعناية – وظائف التعليمات البرمجية المُشابهة دلالياً ولكنها غير ذات صلة – والتي تُحسّن قدرة النموذج التمييزية.

  2. مرحلة إعادة الترتيب: تستفيد هذه المرحلة من SWERankLLM، وهو مُعيد ترتيب قائم على قائمة مبني على نماذج اللغات الكبيرة، والذي يُعالج وصف المشكلة بالإضافة إلى أفضل k من مرشحي التعليمات البرمجية ويُنشئ قائمة مُرتبة حيث تظهر التعليمات البرمجية ذات الصلة في الأعلى. ومن المهم أن يتم تكييف هدف التدريب مع الإعدادات التي يُعرف فيها الموجب الحقيقي فقط. ويتم تدريب النموذج لإخراج مُعرّف مقطع التعليمات البرمجية ذي الصلة، مع الحفاظ على التوافق مع الاستدلال القائم على القائمة مع تبسيط عملية الإشراف.

يسمح هذان المكونان معاً لـ SWERank بتقديم أداء عالٍ دون الحاجة إلى جولات تفاعلية متعددة أو تنسيق وكلاء مكلف.

النتائج والتقييمات

أظهرت التقييمات على SWE-Bench-Lite و LocBench – وهما معياران قياسيان لتحديد مواقع البرمجيات – أن SWERank يحقق نتائج متقدمة على مستوى الملف والوحدة والوظيفة. على SWE-Bench-Lite، حقق SWERankEmbed-Large (7B) دقة على مستوى الوظيفة @10 بنسبة 82.12٪، متفوقاً حتى على LocAgent الذي يعمل مع Claude-3.5. عند اقترانه مع SWERankLLM-Large (32B)، تحسّن الأداء أكثر ليصل إلى 88.69٪، مما يُنشئ معياراً جديداً لهذه المهمة.

بالإضافة إلى مكاسب الأداء، يوفر SWERank فوائد تكلفة كبيرة. مقارنةً بوكلاء المدعومين بـ Claude، والتي تبلغ متوسط تكلفتها حوالي 0.66 دولاراً لكل مثال، تبلغ تكلفة استنتاج SWERankLLM 0.011 دولاراً للنموذج 7B و 0.015 دولاراً للنوع 32B – مما يُحقق نسبة دقة إلى تكلفة أفضل بمقدار 6 أضعاف. علاوة على ذلك، يحقق نموذج SWERankEmbed-Small ذو المعاملات 137 مليون نتيجة تنافسية، مما يُظهر قابلية تطوير الإطار وكفاءته حتى على الهياكل الخفيفة الوزن.

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

الخاتمة

يُقدم SWERank بديلاً مُقنعاً للأساليب التقليدية لتحديد المواقع القائمة على الوكلاء من خلال نمذجة مهمة تحديد موقع مشكلة البرمجيات كمهمة تصنيف. من خلال بنيته المتمثلة في الاسترجاع وإعادة الترتيب، يُقدّم SWERank دقة متقدمة مع الحفاظ على انخفاض تكلفة الاستنتاج والحد الأدنى من وقت الانتظار. وتُوفر مجموعة بيانات SWELOC المُصاحبة أساس تدريب عالي الجودة، مما يُمكّن من تعميم قوي عبر قواعد بيانات مختلفة وأنواع المشاكل. من خلال فصل تحديد الموقع عن التفكير المتعدد الخطوات القائم على الوكلاء وتأسيسه في الاسترجاع العصبي الفعال، تُظهر Salesforce AI أن الحلول العملية القابلة للتطوير للتصحيح وصيانة التعليمات البرمجية ليست ممكنة فقط، بل في متناول اليد باستخدام أدوات مفتوحة المصدر. يُحدد SWERank معياراً جديداً للدقة والكفاءة وقابلية النشر في هندسة البرمجيات الآلية.

المصدر: MarkTechPost