Kodebenchmarks har en beskidt hemmelighed: For at bedømme en model skal du køre det, den skrev. En pass@k-kørsel over et par hundrede opgaver med ti løsninger hver er tusindvis af nygenererede programmer – og du ville aldrig køre curl | bash på ét eneste af dem fra en fremmed.
De fleste starter på deres bærbare med subprocess.run og en timeout. Det virker, indtil en løsning skriver en fil på 40 GB, forker, indtil maskinen går i stå, eller stille og roligt læser din hjemmemappe. Løsningen er ikke en klogere timeout. Det er at køre løsningerne et sted, hvor det er ligegyldigt.
Opsætningen, der virker
En sandbox er en Firecracker-microVM med Python 3.12, Node.js 22 og bash, startet på cirka et sekund og slettet, når du er færdig. Udgående internet virker, indgående gør ikke, og intet af dit ligger derinde.
Fælden er at behandle en sandbox som et funktionskald. Hver sandbox afregnes for mindst 60 sekunder og tager et sekund at starte, så én sandbox pr. løsning er langsomt og ødsel. Læg i stedet harnessen indenfor:
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")
Indeni kører harness.py hver løsning i en underproces med sin egen korte timeout og noterer pass, fail eller timeout. En løsning, der opfører sig dårligt, dræber sin egen underproces, ikke kørslen. Lykkes det en løsning at ødelægge selve sandboxen, mister du én del, genopretter sandboxen og fortsætter.
Filer går op til 5 MB pr. overførsel, så del store datasæt op i stykker – det vil du alligevel af hensyn til parallelisme.
Gennemløb, ærligt
En konto kan have op til 20 sandboxe, men 2 kommandoer udføres samtidig. En baggrundsopgave tæller, mens den kører. En hurtig evaluering ser altså ud som to sandboxe, der hver især maler sig gennem deres del i baggrunden – ikke tyve sandboxe, der slås om to pladser.
Til typiske kodebenchmarks er det rigeligt: de fleste løsninger er færdige på under et sekund, og én sandbox når tusindvis i timen. Skal du evaluere mange modeller på én gang mod en enorm suite, rammer du loftet. På det tidspunkt er en VPS med din egen isolation det bedre værktøj.
CPU-reglen, du bør kende
Sandboxe er bygget til arbejde i stød. En sandbox, der ligger over 90 % CPU i mere end 15 minutter, betragtes som misbrug – en midlertidig sandbox stoppes. Almindelige evalueringer, der skifter mellem hurtige kørsler og bogføring af resultater, kommer ikke i nærheden. Et benchmark, der brænder fuld CPU af i timevis (kompilering af et stort projekt pr. løsning, numeriske stresstests), gør. Til det tager du en VPS pr. måned: tariffen AI agent giver 4 vCPU og 4 GB for $10.
Hvad en kørsel koster
Du betaler pr. sekund for tariffens vCPU og RAM, mindst 60 sekunder, fra en forudbetalt saldo.
| Arbejdsbyrde | Tarif | Tid | Omtrentlig pris |
|---|---|---|---|
| 1.000 korte Python-løsninger | small (0.5 vCPU, 1 GB) | ~20 min | $0.011 |
| 5.000 løsninger, numpy tilladt | standard (1 vCPU, 2 GB) | ~2 t | $0.13 |
| Build + tests pr. løsning | plus (2 vCPU, 4 GB) | ~3 t | $0.40 |
Modelkaldene, der genererer løsningerne, koster dig mere end kørslen – typisk en størrelsesorden mere.
Nøgler og reproducerbarhed
Hvis harnessen kalder et model-API inde fra sandboxen – for eksempel til bedømmelse i LLM-as-judge-stil – så giv nøglen med som miljøvariabel for sandboxen. Værdierne gemmes krypteret, logges aldrig, og API'et returnerer kun variabelnavnene.
For reproducerbarhedens skyld låser du pakkeversioner i din harness og noterer sandboxens tarif sammen med resultaterne. Hver sandbox starter fra det samme rene image, hvilket fjerner variablen „det virkede på min bærbare“ fra dine tal. Ærligt talt er det alene skiftet værd.
Start med sandbox-siden og sandbox-dokumentationen. Nye konti får $1 i sandbox-tid – nok til en første evaluering med et par tusind løsninger på tariffen small. SDK-referencen dækker baggrundsopgaver og filoverførsler, og grænser og afregning for sandboxe har hele kvotetabellen.
Relateret: sandbox til AI-agenter og din første agentopgave i en sandbox.
Kommentarer
Ingen kommentarer endnu. Vær den første.