−25%

su Windows con pagamento annuale, fino al 31/10. Vai ai piani

EQVPS
Inizia

Sandbox per la valutazione di LLM: 1.000 soluzioni scritte da un modello per circa un centesimo

Valutare un modello su compiti di programmazione significa eseguire migliaia di programmi che nessuno ha scritto a mano. Eseguili in sandbox usa e getta su microVM invece che sul tuo portatile: fatturazione al secondo, con una nota onesta su throughput e limiti di CPU.

I benchmark di codice hanno un segreto scomodo: per dare un voto a un modello devi eseguire ciò che ha scritto. Un pass@k su qualche centinaio di problemi con dieci soluzioni ciascuno significa migliaia di programmi appena generati, e non faresti mai curl | bash con nessuno di questi se venisse da uno sconosciuto.

Quasi tutti iniziano sul portatile con un subprocess.run e un timeout. Funziona finché una soluzione non scrive un file da 40 GB, non crea processi fino a bloccare la macchina o non legge di nascosto la tua home. La soluzione non è un timeout più furbo. È eseguire le soluzioni in un posto che non ti importa.

La configurazione che funziona

Una sandbox è una microVM Firecracker con Python 3.12, Node.js 22 e bash, avviata in circa un secondo ed eliminata quando hai finito. L'uscita verso internet funziona, l'ingresso no, e dentro non c'è niente di tuo.

La trappola è trattare una sandbox come una chiamata di funzione. Ognuna è fatturata per almeno 60 secondi e impiega un secondo ad avviarsi, quindi una sandbox per soluzione è lento e dispendioso. Metti invece l'harness all'interno:

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

All'interno, harness.py esegue ogni soluzione in un sottoprocesso con il proprio timeout breve e registra pass, fail o timeout. Una soluzione che si comporta male uccide il proprio sottoprocesso, non l'esecuzione. Se una soluzione riesce a rompere la sandbox stessa, perdi una fetta, ricrei la sandbox e continui.

I file arrivano fino a 5 MB per trasferimento, quindi dividi i dataset grandi in fette: cosa che vuoi comunque fare per il parallelismo.

Throughput, onestamente

Un account può avere fino a 20 sandbox, ma 2 comandi vengono eseguiti contemporaneamente. Un'attività in background conta finché è in esecuzione. Una valutazione veloce ha quindi la forma di due sandbox che macinano ciascuna la propria fetta in background, non di venti sandbox che si contendono due slot.

Per i benchmark di codice tipici è più che sufficiente: la maggior parte delle soluzioni termina in meno di un secondo e una sandbox ne smaltisce migliaia in un'ora. Se devi valutare molti modelli contemporaneamente su una suite enorme, toccherai il soffitto. A quel punto un VPS con il tuo isolamento è lo strumento migliore.

La regola sulla CPU da conoscere

Le sandbox sono pensate per carichi a raffiche. Una sandbox tenuta sopra il 90% di CPU per oltre 15 minuti è considerata un abuso: una sandbox effimera viene fermata. Le normali valutazioni, che alternano esecuzioni rapide e contabilità dei risultati, non ci si avvicinano. Un benchmark che brucia tutta la CPU per ore (compilare un grande progetto per ogni soluzione, stress test numerici) sì. Per questo prendi un VPS al mese: la tariffa AI agent offre 4 vCPU e 4 GB a $10.

Quanto costa un'esecuzione

Paghi al secondo vCPU e RAM della tariffa, minimo 60 secondi, da un credito prepagato.

CaricoTariffaTempoCosto indicativo
1.000 soluzioni Python brevismall (0.5 vCPU, 1 GB)~20 min$0.011
5.000 soluzioni, numpy consentitostandard (1 vCPU, 2 GB)~2 h$0.13
Build + test per soluzioneplus (2 vCPU, 4 GB)~3 h$0.40

Le chiamate al modello che generano quelle soluzioni ti costeranno più dell'esecuzione, di solito di un ordine di grandezza.

Chiavi e riproducibilità

Se l'harness chiama l'API di un modello dall'interno della sandbox — per esempio per una valutazione in stile LLM-as-judge —, passa la chiave come variabile d'ambiente della sandbox. I valori sono salvati cifrati, mai registrati nei log, e l'API restituisce solo i nomi delle variabili.

Per la riproducibilità, fissa le versioni dei pacchetti nel tuo harness e registra la tariffa della sandbox insieme ai risultati. Ogni sandbox parte dalla stessa immagine pulita, e questo toglie dai tuoi numeri la variabile «sul mio portatile funzionava». Sinceramente, già solo questo vale il passaggio.

Parti dalla pagina delle sandbox e dalla documentazione delle sandbox. I nuovi account ricevono $1 di tempo sandbox, abbastanza per una prima valutazione di qualche migliaio di soluzioni sulla tariffa small. Il riferimento dell'SDK copre le attività in background e il trasferimento di file, e limiti e fatturazione delle sandbox riporta la tabella completa delle quote.

Correlati: sandbox per agenti IA e il primo compito di un agente in una sandbox.

Pronto a fare il deploy? Paga in crypto, niente KYC — online in circa un minuto.

Fai il deploy ora →

FAQ

Perché una valutazione ha bisogno di una sandbox?

Perché esegui migliaia di programmi scritti da un modello. La maggior parte è innocua, alcuni vanno in loop infinito, pochi cancellano file o aprono connessioni di rete. Sulla tua workstation è un rischio per i tuoi dati; in una sandbox è solo una soluzione fallita.

Devo creare una sandbox per ogni soluzione?

Di solito no. Creare una sandbox richiede circa un secondo e viene fatturata per almeno 60 secondi, quindi una sandbox per soluzione spreca entrambe le cose. Esegui in una sandbox un harness che lancia molte soluzioni, ognuna con il proprio timeout, e ricrea la sandbox tra un modello e l'altro o quando qualcosa la rompe.

Quanto veloce posso andare?

Un account esegue al massimo 2 comandi contemporaneamente su un massimo di 20 sandbox. Lo schema pratico è qualche sandbox, ognuna con il tuo harness in esecuzione come attività in background su una fetta del dataset.

Posso eseguire un benchmark lungo per ore?

Come attività in background sì, fino alla fine della vita della sandbox (24 ore per una effimera). Ma una sandbox tenuta a pieno carico di CPU per più di 15 minuti è considerata un abuso. Le valutazioni a raffiche vanno bene; il calcolo intensivo e costante per ore è lavoro da VPS.

La sandbox può chiamare l'API del mio modello?

L'accesso a internet in uscita è aperto, quindi sì. Passa la chiave API come variabile d'ambiente della sandbox — viene salvata cifrata e l'API non la restituisce mai — invece di incollarla nel codice generato.

Commenti

Ancora nessun commento. Sii il primo.

Lascia un commento

I commenti sono moderati prima di comparire.