कोडिंग बेंचमार्क का एक गंदा राज़ है: मॉडल को अंक देने के लिए आपको उसका लिखा हुआ चलाना पड़ता है। कुछ सौ सवालों पर दस-दस समाधानों के साथ 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 छोटे Python समाधान | 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 संदर्भ बैकग्राउंड टास्क और फ़ाइल ट्रांसफ़र समझाता है, और सैंडबॉक्स की सीमाएँ और बिलिंग में पूरी कोटा तालिका है।
संबंधित: AI एजेंटों के लिए सैंडबॉक्स और सैंडबॉक्स में एजेंट का पहला काम।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। पहले बनें।