بنچمارکهای برنامهنویسی یک راز ناخوشایند دارند: برای نمرهدادن به مدل باید آنچه نوشته را اجرا کنید. یک اجرای 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 سندباکس داشته باشد، اما 2 فرمان همزمان اجرا میشوند. کار پسزمینه تا وقتی در حال اجراست شمرده میشود. پس ارزیابی سریع یعنی دو سندباکس که هر کدام بخش خود را در پسزمینه پردازش میکنند، نه بیست سندباکس که سر دو جای خالی دعوا میکنند.
برای بنچمارکهای معمول برنامهنویسی این بیش از کافی است: بیشتر پاسخها در کمتر از یک ثانیه تمام میشوند و یک سندباکس در ساعت هزاران پاسخ را پردازش میکند. اگر لازم است مدلهای زیادی را همزمان روی یک مجموعه عظیم ارزیابی کنید، به سقف میخورید. در آن نقطه VPS با ایزولهسازی خودتان ابزار بهتری است.
قاعده CPU که باید بدانید
سندباکسها برای کار جهشی ساخته شدهاند. سندباکسی که بیش از 15 دقیقه بالای 90٪ CPU بماند سوءاستفاده تلقی میشود — سندباکس موقت متوقف میشود. ارزیابیهای عادی که بین اجراهای سریع و ثبت نتایج جابهجا میشوند، حتی نزدیکش هم نمیشوند. بنچمارکی که ساعتها CPU را کامل میسوزاند (کامپایل یک پروژه بزرگ برای هر پاسخ، تستهای فشار عددی) نزدیک میشود. برای آن یک VPS ماهانه بگیرید: تعرفه AI agent با 10 دلار، 4 vCPU و 4 GB میدهد.
هزینه یک اجرا
هزینه vCPU و RAM تعرفه را ثانیهای، با حداقل 60 ثانیه، از موجودی پیشپرداخت میپردازید.
| بار کاری | تعرفه | زمان | هزینه تقریبی |
|---|---|---|---|
| 1٬000 پاسخ کوتاه پایتون | small (0.5 vCPU, 1 GB) | ~20 دقیقه | $0.011 |
| 5٬000 پاسخ، numpy مجاز | standard (1 vCPU, 2 GB) | ~2 ساعت | $0.13 |
| ساخت + تست برای هر پاسخ | plus (2 vCPU, 4 GB) | ~3 ساعت | $0.40 |
فراخوانیهای مدل که این پاسخها را تولید میکنند از خود اجرا گرانتر تمام میشوند — معمولاً حدود ده برابر.
کلیدها و تکرارپذیری
اگر ابزار ارزیابی از داخل سندباکس API یک مدل را فراخوانی میکند — مثلاً برای نمرهدهی به سبک LLM-as-judge — کلید را بهصورت متغیر محیطی سندباکس بدهید. مقادیر رمزگذاریشده ذخیره میشوند، هرگز در لاگ ثبت نمیشوند و API فقط نام متغیرها را برمیگرداند.
برای تکرارپذیری، نسخه بستهها را در ابزار ارزیابی ثابت کنید و تعرفه سندباکس را همراه نتایج ثبت کنید. هر سندباکس از همان ایمیج تمیز شروع میشود و این متغیر «روی لپتاپ من کار میکرد» را از اعدادتان حذف میکند. راستش، فقط همین ارزش جابهجایی را دارد.
از صفحه سندباکسها و مستندات سندباکس شروع کنید. حسابهای جدید 1 دلار زمان سندباکس میگیرند — برای نخستین ارزیابی با چند هزار پاسخ روی تعرفه small کافی است. مرجع SDK کارهای پسزمینه و انتقال فایل را توضیح میدهد و محدودیتها و صورتحساب سندباکس جدول کامل سهمیهها را دارد.
مرتبط: سندباکس برای عاملهای هوش مصنوعی و نخستین کار عامل در سندباکس.
نظرات
هنوز نظری نیست. اولین نفر باشید.