Kodbenchmarks har en smutsig hemlighet: för att bedöma en modell måste du köra det den skrev. En pass@k-körning över några hundra uppgifter med tio lösningar vardera är tusentals nygenererade program – och du skulle aldrig köra curl | bash på ett enda av dem från en främling.
De flesta börjar på laptopen med subprocess.run och en timeout. Det fungerar tills en lösning skriver en fil på 40 GB, forkar tills maskinen stannar eller tyst läser din hemkatalog. Lösningen är inte en smartare timeout. Det är att köra lösningarna någonstans där det inte spelar någon roll.
Upplägget som fungerar
En sandbox är en Firecracker-microVM med Python 3.12, Node.js 22 och bash, startad på ungefär en sekund och raderad när du är klar. Utgående internet fungerar, inkommande inte, och inget av ditt finns där inne.
Fällan är att behandla en sandbox som ett funktionsanrop. Varje sandbox debiteras för minst 60 sekunder och tar en sekund att starta, så en sandbox per lösning är långsamt och slösaktigt. Lägg i stället harnessen inuti:
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")
Inuti kör harness.py varje lösning i en underprocess med egen kort timeout och noterar pass, fail eller timeout. En lösning som spårar ur dödar sin egen underprocess, inte körningen. Lyckas en lösning förstöra själva sandboxen förlorar du en del, skapar om sandboxen och fortsätter.
Filer går upp till 5 MB per överföring, så dela upp stora dataset i delar – det vill du ändå för parallellismens skull.
Genomströmning, ärligt
Ett konto kan ha upp till 20 sandboxar, men 2 kommandon körs samtidigt. En bakgrundsuppgift räknas medan den körs. En snabb utvärdering ser alltså ut som två sandboxar som var och en mal sig igenom sin del i bakgrunden, inte tjugo sandboxar som slåss om två platser.
För typiska kodbenchmarks räcker det gott: de flesta lösningar blir klara på under en sekund, och en sandbox hinner med tusentals i timmen. Behöver du utvärdera många modeller samtidigt mot en enorm svit slår du i taket. Då är en VPS med din egen isolering det bättre verktyget.
CPU-regeln du bör känna till
Sandboxar är byggda för arbete i skurar. En sandbox som ligger över 90 % CPU i mer än 15 minuter räknas som missbruk – en tillfällig sandbox stoppas. Vanliga utvärderingar, som växlar mellan snabba körningar och bokföring av resultat, kommer inte i närheten. En benchmark som bränner full CPU i timmar (kompilerar ett stort projekt per lösning, numeriska stresstester) gör det. Ta en VPS per månad för det: tariffen AI agent ger 4 vCPU och 4 GB för $10.
Vad en körning kostar
Du betalar per sekund för tariffens vCPU och RAM, minst 60 sekunder, från ett förbetalt saldo.
| Arbetslast | Tariff | Tid | Ungefärlig kostnad |
|---|---|---|---|
| 1 000 korta Python-lösningar | small (0.5 vCPU, 1 GB) | ~20 min | $0.011 |
| 5 000 lösningar, numpy tillåtet | standard (1 vCPU, 2 GB) | ~2 h | $0.13 |
| Bygge + tester per lösning | plus (2 vCPU, 4 GB) | ~3 h | $0.40 |
Modellanropen som genererar lösningarna kostar dig mer än körningen – oftast en storleksordning mer.
Nycklar och reproducerbarhet
Om harnessen anropar ett modell-API inifrån sandboxen – till exempel för bedömning i LLM-as-judge-stil – skicka nyckeln som miljövariabel för sandboxen. Värdena lagras krypterade, loggas aldrig, och API:t returnerar bara variabelnamnen.
För reproducerbarhet låser du paketversioner i din harness och noterar sandboxens tariff tillsammans med resultaten. Varje sandbox startar från samma rena image, vilket tar bort variabeln ”funkade på min laptop” ur dina siffror. Ärligt talat är bara det värt bytet.
Börja med sandboxsidan och sandboxdokumentationen. Nya konton får $1 i sandboxtid – nog för en första utvärdering med några tusen lösningar på tariffen small. SDK-referensen går igenom bakgrundsuppgifter och filöverföringar, och gränser och debitering för sandboxar har hela kvottabellen.
Relaterat: sandbox för AI-agenter och din första agentuppgift i en sandbox.
Kommentarer
Inga kommentarer än. Bli först.