−25%

no Windows com pagamento anual, até 31/10. Ver planos

EQVPS
Começar

Sandbox para avaliação de LLM: 1.000 soluções escritas por um modelo por cerca de um centavo

Avaliar um modelo em tarefas de programação significa executar milhares de programas que ninguém escreveu à mão. Rode-os em sandboxes descartáveis em microVM em vez do seu notebook — cobrança por segundo, com uma nota honesta sobre throughput e limites de CPU.

Benchmarks de código têm um segredo sujo: para pontuar um modelo, é preciso executar o que ele escreveu. Um pass@k sobre algumas centenas de problemas com dez soluções cada são milhares de programas recém-gerados — e você nunca faria curl | bash com nenhum deles vindo de um desconhecido.

A maioria começa no notebook com um subprocess.run e um timeout. Funciona até uma solução escrever um arquivo de 40 GB, criar processos até travar a máquina ou ler silenciosamente o seu diretório pessoal. A solução não é um timeout mais esperto. É executar as soluções num lugar com o qual você não se importa.

A configuração que funciona

Uma sandbox é uma microVM Firecracker com Python 3.12, Node.js 22 e bash, iniciada em cerca de um segundo e apagada quando você termina. A internet de saída funciona, a de entrada não, e não há nada seu lá dentro.

A armadilha é tratar uma sandbox como uma chamada de função. Cada uma é cobrada por no mínimo 60 segundos e leva um segundo para iniciar, então uma sandbox por solução é lento e caro. Em vez disso, coloque o harness lá 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")

Lá dentro, harness.py executa cada solução num subprocesso com seu próprio timeout curto e registra pass, fail ou timeout. Uma solução que se comporta mal mata o próprio subprocesso, não a execução. Se uma solução conseguir quebrar a própria sandbox, você perde uma fatia, recria a sandbox e continua.

Os arquivos vão até 5 MB por transferência, então divida datasets grandes em fatias — algo que você quer de qualquer forma para o paralelismo.

Throughput, com honestidade

Uma conta pode ter até 20 sandboxes, mas 2 comandos executam ao mesmo tempo. Uma tarefa em segundo plano conta enquanto roda. Então uma avaliação rápida tem a forma de duas sandboxes, cada uma processando sua fatia em segundo plano, e não vinte sandboxes brigando por dois espaços.

Para benchmarks de código típicos, isso é mais que suficiente: a maioria das soluções termina em menos de um segundo, e uma sandbox processa milhares por hora. Se você precisa avaliar muitos modelos ao mesmo tempo contra uma suíte enorme, vai bater no teto. Nesse ponto, um VPS com o seu próprio isolamento é a ferramenta melhor.

A regra de CPU que você deve conhecer

As sandboxes são feitas para trabalho em rajadas. Uma sandbox mantida acima de 90% de CPU por mais de 15 minutos é tratada como abuso — uma sandbox efêmera é parada. Avaliações normais, que alternam execuções rápidas com a contabilidade dos resultados, nem chegam perto. Um benchmark que queima CPU no máximo por horas (compilar um projeto grande por solução, testes de estresse numéricos) chega. Para isso, contrate um VPS por mês: o plano AI agent oferece 4 vCPU e 4 GB por $10.

Quanto custa uma execução

Você paga por segundo os vCPU e a RAM do plano, mínimo de 60 segundos, a partir de um saldo pré-pago.

CargaPlanoTempoCusto aprox.
1.000 soluções curtas em Pythonsmall (0.5 vCPU, 1 GB)~20 min$0.011
5.000 soluções, numpy permitidostandard (1 vCPU, 2 GB)~2 h$0.13
Build + testes por soluçãoplus (2 vCPU, 4 GB)~3 h$0.40

As chamadas ao modelo que geram essas soluções vão custar mais do que a execução — normalmente uma ordem de grandeza a mais.

Chaves e reprodutibilidade

Se o harness chama a API de um modelo de dentro da sandbox — por exemplo, para pontuação no estilo LLM-as-judge —, passe a chave como variável de ambiente da sandbox. Os valores são armazenados criptografados, nunca vão para logs, e a API devolve apenas os nomes das variáveis.

Para reprodutibilidade, fixe as versões dos pacotes no seu harness e registre o plano da sandbox junto com os resultados. Toda sandbox inicia a partir da mesma imagem limpa, o que tira dos seus números a variável "funcionava no meu notebook". Sinceramente, só isso já justifica a mudança.

Comece pela página de sandboxes e pela documentação das sandboxes. Contas novas recebem $1 de tempo de sandbox — o suficiente para uma primeira avaliação com alguns milhares de soluções no plano small. A referência do SDK cobre tarefas em segundo plano e transferência de arquivos, e limites e cobrança das sandboxes traz a tabela completa de cotas.

Relacionado: sandbox para agentes de IA e sua primeira tarefa de agente numa sandbox.

Pronto para implantar? Pague com cripto, sem KYC — online em cerca de um minuto.

Implantar agora →

FAQ

Por que uma avaliação precisa de sandbox?

Porque você executa milhares de programas escritos por um modelo. A maioria é inofensiva, alguns entram em loop infinito e uns poucos apagam arquivos ou abrem conexões de rede. Na sua estação de trabalho isso é um risco para os seus dados; numa sandbox é só uma solução que falhou.

Devo criar uma sandbox por solução?

Normalmente não. Criar uma sandbox leva cerca de um segundo e é cobrado por no mínimo 60 segundos, então uma sandbox por solução desperdiça as duas coisas. Rode dentro de uma sandbox um harness que executa muitas soluções, cada uma com seu próprio timeout, e recrie a sandbox entre modelos ou quando algo a quebrar.

Quão rápido posso ir?

Uma conta executa no máximo 2 comandos ao mesmo tempo, distribuídos em até 20 sandboxes. O padrão prático são poucas sandboxes, cada uma rodando seu harness como tarefa em segundo plano sobre uma fatia do dataset.

Posso rodar um benchmark longo por horas?

Como tarefa em segundo plano, sim, até o fim da vida da sandbox (24 horas numa efêmera). Mas uma sandbox mantida com CPU no máximo por mais de 15 minutos é tratada como abuso. Avaliações em rajadas são normais; processamento pesado e constante por horas é trabalho para um VPS.

A sandbox pode chamar a API do meu modelo?

A internet de saída está aberta, então sim. Passe a chave de API como variável de ambiente da sandbox — ela é armazenada criptografada e nunca é devolvida pela API — em vez de colá-la no código gerado.

Comentários

Nenhum comentário ainda. Seja o primeiro.

Deixe um comentário

Os comentários são moderados antes de aparecerem.