−25%

en Windows con pago anual, hasta el 31/10. Ver planes

EQVPS
Empezar

Sandbox para evaluar LLM: 1.000 soluciones escritas por un modelo por un céntimo aproximadamente

Evaluar un modelo en tareas de programación significa ejecutar miles de programas que nadie escribió a mano. Ejecútalos en sandboxes desechables sobre microVM y no en tu portátil: facturación por segundo, con una nota honesta sobre el rendimiento y los límites de CPU.

Los benchmarks de código tienen un secreto incómodo: para puntuar un modelo hay que ejecutar lo que escribió. Un pass@k sobre unos cientos de problemas con diez soluciones cada uno son miles de programas recién generados, y no harías curl | bash con ninguno de ellos si viniera de un desconocido.

La mayoría empieza en su portátil con un subprocess.run y un timeout. Funciona hasta que una solución escribe un archivo de 40 GB, lanza procesos hasta bloquear la máquina o lee en silencio tu directorio personal. La solución no es un timeout más ingenioso. Es ejecutar las soluciones en un sitio que no te importe.

La configuración que funciona

Una sandbox es una microVM Firecracker con Python 3.12, Node.js 22 y bash, que arranca en un segundo aproximadamente y se borra cuando terminas. La salida a internet funciona, la entrada no, y no hay nada tuyo dentro.

La trampa es tratar una sandbox como una llamada a función. Cada una se factura un mínimo de 60 segundos y tarda un segundo en arrancar, así que una sandbox por solución es lento y caro. En su lugar, mete el harness dentro:

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

Dentro, harness.py ejecuta cada solución en un subproceso con su propio timeout corto y anota pass, fail o timeout. Una solución que se porta mal mata su propio subproceso, no la ejecución. Si una solución consigue romper la propia sandbox, pierdes una parte, recreas la sandbox y sigues.

Los archivos llegan hasta 5 MB por transferencia, así que divide los datasets grandes en partes, algo que de todos modos quieres para el paralelismo.

Rendimiento, con honestidad

Una cuenta puede tener hasta 20 sandboxes, pero 2 comandos se ejecutan a la vez. Una tarea en segundo plano cuenta mientras se ejecuta. Así que una evaluación rápida son dos sandboxes que procesan su parte en segundo plano, no veinte sandboxes peleándose por dos huecos.

Para los benchmarks de código habituales es más que suficiente: la mayoría de las soluciones terminan en menos de un segundo, y una sandbox procesa miles por hora. Si tienes que evaluar muchos modelos a la vez contra una suite enorme, chocarás con el techo. En ese punto, un VPS con tu propio aislamiento es mejor herramienta.

La regla de CPU que debes conocer

Las sandboxes están pensadas para trabajo a ráfagas. Una sandbox con más del 90 % de CPU durante más de 15 minutos se considera abuso: una sandbox efímera se detiene. Las evaluaciones normales, que alternan ejecuciones rápidas con la contabilidad de resultados, no se acercan a eso. Un benchmark que quema toda la CPU durante horas (compilar un proyecto grande por solución, pruebas de estrés numéricas), sí. Para eso, contrata un VPS por meses: la tarifa AI agent da 4 vCPU y 4 GB por $10.

Cuánto cuesta una ejecución

Pagas por segundo los vCPU y la RAM de la tarifa, mínimo 60 segundos, desde un saldo prepago.

CargaTarifaTiempoCoste aprox.
1.000 soluciones cortas en Pythonsmall (0.5 vCPU, 1 GB)~20 min$0.011
5.000 soluciones, numpy permitidostandard (1 vCPU, 2 GB)~2 h$0.13
Build + tests por soluciónplus (2 vCPU, 4 GB)~3 h$0.40

Las llamadas al modelo que generan esas soluciones te costarán más que la ejecución, normalmente un orden de magnitud más.

Claves y reproducibilidad

Si el harness llama a la API de un modelo desde la sandbox —por ejemplo, para puntuar al estilo LLM-as-judge—, pasa la clave como variable de entorno de la sandbox. Los valores se guardan cifrados, nunca se registran en logs y la API solo devuelve los nombres de las variables.

Para la reproducibilidad, fija las versiones de los paquetes en tu harness y anota la tarifa de la sandbox junto a los resultados. Cada sandbox arranca desde la misma imagen limpia, lo que elimina de tus cifras la variable «en mi portátil funcionaba». Sinceramente, solo por eso ya merece la pena el cambio.

Empieza por la página de sandboxes y la documentación de sandboxes. Las cuentas nuevas reciben $1 de tiempo de sandbox, suficiente para una primera evaluación de unos miles de soluciones en la tarifa small. La referencia del SDK cubre las tareas en segundo plano y la transferencia de archivos, y límites y facturación de las sandboxes tiene la tabla completa de cuotas.

Relacionado: sandbox para agentes de IA y tu primera tarea de agente en una sandbox.

¿Listo para desplegar? Paga en cripto, sin KYC — en línea en aproximadamente un minuto.

Desplegar →

Preguntas frecuentes

¿Por qué una evaluación necesita una sandbox?

Porque ejecutas miles de programas escritos por un modelo. La mayoría son inofensivos, algunos entran en bucle infinito y unos pocos borran archivos o abren conexiones de red. En tu estación de trabajo eso es un riesgo para tus datos; en una sandbox es una solución fallida.

¿Debo crear una sandbox por solución?

Normalmente no. Crear una sandbox lleva un segundo aproximadamente y se factura un mínimo de 60 segundos, así que una sandbox por solución desperdicia ambas cosas. Ejecuta dentro de una sandbox un harness que lance muchas soluciones, cada una con su propio timeout, y recrea la sandbox entre modelos o cuando algo la rompa.

¿Qué velocidad puedo alcanzar?

Una cuenta ejecuta como máximo 2 comandos a la vez entre hasta 20 sandboxes. El patrón práctico son unas pocas sandboxes, cada una ejecutando tu harness como tarea en segundo plano sobre una parte del dataset.

¿Puedo ejecutar un benchmark largo durante horas?

Como tarea en segundo plano, sí, hasta el final de la vida de la sandbox (24 horas en una efímera). Pero una sandbox con la CPU al máximo durante más de 15 minutos se considera abuso. Las evaluaciones a ráfagas están bien; el cálculo intensivo y sostenido durante horas corresponde a un VPS.

¿Puede la sandbox llamar a la API de mi modelo?

La salida a internet está abierta, así que sí. Pasa la clave de API como variable de entorno de la sandbox —se guarda cifrada y la API nunca la devuelve— en lugar de pegarla en el código generado.

Comentarios

Aún no hay comentarios. Sé el primero.

Deja un comentario

Los comentarios se moderan antes de aparecer.