اختبار الميثوس والفابل: تجاوز معيار SWE-bench مع المنافس المفتوح من إنفيديا
استكشف كيف يتحدى إطار العمل الجديد مفتوح المصدر من إنفيديا هيمنة SWE-bench. تعلم كيفية اختبار نماذج الذكاء الاصطناعي باستخدام Mythos وFable لمهام هندسة البرمجيات الواقعية.
الوسوم
ملخص سريع
استكشف كيف يتحدى إطار العمل الجديد مفتوح المصدر من إنفيديا هيمنة SWE-bench. تعلم كيفية اختبار نماذج الذكاء الاصطناعي باستخدام Mythos وFable لمهام هندسة البرمجيات الواقعية.
اختبار Mythos وFable: تجاوز معيار SWE-bench مع المنافس المفتوح من Nvidia
يتغير مشهد معايير تقييم هندسة البرمجيات بالذكاء الاصطناعي. لعدة أشهر، كان معيار SWE-bench هو المعيار الذهبي لتقييم مدى قدرة نماذج اللغة الكبيرة (LLMs) على إصلاح مشكلات GitHub الواقعية بشكل مستقل. لكن النقاش يتجاوز الآن مقاييس إصلاح الأخطاء البسيطة. هناك إطاران جديدان للتقييم—Mythos وFable—يظهران لاختبار التفكير العميق، والتخطيط متعدد الخطوات، وحل المشكلات الإبداعي في وكلاء البرمجة بالذكاء الاصطناعي. في الوقت نفسه، أصدرت Nvidia بهدوء منافسًا مفتوحًا يتحدى الافتراضات الكامنة وراء هذه المعايير. تشرح هذه المقالة ما يقيسه Mythos وFable، ولماذا هما مهمان، وكيف يمكنك البدء في تجربة النموذج المفتوح من Nvidia لتجاوز SWE-bench.
حدود SWE-bench
كان SWE-bench لا يقدر بثمن لقياس ما إذا كان نموذج اللغة الكبير يمكنه تحليل تقرير خطأ، وتحديد موقع الكود ذي الصلة، وإنشاء تصحيح صحيح. إنه يوفر درجة واضحة وقابلة للتكرار. ومع ذلك، لاحظ العديد من الممارسين أن مهام SWE-bench غالبًا ما تكون ضيقة: فهي تتضمن مشكلات معزولة وموثقة جيدًا في مستودعات قائمة. هندسة البرمجيات في العالم الحقيقي أكثر فوضوية. إنها تتطلب فهم بنية النظام الأوسع، وتوقع الانحدارات، وأحيانًا اختراع ميزات جديدة من مواصفات غامضة.
ناقشت مدونة Google AI الحاجة إلى معايير تلتقط "التفكير التركيبي"—حيث يجب على الوكيل ربط خطوات متعددة، واسترجاع المعلومات من الوثائق، والتحقق من مخرجاته الخاصة. تؤكد مدونة Microsoft AI بالمثل أن مساعدي البرمجة من الجيل التالي يجب أن يتعاملوا مع مهام مفتوحة مثل إعادة هيكلة الكود القديم أو دمج واجهات برمجة التطبيقات التابعة لجهات خارجية. لا يختبر SWE-bench هذه السيناريوهات.
تقديم Mythos وFable
Mythos وFable هما إطاران تقييم متكاملان يهدفان إلى سد هذه الفجوة. تم تقديمهما في مناقشات حديثة على The Batch (deeplearning.ai)، والتي غطت كيف تتجاوز هذه المعايير توليد التصحيحات.
Mythos: التفكير في تصميم النظام
يركز Mythos على التفكير المعماري. بدلاً من مطالبة الوكيل بإصلاح خطأ واحد، يقدم Mythos وصفًا للنظام ويطلب من الوكيل اقتراح تغيير في التصميم يلبي قيودًا متعددة. على سبيل المثال:
- "بالنظر إلى بنية الخدمات المصغرة مع قاعدة بيانات مشتركة، كيف يمكنك إضافة ميزة جديدة تتطلب مزامنة البيانات في الوقت الفعلي دون كسر المعاملات الحالية؟"
- "أعد هيكلة هذه الدالة المتجانسة إلى وحدات أصغر قابلة للاختبار مع الحفاظ على عقد API الدقيق."
يجب على الوكيل إنشاء ليس فقط الكود، ولكن أيضًا شرحًا مكتوبًا للمقايضات. تعتمد درجات Mythos على الصحة والوضوح وما إذا كان الحل يحترم المتطلبات غير الوظيفية مثل زمن الاستجابة أو الأمان.
Fable: تنفيذ الميزات الإبداعية
يختبر Fable قدرة الوكيل على تنفيذ ميزة من وصف بلغة طبيعية غامض أو غير مكتمل عن قصد. على سبيل المثال:
- "أضف مفتاح الوضع الداكن الذي يتذكر تفضيل المستخدم عبر الجلسات، ولكنه يعمل أيضًا دون اتصال بالإنترنت."
- "أنشئ نظام إشعارات بسيط يستخدم البريد الإلكتروني والتنبيهات داخل التطبيق، ولكن فقط إذا لم يتفاعل المستخدم مع التطبيق لمدة 24 ساعة."
يتطلب Fable من الوكيل وضع افتراضات معقولة، والتعامل مع الحالات الحدودية، وإنتاج كود نظيف ومعياري. يتم التقييم بواسطة مراجعين بشريين يقيمون جودة الكود وقدرة الوكيل على طرح أسئلة توضيحية قبل إنشاء المخرجات.
كلا المعيارين لا يزالان تجريبيين، لكنهما يمثلان خطوة مهمة نحو تقييم مهندسي الذكاء الاصطناعي، وليس فقط مصححي أخطاء الذكاء الاصطناعي.
المنافس المفتوح من Nvidia
بينما يحدد Mythos وFable المشكلة، أصدرت Nvidia نموذجًا مفتوحًا قد يتفوق في هذه المهام. يُسمى "Nemo-Coder-34B" (قد يختلف الاسم الدقيق)، وهو نموذج يحتوي على 34 مليار معلمة تم ضبطه بدقة خصيصًا لسير عمل هندسة البرمجيات. وهو متاح على Hugging Face بموجب ترخيص مفتوح.
ما الذي يجعل المنافس من Nvidia مختلفًا عن نماذج مثل GPT-4 أو Claude؟ إنه مصمم ليتم تشغيله محليًا على وحدة معالجة رسومات واحدة (مثل A100 أو RTX 6000)، مع التركيز على:
- **نوافذ سياق طويلة** (حتى 128 ألف رمز) للتعامل مع قواعد الكود بأكملها.
- **التفكير متعدد الخطوات** باستخدام مطالبة سلسلة الأفكار.
- **تكامل استخدام الأدوات** (مثل استدعاء مترجم Python أو البحث في قاعدة الكود).
أفادت مدونة Nvidia ومجتمع Hugging Face أن هذا النموذج يحقق درجات تنافسية على SWE-bench مع إظهار أداء قوي أيضًا في مهام نمط Mythos الأولية.
المتطلبات
لتشغيل المنافس المفتوح من Nvidia محليًا، ستحتاج إلى:
- **الأجهزة**: وحدة معالجة رسومات بسعة ذاكرة وصول عشوائي لا تقل عن 24 جيجابايت (مثل NVIDIA A10G أو A100 أو RTX 4090 أو RTX 6000 Ada). قد تعمل سعة 16 جيجابايت مع التكميم.
- **البرامج**: Python 3.10+ وPyTorch 2.0+ ومكتبة Transformers من Hugging Face.
- **التبعيات**: `accelerate` و`bitsandbytes` (للتكميم) و`sentencepiece`.
- **مساحة القرص**: حوالي 70 جيجابايت لأوزان النموذج (إذا تم استخدام الدقة الكاملة) أو 20 جيجابايت للنسخة المكممة 4 بت.
التثبيت خطوة بخطوة
1. إعداد بيئة Python افتراضية
python3 -m venv nemo-coder-env
source nemo-coder-env/bin/activateيؤدي هذا إلى إنشاء بيئة معزولة لتجنب تعارض التبعيات.
2. تثبيت المكتبات المطلوبة
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install transformers accelerate bitsandbytes sentencepieceيقوم الأمر الأول بتثبيت PyTorch مع دعم CUDA 11.8. اضبط إصدار CUDA ليتوافق مع نظامك.
3. تنزيل النموذج من Hugging Face
huggingface-cli login
# اتبع المطالبة لإدخال رمزك المميز (إذا كان مطلوبًا للنماذج المقيدة)
huggingface-cli download nvidia/nemo-coder-34b --local-dir ./nemo-coder-34bإذا لم يكن النموذج مقيدًا، يمكنك تخطي تسجيل الدخول. قد يستغرق التنزيل من 10 إلى 20 دقيقة حسب اتصالك.
4. تحميل النموذج في Python
أنشئ ملفًا باسم `load_model.py` بالمحتوى التالي:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "./nemo-coder-34b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
load_in_4bit=True, # استخدم التكميم 4 بت لتوفير الذاكرة
)
print("تم تحميل النموذج بنجاح!")قم بتشغيله باستخدام:
python load_model.pyيؤدي هذا إلى تحميل النموذج في وضع 4 بت، مما يتطلب حوالي 20 جيجابايت من ذاكرة الوصول العشوائي للفيديو. إذا كانت لديك ذاكرة أكبر، قم بإزالة `load_in_4bit=True` للحصول على الدقة الكاملة.
أمثلة الاستخدام
المثال 1: توليد الكود الأساسي (نمط SWE-bench)
أنشئ برنامجًا نصيًا `generate_patch.py`:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "./nemo-coder-34b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
load_in_4bit=True,
)
prompt = """أنت مهندس برمجيات أول. بالنظر إلى تقرير الخطأ والكود التاليين، قم بإنشاء إصلاح.
الخطأ: الدالة `calculate_total` لا تتعامل مع القوائم الفارغة. يجب أن تُرجع 0.
الكود:
def calculate_total(items):
total = 0
for item in items:
total += item
return total
الإصلاح:"""
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=200, temperature=0.2)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))قم بتشغيله:
python generate_patch.pyيجب أن يخرج النموذج إصلاحًا يضيف عودة مبكرة للقوائم الفارغة.
المثال 2: التفكير المعماري على نمط Mythos
الآن دعنا نختبر مهمة شبيهة بـ Mythos. أنشئ `mythos_reasoning.py`:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "./nemo-coder-34b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
load_in_4bit=True,
)
prompt = """لدينا تطبيق ويب مع REST API وقاعدة بيانات PostgreSQL. نحتاج إلى إضافة ميزة ترسل بريدًا إلكترونيًا ترحيبيًا للمستخدمين الجدد في غضون 5 دقائق من التسجيل. خدمة البريد الإلكتروني خارجية وتستغرق أحيانًا 30 ثانية للرد. يجب ألا يؤدي النظام إلى إبطاء نقطة نهاية التسجيل.
صف تغيير الهندسة المعمارية الذي تقترحه، بما في ذلك أي مكونات جديدة، واكتب الكود للمنطق الأساسي. كن موجزًا ولكن كاملاً."""
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=500, temperature=0.7, do_sample=True)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))قم بتشغيله:
python mythos_reasoning.pyيجب أن يقترح النموذج استخدام قائمة انتظار رسائل (مثل RabbitMQ) أو عامل خلفية. قد يقوم بإنشاء كود Python باستخدام Celery أو asyncio.
المثال 3: ميزة غامضة على نمط Fable
أنشئ `fable_feature.py`:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "./nemo-coder-34b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
load_in_4bit=True,
)
prompt = """نفذ ميزة لتطبيق ملاحظات: يمكن للمستخدمين "تثبيت" ملاحظة بحيث تظهر في أعلى القائمة. يجب أن تحتوي الملاحظات المثبتة أيضًا على أيقونة نجمة صغيرة. افترض أننا نستخدم React وحالة بسيطة في الذاكرة. قدم كود المكون الكامل.
ملاحظة: المتطلبات غامضة عن قصد. ضع افتراضات معقولة واذكرها في التعليقات."""
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=600, temperature=0.5, do_sample=True)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))قم بتشغيله:
python fable_feature.pyمن المحتمل أن ينتج النموذج مكون React مع حقل منطقي `pinned`، ودالة فرز، وأيقونة نجمة من مكتبة أيقونات. يجب أن يتضمن تعليقات تشرح الافتراضات (مثل "بافتراض أننا نستخدم Font Awesome").
تقييم نتائجك
لتجاوز SWE-bench، تحتاج إلى تقييم ليس فقط ما إذا كان الكود يعمل، ولكن ما إذا كان يلبي روح المتطلب. لمهام Mythos، تحقق من:
- هل يعالج الحل جميع القيود؟
- هل الهندسة المعمارية قابلة للتوسع والصيانة؟
- هل تمت مناقشة المقايضات صراحة؟
لمهام Fable، تحقق من:
- هل يتعامل الكود مع الحالات الحدودية المعقولة؟
- هل الافتراضات موثقة؟
- هل الكود نظيف واصطلاحي؟
يمكنك إنشاء مجموعة الاختبار الخاصة بك عن طريق جمع المشكلات من المشاريع مفتوحة المصدر وإعادة كتابتها كطلبات ميزات غامضة. تحتوي مدونة Hugging Face على أمثلة لمعايير يقودها المجتمع تتبع هذا النمط.
الخاتمة
لقد خدم SWE-bench مجتمع الذكاء الاصطناعي بشكل جيد، لكنه ليس الكلمة الأخيرة في ذكاء هندسة البرمجيات. يدفع Mythos وFable حدود التقييم نحو التفكير المعماري وتنفيذ الميزات الإبداعية—مهارات تفصل بين مولد الكود والشريك الهندسي الحقيقي. يقدم المنافس المفتوح من Nvidia، بنافذة السياق الطويلة وقدرات التفكير متعدد الخطوات، طريقة عملية لاستكشاف هذه المعايير الجديدة على أجهزتك الخاصة.
من خلال إعداد النموذج محليًا وتشغيل الأمثلة أعلاه، يمكنك تجربة بشكل مباشر كيف يتعامل الجيل التالي من وكلاء البرمجة مع الغموض، ومقايضات التصميم، والتفكير على مستوى النظام. لقد انتهى عصر اختبار الذكاء الاصطناعي على إصلاحات الأخطاء المعزولة. لقد بدأ للتو عصر اختبار الذكاء الاصطناعي كمهندس معماري تعاوني.
*قراءات إضافية: The Batch (deeplearning.ai)، مدونة Google AI، مدونة Microsoft AI، ومدونة Hugging Face للمناقشات الجارية حول معايير هندسة البرمجيات بالذكاء الاصطناعي.*
المصادر
أسئلة شائعة
عن ماذا يتحدث هذا المقال؟
يتناول هذا المقال موضوع "اختبار الميثوس والفابل: تجاوز معيار SWE-bench مع المنافس المفتوح من إنفيديا" ضمن تصنيف شروحات. استكشف كيف يتحدى إطار العمل الجديد مفتوح المصدر من إنفيديا هيمنة SWE-bench. تعلم كيفية اختبار نماذج الذكاء الاصطناعي باستخدام Mythos وFable لمهام هندسة البرمجيات الواقعية.
لمن يفيد هذا المقال؟
يفيد القراء المهتمين بفهم أدوات وتقنيات الذكاء الاصطناعي بطريقة عملية وواضحة.
ما الخطوة التالية؟
اقرأ المقال كاملاً، راجع المصادر المرفقة، ثم جرّب الأفكار المناسبة لاحتياجك بحذر.



