−25%

la planurile Windows anuale, până pe 31 oct. Vezi planurile

EQVPS
Începe

Sandbox pentru evaluarea LLM: 1.000 de mostre scrise de model pentru aproximativ un cent

Să notezi un model pe sarcini de programare înseamnă să execuți mii de programe pe care nu le-a scris nimeni de mână. Rulează-le în sandboxuri microVM de unică folosință, nu pe laptop — facturare la secundă, cu o notă cinstită despre debit și limitele de CPU.

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ăTarifTimpCost aproximativ
1.000 de mostre scurte în Pythonsmall (0,5 vCPU, 1 GB)~20 min$0.011
5.000 de mostre, cu numpy permisstandard (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.

Gata de deploy? Plătește cu cripto, fără KYC — online în aproximativ un minut.

Pornește acum →

Întrebări frecvente

De ce are nevoie o evaluare de un sandbox?

Pentru că execuți mii de programe scrise de un model. Cele mai multe sunt inofensive, unele rulează la infinit, câteva șterg fișiere sau deschid conexiuni de rețea. Pe stația ta de lucru e un risc pentru date; într-un sandbox e o mostră picată.

Să creez câte un sandbox pentru fiecare mostră?

De obicei, nu. Crearea unui sandbox durează în jur de o secundă și se facturează minimum 60 de secunde, deci un sandbox per mostră risipește și una, și alta. Rulează un harness într-un singur sandbox care execută multe mostre, fiecare cu propriul timeout, și recreează sandboxul între modele sau când ceva îl strică.

Cât de repede pot merge?

Un cont rulează cel mult 2 comenzi în același timp, pe până la 20 de sandboxuri. Tiparul practic e câteva sandboxuri, fiecare rulând harnessul ca sarcină de fundal, care își parcurge felia din setul de date.

Pot rula un benchmark lung, ore întregi?

Ca sarcină de fundal, da, până la durata de viață a sandboxului (24 de ore pentru unul efemer). Dar un sandbox ținut la CPU complet mai mult de 15 minute e tratat ca abuz. Rulările de evaluare în rafale sunt în regulă; calculul constant, ore la rând, își are locul pe un VPS.

Poate sandboxul să apeleze API-ul modelului meu?

Internetul spre exterior e deschis, deci da. Dă cheia API ca variabilă de mediu a sandboxului — e stocată criptat și nu e returnată niciodată de API — în loc s-o lipești în codul generat.

Comentarii

Încă nu există comentarii. Fii primul.

Lasă un comentariu

Comentariile sunt moderate înainte să apară.