Τα benchmarks κώδικα κρύβουν ένα βρόμικο μυστικό: για να βαθμολογήσετε ένα μοντέλο πρέπει να εκτελέσετε ό,τι έγραψε. Μια εκτέλεση pass@k σε μερικές εκατοντάδες προβλήματα με δέκα λύσεις το καθένα σημαίνει χιλιάδες φρεσκοπαραγόμενα προγράμματα — και δεν θα κάνατε ποτέ curl | bash ούτε ένα από αυτά αν ερχόταν από άγνωστο.
Οι περισσότεροι ξεκινούν στο laptop τους με ένα subprocess.run και ένα χρονικό όριο. Δουλεύει μέχρι μια λύση να γράψει αρχείο 40 GB, να κάνει fork μέχρι να κολλήσει η μηχανή ή να διαβάσει σιωπηλά τον αρχικό σας κατάλογο. Η λύση δεν είναι ένα εξυπνότερο χρονικό όριο. Είναι να τρέχετε τις λύσεις κάπου που δεν σας νοιάζει.
Η ρύθμιση που δουλεύει
Ένα sandbox είναι ένα microVM Firecracker με Python 3.12, Node.js 22 και bash, που ξεκινά σε περίπου ένα δευτερόλεπτο και διαγράφεται όταν τελειώσετε. Η εξερχόμενη σύνδεση λειτουργεί, η εισερχόμενη όχι, και τίποτα δικό σας δεν βρίσκεται μέσα.
Η παγίδα είναι να αντιμετωπίζετε ένα sandbox σαν κλήση συνάρτησης. Το καθένα χρεώνεται τουλάχιστον 60 δευτερόλεπτα και χρειάζεται ένα δευτερόλεπτο για να ξεκινήσει, οπότε ένα sandbox ανά λύση είναι αργό και σπάταλο. Αντί γι' αυτό, βάλτε το harness μέσα:
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. Μια λύση που ξεφεύγει σκοτώνει τη δική της υποδιεργασία, όχι την εκτέλεση. Αν μια λύση καταφέρει να χαλάσει το ίδιο το sandbox, χάνετε ένα κομμάτι, αναδημιουργείτε το sandbox και συνεχίζετε.
Τα αρχεία φτάνουν έως 5 MB ανά μεταφορά, οπότε χωρίστε τα μεγάλα σύνολα δεδομένων σε κομμάτια — κάτι που θέλετε έτσι κι αλλιώς για παραλληλισμό.
Διεκπεραιωτική ικανότητα, ειλικρινά
Ένας λογαριασμός μπορεί να έχει έως 20 sandboxes, αλλά 2 εντολές εκτελούνται ταυτόχρονα. Μια εργασία παρασκηνίου μετράει όσο τρέχει. Άρα μια γρήγορη αξιολόγηση μοιάζει με δύο sandboxes που αλέθουν το καθένα το κομμάτι του στο παρασκήνιο, όχι με είκοσι sandboxes που τσακώνονται για δύο θέσεις.
Για τυπικά benchmarks κώδικα αυτό αρκεί και περισσεύει: οι περισσότερες λύσεις τελειώνουν σε λιγότερο από ένα δευτερόλεπτο, και ένα sandbox περνά χιλιάδες την ώρα. Αν πρέπει να αξιολογήσετε πολλά μοντέλα ταυτόχρονα σε τεράστια σουίτα, θα χτυπήσετε ταβάνι. Τότε ένα VPS με τη δική σας απομόνωση είναι το καλύτερο εργαλείο.
Ο κανόνας CPU που πρέπει να ξέρετε
Τα sandboxes είναι φτιαγμένα για εργασία σε εκρήξεις. Ένα sandbox που μένει πάνω από 90% CPU για περισσότερα από 15 λεπτά θεωρείται κατάχρηση — ένα προσωρινό sandbox σταματά. Οι κανονικές αξιολογήσεις, που εναλλάσσουν γρήγορες εκτελέσεις με καταγραφή αποτελεσμάτων, δεν πλησιάζουν καν. Ένα benchmark που καίει πλήρη CPU για ώρες (μεταγλώττιση μεγάλου έργου ανά λύση, αριθμητικές δοκιμές αντοχής) θα πλησιάσει. Γι' αυτό πάρτε VPS με τον μήνα: το τιμολόγιο AI agent δίνει 4 vCPU και 4 GB για $10.
Πόσο κοστίζει μια εκτέλεση
Πληρώνετε ανά δευτερόλεπτο τα 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 |
| Build + δοκιμές ανά λύση | plus (2 vCPU, 4 GB) | ~3 ώρες | $0.40 |
Οι κλήσεις στο μοντέλο που παράγουν αυτές τις λύσεις θα σας κοστίσουν περισσότερο από την εκτέλεση — συνήθως κατά μία τάξη μεγέθους.
Κλειδιά και αναπαραγωγιμότητα
Αν το harness καλεί API μοντέλου μέσα από το sandbox — για παράδειγμα για βαθμολόγηση τύπου LLM-as-judge — περάστε το κλειδί ως μεταβλητή περιβάλλοντος του sandbox. Οι τιμές αποθηκεύονται κρυπτογραφημένες, δεν καταγράφονται ποτέ σε logs, και το API επιστρέφει μόνο τα ονόματα των μεταβλητών.
Για αναπαραγωγιμότητα, κλειδώστε τις εκδόσεις πακέτων στο harness σας και καταγράψτε το τιμολόγιο του sandbox μαζί με τα αποτελέσματα. Κάθε sandbox ξεκινά από την ίδια καθαρή εικόνα, κάτι που αφαιρεί τη μεταβλητή «στο laptop μου δούλευε» από τους αριθμούς σας. Ειλικρινά, μόνο αυτό αξίζει την αλλαγή.
Ξεκινήστε από τη σελίδα των sandboxes και την τεκμηρίωση των sandboxes. Οι νέοι λογαριασμοί παίρνουν $1 χρόνου sandbox — αρκετό για μια πρώτη αξιολόγηση μερικών χιλιάδων λύσεων στο τιμολόγιο small. Η τεκμηρίωση του SDK καλύπτει τις εργασίες παρασκηνίου και τις μεταφορές αρχείων, και τα όρια και χρέωση των sandboxes περιέχουν τον πλήρη πίνακα ορίων.
Σχετικά: sandbox για πράκτορες AI και η πρώτη εργασία πράκτορα σε sandbox.
Σχόλια
Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.