−25%

op Windows bij jaarbetaling, tot 31/10. Naar de pakketten

EQVPS
Aan de slag

Sandbox voor LLM-evaluatie: 1.000 door een model geschreven oplossingen voor ongeveer een cent

Een model beoordelen op programmeertaken betekent duizenden programma's uitvoeren die niemand met de hand schreef. Draai ze in wegwerp-sandboxes op microVM's in plaats van op uw laptop — facturering per seconde, met een eerlijke noot over doorvoer en CPU-limieten.

Codebenchmarks hebben een vies geheim: om een model te beoordelen moet u uitvoeren wat het schreef. Een pass@k-run over een paar honderd opgaven met elk tien oplossingen is duizenden vers gegenereerde programma's — en u zou er niet één van een onbekende met curl | bash starten.

De meeste mensen beginnen op hun laptop met een subprocess.run en een time-out. Dat werkt tot een oplossing een bestand van 40 GB schrijft, processen forkt tot de machine vastloopt of stilletjes uw thuismap leest. De oplossing is geen slimmere time-out. Het is de oplossingen draaien op een plek waar het u niet uitmaakt.

De opzet die werkt

Een sandbox is een Firecracker-microVM met Python 3.12, Node.js 22 en bash, gestart in ongeveer een seconde en verwijderd wanneer u klaar bent. Uitgaand internet werkt, inkomend niet, en er staat niets van u in.

De valkuil is een sandbox behandelen als een functieaanroep. Elke sandbox wordt minimaal 60 seconden gefactureerd en heeft een seconde nodig om te starten, dus één sandbox per oplossing is traag en verspillend. Zet het harness er in plaats daarvan in:

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")

Binnenin voert harness.py elke oplossing uit in een subproces met een eigen korte time-out en noteert pass, fail of timeout. Eén ontsporende oplossing beëindigt haar eigen subproces, niet de run. Weet een oplossing de sandbox zelf te slopen, dan verliest u één deel, maakt u de sandbox opnieuw aan en gaat u verder.

Bestanden gaan tot 5 MB per overdracht, dus splits grote datasets in delen — dat wilt u voor parallellisme toch al.

Doorvoer, eerlijk

Een account kan tot 20 sandboxes hebben, maar 2 opdrachten worden tegelijk uitgevoerd. Een achtergrondtaak telt zolang hij draait. Een snelle evaluatie ziet er dus uit als twee sandboxes die elk op de achtergrond hun deel wegwerken, niet als twintig sandboxes die vechten om twee plekken.

Voor gangbare codebenchmarks is dat ruim voldoende: de meeste oplossingen zijn binnen een seconde klaar, en één sandbox verwerkt er duizenden per uur. Moet u veel modellen tegelijk tegen een enorme suite evalueren, dan raakt u het plafond. Op dat punt is een VPS met uw eigen isolatie het betere gereedschap.

De CPU-regel die u moet kennen

Sandboxes zijn gebouwd voor werk met pieken. Een sandbox die langer dan 15 minuten boven 90% CPU staat, geldt als misbruik — een kortstondige sandbox wordt gestopt. Normale evaluaties, die snelle uitvoeringen afwisselen met administratie van resultaten, komen daar niet in de buurt. Een benchmark die urenlang volle CPU verbrandt (een groot project per oplossing compileren, numerieke stresstests), wel. Neem daarvoor een VPS per maand: het tarief AI agent biedt 4 vCPU en 4 GB voor $10.

Wat een run kost

U betaalt per seconde voor de vCPU en het RAM van het tarief, minimaal 60 seconden, vanuit een prepaid tegoed.

WerklastTariefTijdGeschatte kosten
1.000 korte Python-oplossingensmall (0.5 vCPU, 1 GB)~20 min$0.011
5.000 oplossingen, numpy toegestaanstandard (1 vCPU, 2 GB)~2 u$0.13
Builds + tests per oplossingplus (2 vCPU, 4 GB)~3 u$0.40

De modelaanroepen die deze oplossingen genereren, kosten u meer dan de uitvoering — meestal een orde van grootte meer.

Sleutels en reproduceerbaarheid

Roept het harness vanuit de sandbox een model-API aan — bijvoorbeeld voor beoordeling in LLM-as-judge-stijl —, geef de sleutel dan mee als omgevingsvariabele van de sandbox. Waarden worden versleuteld opgeslagen, nooit gelogd, en de API geeft alleen de namen van variabelen terug.

Voor reproduceerbaarheid pint u pakketversies vast in uw harness en legt u het sandboxtarief vast bij de resultaten. Elke sandbox start vanaf hetzelfde schone image, wat de variabele „werkte op mijn laptop” uit uw cijfers haalt. Eerlijk gezegd is alleen dat de overstap al waard.

Begin bij de sandboxpagina en de sandboxdocumentatie. Nieuwe accounts krijgen $1 aan sandboxtijd — genoeg voor een eerste evaluatie van een paar duizend oplossingen op het tarief small. De SDK-referentie behandelt achtergrondtaken en bestandsoverdracht, en limieten en facturering van sandboxes bevat de volledige tabel met quota.

Gerelateerd: sandbox voor AI-agents en uw eerste agenttaak in een sandbox.

Klaar om te implementeren? Betaal met crypto, geen KYC — live in ongeveer een minuut.

Nu implementeren →

FAQ

Waarom heeft een evaluatie überhaupt een sandbox nodig?

Omdat u duizenden programma's uitvoert die een model heeft geschreven. De meeste zijn onschuldig, sommige lopen eindeloos door, een paar verwijderen bestanden of openen netwerkverbindingen. Op uw werkstation is dat een risico voor uw gegevens; in een sandbox is het een mislukte oplossing.

Moet ik per oplossing één sandbox aanmaken?

Meestal niet. Een sandbox aanmaken duurt ongeveer een seconde en wordt minimaal 60 seconden gefactureerd, dus één sandbox per oplossing verspilt beide. Draai in één sandbox een harness dat veel oplossingen uitvoert, elk met een eigen time-out, en maak de sandbox opnieuw aan tussen modellen of wanneer iets hem kapotmaakt.

Hoe snel kan ik gaan?

Een account voert maximaal 2 opdrachten tegelijk uit, verdeeld over maximaal 20 sandboxes. Het praktische patroon is een paar sandboxes, die elk uw harness als achtergrondtaak draaien over een deel van de dataset.

Kan ik een lange benchmark urenlang draaien?

Als achtergrondtaak wel, tot de levensduur van de sandbox afloopt (24 uur bij een kortstondige). Maar een sandbox die langer dan 15 minuten op volle CPU staat, geldt als misbruik. Evaluaties met pieken zijn prima; urenlang gelijkmatig rekenwerk hoort op een VPS.

Kan de sandbox de API van mijn model aanroepen?

Uitgaand internet staat open, dus ja. Geef de API-sleutel mee als omgevingsvariabele van de sandbox — die wordt versleuteld opgeslagen en nooit door de API teruggegeven — in plaats van hem in gegenereerde code te plakken.

Reacties

Nog geen reacties. Wees de eerste.

Laat een reactie achter

Reacties worden gemodereerd voordat ze verschijnen.