−25%

sur Windows en paiement annuel, jusqu'au 31/10. Voir les offres

EQVPS
Commencer

Sandbox pour l'évaluation de LLM : 1 000 solutions écrites par un modèle pour environ un centime

Évaluer un modèle sur des tâches de programmation, c'est exécuter des milliers de programmes que personne n'a écrits à la main. Lancez-les dans des sandboxes jetables sur microVM plutôt que sur votre portable — facturation à la seconde, avec une note honnête sur le débit et les limites CPU.

Les benchmarks de code ont un secret honteux : pour noter un modèle, il faut exécuter ce qu'il a écrit. Un pass@k sur quelques centaines de problèmes avec dix solutions chacun, ce sont des milliers de programmes fraîchement générés — et vous ne feriez jamais curl | bash sur un seul d'entre eux venant d'un inconnu.

La plupart des gens commencent sur leur portable avec un subprocess.run et un timeout. Ça marche jusqu'à ce qu'une solution écrive un fichier de 40 GB, forke jusqu'à bloquer la machine ou lise discrètement votre répertoire personnel. La solution n'est pas un timeout plus malin. C'est d'exécuter les solutions là où ça ne vous coûte rien.

La configuration qui fonctionne

Une sandbox est une microVM Firecracker avec Python 3.12, Node.js 22 et bash, démarrée en une seconde environ et supprimée quand vous avez fini. L'Internet sortant fonctionne, l'entrant non, et rien de ce qui vous appartient ne s'y trouve.

Le piège : traiter une sandbox comme un appel de fonction. Chacune est facturée au moins 60 secondes et met une seconde à démarrer, donc une sandbox par solution est lente et coûteuse. Placez plutôt le harnais à l'intérieur :

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'intérieur, harness.py lance chaque solution dans un sous-processus avec son propre timeout court et enregistre pass, fail ou timeout. Une solution qui se comporte mal tue son propre sous-processus, pas l'exécution. Si une solution parvient à casser la sandbox elle-même, vous perdez une tranche, recréez la sandbox et continuez.

Les fichiers vont jusqu'à 5 MB par transfert : découpez donc les gros jeux de données en tranches — ce que vous voulez de toute façon pour le parallélisme.

Le débit, honnêtement

Un compte peut détenir jusqu'à 20 sandboxes, mais 2 commandes s'exécutent en même temps. Une tâche de fond compte tant qu'elle tourne. Une évaluation rapide ressemble donc à deux sandboxes qui moulinent chacune leur tranche en arrière-plan, pas à vingt sandboxes qui se battent pour deux emplacements.

Pour les benchmarks de code courants, c'est largement suffisant : la plupart des solutions terminent en moins d'une seconde, et une sandbox en traite des milliers par heure. Si vous devez évaluer de nombreux modèles à la fois sur une suite énorme, vous toucherez le plafond. À ce stade, un VPS avec votre propre isolation est le meilleur outil.

La règle CPU à connaître

Les sandboxes sont conçues pour un travail par à-coups. Une sandbox maintenue au-dessus de 90 % de CPU pendant plus de 15 minutes est considérée comme un abus — une sandbox éphémère est arrêtée. Les évaluations normales, qui alternent exécutions rapides et comptabilité des résultats, n'en approchent pas. Un benchmark qui brûle tout le CPU pendant des heures (compiler un gros projet par solution, tests de charge numériques), si. Pour cela, prenez un VPS au mois : le tarif AI agent offre 4 vCPU et 4 GB pour $10.

Ce que coûte une exécution

Vous payez à la seconde les vCPU et la RAM du tarif, 60 secondes minimum, depuis un solde prépayé.

ChargeTarifDuréeCoût approximatif
1 000 courtes solutions Pythonsmall (0.5 vCPU, 1 GB)~20 min$0.011
5 000 solutions, numpy autoriséstandard (1 vCPU, 2 GB)~2 h$0.13
Build + tests par solutionplus (2 vCPU, 4 GB)~3 h$0.40

Les appels au modèle qui génèrent ces solutions vous coûteront plus cher que leur exécution — en général d'un ordre de grandeur.

Clés et reproductibilité

Si le harnais appelle une API de modèle depuis la sandbox — par exemple pour une notation de type LLM-as-judge —, passez la clé comme variable d'environnement de la sandbox. Les valeurs sont stockées chiffrées, jamais journalisées, et l'API ne renvoie que les noms des variables.

Pour la reproductibilité, figez les versions des paquets dans votre harnais et notez le tarif de la sandbox avec les résultats. Chaque sandbox démarre de la même image propre, ce qui retire la variable « ça marchait sur mon portable » de vos chiffres. Franchement, rien que pour ça, le changement vaut le coup.

Commencez par la page des sandboxes et la documentation des sandboxes. Les nouveaux comptes reçoivent $1 de temps de sandbox — assez pour une première évaluation de quelques milliers de solutions sur le tarif small. La référence du SDK couvre les tâches de fond et les transferts de fichiers, et limites et facturation des sandboxes donne le tableau complet des quotas.

À lire aussi : sandbox pour agents IA et votre première tâche d'agent dans une sandbox.

Prêt à déployer ? Payez en crypto, sans KYC — en ligne en une minute environ.

Déployer →

FAQ

Pourquoi une évaluation a-t-elle besoin d'une sandbox ?

Parce que vous exécutez des milliers de programmes écrits par un modèle. La plupart sont inoffensifs, certains bouclent à l'infini, quelques-uns suppriment des fichiers ou ouvrent des connexions réseau. Sur votre poste, c'est un risque pour vos données ; dans une sandbox, c'est une solution échouée.

Faut-il créer une sandbox par solution ?

En général, non. Créer une sandbox prend environ une seconde et se facture au moins 60 secondes, donc une sandbox par solution gaspille les deux. Faites tourner dans une sandbox un harnais qui exécute de nombreuses solutions, chacune avec son propre timeout, et recréez la sandbox entre deux modèles ou quand quelque chose la casse.

Jusqu'à quelle vitesse puis-je aller ?

Un compte exécute au plus 2 commandes en même temps, sur jusqu'à 20 sandboxes. Le schéma pratique : quelques sandboxes, chacune faisant tourner votre harnais en tâche de fond sur une tranche du jeu de données.

Puis-je lancer un long benchmark pendant des heures ?

En tâche de fond, oui, jusqu'à la fin de vie de la sandbox (24 heures pour une éphémère). Mais une sandbox maintenue à pleine charge CPU plus de 15 minutes est considérée comme un abus. Les évaluations par à-coups vont bien ; le calcul intensif régulier pendant des heures relève d'un VPS.

La sandbox peut-elle appeler l'API de mon modèle ?

L'Internet sortant est ouvert, donc oui. Passez la clé d'API comme variable d'environnement de la sandbox — elle est stockée chiffrée et jamais renvoyée par l'API — plutôt que de la coller dans du code généré.

Commentaires

Pas encore de commentaires. Soyez le premier.

Laisser un commentaire

Les commentaires sont modérés avant leur publication.