Benchmarkurile de programare au un secret murdar: ca să notezi un model, trebuie să rulezi ce a scris. O rulare pass@k pe câteva sute de probleme, cu zece mostre fiecare, înseamnă mii de programe proaspăt generate — iar tu n-ai face niciodată curl | bash nici măcar uneia dintre ele, venită de la un necunoscut.
Cei mai mulți încep pe laptop, cu un subprocess.run și un timeout. Merge până când o mostră scrie un fișier de 40 GB, face fork până se blochează mașina sau îți citește discret directorul home. Soluția nu e un timeout mai deștept. E să rulezi mostrele undeva unde nu-ți pasă ce se întâmplă.
Configurarea care funcționează
Un sandbox e o microVM Firecracker cu Python 3.12, Node.js 22 și bash, pornită în aproximativ o secundă și ștearsă când ai terminat. Internetul spre exterior merge, cel spre interior nu, și nimic de-al tău nu stă înăuntru.
Capcana e să tratezi un sandbox ca pe un apel de funcție. Fiecare se facturează minimum 60 de secunde și pornește într-o secundă, deci un sandbox per mostră e lent și risipitor. Pune în schimb harnessul înăuntru:
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")
Înăuntru, harness.py rulează fiecare mostră într-un subproces cu propriul timeout scurt și notează trecut, picat sau timeout. O mostră care se poartă urât își omoară propriul subproces, nu rularea. Dacă o mostră reușește să strice chiar sandboxul, pierzi o felie, recreezi sandboxul și continui.
Fișierele merg până la 5 MB per transfer, așa că împarte seturile mari de date în felii — ceea ce oricum vrei pentru paralelism.
Debitul, cinstit
Un cont poate ține până la 20 de sandboxuri, dar 2 comenzi se execută în același timp. O sarcină de fundal contează cât rulează. Deci forma unei evaluări rapide e două sandboxuri, fiecare măcinându-și felia în fundal, nu douăzeci de sandboxuri care se bat pe două locuri.
Pentru benchmarkurile de cod obișnuite, ajunge din plin: majoritatea mostrelor se termină în sub o secundă, iar un sandbox trece prin mii într-o oră. Dacă trebuie să evaluezi multe modele deodată pe o suită uriașă, vei atinge plafonul. În punctul acela, un VPS care rulează propria ta izolare e unealta mai bună.
Regula de CPU pe care ar trebui s-o știi
Sandboxurile sunt construite pentru lucru în rafale. Unul ținut la peste 90% CPU mai mult de 15 minute e tratat ca abuz — un sandbox efemer e oprit. Rulările de evaluare normale, care alternează între execuții rapide și contabilitate, nici nu se apropie de prag. Un benchmark care arde CPU complet ore întregi (compilarea unui proiect mare per mostră, teste numerice de stres) îl va atinge. Pentru asta, ia un VPS cu luna: planul AI agent îți dă 4 vCPU și 4 GB pentru $10.
Cât costă o rulare
Plătești la secundă vCPU-ul și RAM-ul tarifului, minimum 60 de secunde, dintr-un sold preplătit.
| Sarcină | Tarif | Timp | Cost aproximativ |
|---|---|---|---|
| 1.000 de mostre scurte în Python | small (0,5 vCPU, 1 GB) | ~20 min | $0.011 |
| 5.000 de mostre, cu numpy permis | standard (1 vCPU, 2 GB) | ~2 h | $0.13 |
| Build + teste per mostră | plus (2 vCPU, 4 GB) | ~3 h | $0.40 |
Apelurile de model care generează mostrele te vor costa mai mult decât execuția — de obicei cu un ordin de mărime.
Chei și reproductibilitate
Dacă harnessul apelează un API de model din interiorul sandboxului — de exemplu, pentru notare de tip LLM-as-judge — dă cheia ca variabilă de mediu a sandboxului. Valorile sunt stocate criptat, nu ajung niciodată în loguri, iar API-ul returnează doar numele variabilelor.
Pentru reproductibilitate, fixează versiunile pachetelor în harness și notează tariful sandboxului alături de rezultate. Fiecare sandbox pornește din aceeași imagine curată, ceea ce scoate variabila „la mine pe laptop a mers” din cifrele tale. Sincer, doar asta merită schimbarea.
Pornește de la pagina sandboxurilor și documentația sandboxurilor. Conturile noi primesc $1 de timp în sandbox — destul pentru o primă rulare de evaluare de câteva mii de mostre pe tariful small. Referința SDK acoperă sarcinile de fundal și transferurile de fișiere, iar limitele și facturarea sandboxurilor au tabelul complet al cotelor.
Legate: sandbox pentru agenți AI și prima ta sarcină de agent într-un sandbox.
Comentarii
Încă nu există comentarii. Fii primul.