−25%

på Windows vid årsbetalning, till 31/10. Till paketen

EQVPS
Kom igång

Sandbox för LLM-utvärdering: 1 000 modellskrivna lösningar för ungefär en cent

Att bedöma en modell på programmeringsuppgifter innebär att köra tusentals program som ingen skrivit för hand. Kör dem i engångssandboxar på microVM i stället för på din laptop – debitering per sekund, med en ärlig kommentar om genomströmning och CPU-gränser.

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.

ArbetslastTariffTidUngefärlig kostnad
1 000 korta Python-lösningarsmall (0.5 vCPU, 1 GB)~20 min$0.011
5 000 lösningar, numpy tillåtetstandard (1 vCPU, 2 GB)~2 h$0.13
Bygge + tester per lösningplus (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.

Redo att distribuera? Betala med krypto, ingen KYC — igång på ungefär en minut.

Distribuera nu →

FAQ

Varför behöver en utvärdering alls en sandbox?

Eftersom du kör tusentals program som en modell har skrivit. De flesta är ofarliga, vissa loopar för evigt, några raderar filer eller öppnar nätverksanslutningar. På din arbetsstation är det en risk för dina data; i en sandbox är det en misslyckad lösning.

Ska jag skapa en sandbox per lösning?

Oftast inte. Att skapa en sandbox tar ungefär en sekund och debiteras för minst 60 sekunder, så en sandbox per lösning slösar med båda. Kör en harness i en sandbox som kör många lösningar, var och en med egen timeout, och skapa om sandboxen mellan modeller eller när något förstör den.

Hur snabbt kan jag gå?

Ett konto kör högst 2 kommandon samtidigt över upp till 20 sandboxar. Det praktiska mönstret är några sandboxar där din harness körs som bakgrundsuppgift och arbetar sig igenom en del av datasetet.

Kan jag köra en lång benchmark i timmar?

Som bakgrundsuppgift ja, tills sandboxens livslängd tar slut (24 timmar för en tillfällig). Men en sandbox som hålls på full CPU i mer än 15 minuter räknas som missbruk. Utvärderingar i skurar går bra; jämn sifferknackning i timmar hör hemma på en VPS.

Kan sandboxen anropa min modells API?

Utgående internet är öppet, så ja. Skicka API-nyckeln som miljövariabel för sandboxen – den lagras krypterad och returneras aldrig av API:t – i stället för att klistra in den i genererad kod.

Kommentarer

Inga kommentarer än. Bli först.

Lämna en kommentar

Kommentarer modereras innan de visas.