لمعايير البرمجة سرٌّ غير مريح: لكي تقيّم نموذجًا عليك أن تشغّل ما كتبه. تشغيل pass@k على بضع مئات من المسائل مع عشرة حلول لكل منها يعني آلاف البرامج المولَّدة حديثًا — ولن تشغّل أيًّا منها بـ curl | bash لو جاءك من شخص غريب.
يبدأ معظم الناس على حواسيبهم المحمولة بـ subprocess.run ومهلة زمنية. ينجح هذا إلى أن يكتب أحد الحلول ملفًا بحجم 40 GB، أو يولّد عمليات حتى يتجمد الجهاز، أو يقرأ مجلدك الرئيسي بصمت. الحل ليس مهلة أذكى. الحل هو تشغيل الحلول في مكان لا يهمك.
الإعداد الذي ينجح
صندوق الرمل هو Firecracker microVM فيها Python 3.12 و Node.js 22 و bash، تبدأ في نحو ثانية وتُحذف عندما تنتهي. الإنترنت الصادر يعمل والوارد لا يعمل، ولا يوجد بداخلها شيء يخصك.
الفخ هو معاملة صندوق الرمل كاستدعاء دالة. كل صندوق يُحاسَب على 60 ثانية على الأقل ويحتاج ثانية ليبدأ، لذا فإن صندوقًا لكل حل بطيء ومُهدِر. بدلًا من ذلك ضع أداة التقييم في الداخل:
from eqvps import Sandbox
with Sandbox.create(tariff="standard", ttl=4 * 3600) as sb:
sb.upload("/root/harness.py", open("harness.py").read())
sb.upload("/root/samples.jsonl", open("slice_03.jsonl").read())
task = sb.exec("python3 /root/harness.py /root/samples.jsonl > /root/results.jsonl",
background=True)
task.wait(poll_interval=10)
results = sb.download_text("/root/results.jsonl")
في الداخل، يشغّل الملف harness.py كل حل في عملية فرعية بمهلة قصيرة خاصة به، ويسجّل pass أو fail أو timeout. الحل الذي يسيء التصرف يقتل عمليته الفرعية فقط، لا التشغيل كله. وإن نجح حلٌّ في إفساد صندوق الرمل نفسه، تخسر جزءًا واحدًا، وتعيد إنشاء الصندوق وتكمل.
حجم الملف يصل إلى 5 MB لكل عملية نقل، لذا قسّم مجموعات البيانات الكبيرة إلى أجزاء — وهو ما تريده على أي حال من أجل التوازي.
الإنتاجية بصراحة
يمكن للحساب أن يحتفظ بما يصل إلى 20 صندوق رمل، لكن يُنفَّذ أمران فقط في الوقت نفسه. المهمة في الخلفية تُحتسب ما دامت تعمل. لذا فإن التقييم السريع يبدو كصندوقين يطحن كل منهما جزءه في الخلفية، لا كعشرين صندوقًا تتنازع على مكانين.
لمعايير البرمجة المعتادة هذا أكثر من كافٍ: معظم الحلول تنتهي في أقل من ثانية، وصندوق واحد يعالج الآلاف في الساعة. إن احتجت إلى تقييم نماذج كثيرة في وقت واحد على حزمة ضخمة، فستصطدم بالسقف. عندها يكون VPS يشغّل عزلك الخاص هو الأداة الأفضل.
قاعدة المعالج التي يجب أن تعرفها
صناديق الرمل مصممة للعمل المتقطع. الصندوق الذي يبقى فوق 90% من المعالج لأكثر من 15 دقيقة يُعامَل كإساءة استخدام — ويُوقَف الصندوق المؤقت. التقييمات العادية، التي تتناوب بين تنفيذ سريع وتسجيل النتائج، لا تقترب من ذلك. أما معيار يحرق المعالج بالكامل لساعات (تجميع مشروع كبير لكل حل، أو اختبارات إجهاد عددية) فسيقترب. لذلك خذ VPS بالشهر: باقة AI agent تمنحك 4 vCPU و 4 GB مقابل 10 دولارات.
كم يكلّف التشغيل
تدفع بالثانية مقابل وحدات vCPU والذاكرة في الباقة، بحد أدنى 60 ثانية، من رصيد مدفوع مسبقًا.
| الحمل | الباقة | الوقت | التكلفة التقريبية |
|---|---|---|---|
| 1,000 حل قصير بلغة Python | small (0.5 vCPU, 1 GB) | ~20 دقيقة | $0.011 |
| 5,000 حل، مع السماح بـ numpy | standard (1 vCPU, 2 GB) | ~ساعتان | $0.13 |
| بناء + اختبارات لكل حل | plus (2 vCPU, 4 GB) | ~3 ساعات | $0.40 |
استدعاءات النموذج التي تولّد هذه الحلول ستكلفك أكثر من التنفيذ — عادةً بمرتبة عشرية كاملة.
المفاتيح وقابلية إعادة الإنتاج
إن كانت أداة التقييم تستدعي API نموذج من داخل صندوق الرمل — مثلًا للتقييم بأسلوب LLM-as-judge — فمرّر المفتاح كمتغير بيئة لصندوق الرمل. تُخزَّن القيم مشفّرة، ولا تُسجَّل أبدًا، ولا يعيد API إلا أسماء المتغيرات.
ولضمان إعادة الإنتاج، ثبّت إصدارات الحزم في أداة التقييم وسجّل باقة صندوق الرمل مع النتائج. كل صندوق يبدأ من الصورة النظيفة نفسها، وهذا يزيل من أرقامك متغير "كان يعمل على حاسوبي". بصراحة، هذا وحده يستحق الانتقال.
ابدأ من صفحة صناديق الرمل وتوثيق صناديق الرمل. تحصل الحسابات الجديدة على رصيد 1 دولار من وقت صناديق الرمل — يكفي لأول تقييم بآلاف قليلة من الحلول على باقة small. يشرح مرجع SDK المهام في الخلفية ونقل الملفات، ويحوي قسم حدود صناديق الرمل ومحاسبتها جدول الحصص الكامل.
ذو صلة: صندوق رمل لوكلاء الذكاء الاصطناعي وأول مهمة لوكيل داخل صندوق رمل.
التعليقات
لا تعليقات بعد. كن الأول.