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.
| Carico | Tariffa | Tempo | Costo indicativo |
|---|---|---|---|
| 1.000 soluzioni Python brevi | small (0.5 vCPU, 1 GB) | ~20 min | $0.011 |
| 5.000 soluzioni, numpy consentito | standard (1 vCPU, 2 GB) | ~2 h | $0.13 |
| Build + test per soluzione | plus (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.
Commenti
Ancora nessun commento. Sii il primo.