−25%

Windows के सालाना भुगतान पर, 31 अक्टूबर तक। प्लान देखें

EQVPS
शुरू करें

LLM मूल्यांकन के लिए सैंडबॉक्स: मॉडल के लिखे 1,000 समाधान लगभग एक सेंट में चलाएँ

प्रोग्रामिंग कार्यों पर मॉडल को अंक देने का मतलब है हज़ारों ऐसे प्रोग्राम चलाना जिन्हें किसी ने हाथ से नहीं लिखा। उन्हें अपने लैपटॉप के बजाय microVM पर बने एक-बार-इस्तेमाल सैंडबॉक्स में चलाएँ — प्रति सेकंड बिलिंग, साथ में थ्रूपुट और CPU सीमाओं पर ईमानदार टिप्पणी।

कोडिंग बेंचमार्क का एक गंदा राज़ है: मॉडल को अंक देने के लिए आपको उसका लिखा हुआ चलाना पड़ता है। कुछ सौ सवालों पर दस-दस समाधानों के साथ 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 एजेंटों के लिए सैंडबॉक्स और सैंडबॉक्स में एजेंट का पहला काम।

तैनात करने के लिए तैयार? क्रिप्टो से भुगतान करें, बिना KYC — लगभग एक मिनट में ऑनलाइन।

अभी तैनात करें →

FAQ

मूल्यांकन को सैंडबॉक्स की ज़रूरत ही क्यों है?

क्योंकि आप मॉडल के लिखे हज़ारों प्रोग्राम चला रहे हैं। ज़्यादातर हानिरहित होते हैं, कुछ अनंत लूप में फँस जाते हैं, और कुछ फ़ाइलें मिटा देते हैं या नेटवर्क कनेक्शन खोलते हैं। आपके वर्कस्टेशन पर यह आपके डेटा के लिए ख़तरा है; सैंडबॉक्स में यह बस एक असफल समाधान है।

क्या हर समाधान के लिए एक सैंडबॉक्स बनाना चाहिए?

आम तौर पर नहीं। सैंडबॉक्स बनाने में लगभग एक सेकंड लगता है और कम से कम 60 सेकंड का बिल बनता है, इसलिए हर समाधान के लिए एक सैंडबॉक्स दोनों को बर्बाद करता है। एक सैंडबॉक्स के अंदर ऐसा हार्नेस चलाएँ जो कई समाधान चलाए, हर एक का अपना टाइमआउट हो, और मॉडल बदलते समय या कुछ टूटने पर सैंडबॉक्स दोबारा बनाएँ।

मैं कितनी तेज़ी से चला सकता हूँ?

एक खाता अधिकतम 20 सैंडबॉक्स में एक समय पर ज़्यादा से ज़्यादा 2 कमांड चलाता है। व्यावहारिक तरीक़ा है कुछ सैंडबॉक्स, जिनमें से हर एक में आपका हार्नेस बैकग्राउंड टास्क के रूप में डेटासेट के एक हिस्से पर काम करता है।

क्या मैं लंबा बेंचमार्क घंटों तक चला सकता हूँ?

बैकग्राउंड टास्क के रूप में हाँ, सैंडबॉक्स की उम्र ख़त्म होने तक (अस्थायी सैंडबॉक्स के लिए 24 घंटे)। लेकिन 15 मिनट से ज़्यादा समय तक पूरे CPU पर चलने वाला सैंडबॉक्स दुरुपयोग माना जाता है। रुक-रुक कर होने वाले मूल्यांकन ठीक हैं; घंटों चलने वाली लगातार गणना VPS का काम है।

क्या सैंडबॉक्स मेरे मॉडल का API बुला सकता है?

बाहर जाने वाला इंटरनेट खुला है, तो हाँ। API कुंजी को बने हुए कोड में चिपकाने के बजाय सैंडबॉक्स के एनवायरनमेंट वैरिएबल के रूप में दें — वह एन्क्रिप्ट करके रखी जाती है और API उसे कभी वापस नहीं देता।

टिप्पणियाँ

अभी तक कोई टिप्पणी नहीं। पहले बनें।

एक टिप्पणी छोड़ें

टिप्पणियाँ दिखने से पहले मॉडरेट की जाती हैं।