Fonctionnement
SWE-bench évalue la capacité des modèles de langage à corriger de vrais bugs dans de vrais dépôts. Chaque tâche applique un patch, exécute la suite de tests et vérifie si le correctif fonctionne. Vous pouvez exécuter SWE-bench localement avec Docker, mais vous êtes alors limité par les ressources de votre machine. Les Sandbox CoreWeave vous permettent d’exécuter des évaluations à grande échelle sur l’infrastructure CoreWeave. Lancez simultanément des dizaines, voire des centaines de Sandbox, sans avoir à vous soucier de leur gestion. Chaque Sandbox démarre à partir d’une image prête à l’emploi issue du registre d’Epoch AI sur GitHub Container Registry (GHCR). C’est la plateforme de Sandbox, et non votre machine, qui récupère l’image : vous n’avez donc besoin ni de Docker ni d’une étape de compilation locale.Configuration
Suivez les étapes ci-dessous pour installer les outils requis et configurer l’authentification avant d’exécuter des évaluations.-
Préparez un environnement virtuel Python, puis installez le SDK et les dépendances d’évaluation :
-
Clonez le dépôt contenant les exemples de scripts d’évaluation :
- Clé API Forge
- Jeton d’accès à l’API CoreWeave
Installez l’intégration W&B et exportez votre clé API Forge :Dans
examples/swebench/run_evaluation.py, ajoutez AuthStrategy aux éléments importés depuis cwsandbox. Ajoutez auth=AuthStrategy.WANDB à l’appel SandboxDefaults(...) existant. L’authentification W&B est ainsi utilisée pour chaque Sandbox de la session d’évaluation, même si CWSANDBOX_API_KEY est également défini.placement_mode="cks" au même appel SandboxDefaults(...).
Démarrage rapide
Avant de passer à l’échelle, commencez par un run sur une seule instance afin de vérifier que votre environnement et vos identifiants d’authentification fonctionnent correctement, et qu’une sandbox peut démarrer à partir de son image GHCR. L’optiongold utilise le correctif du dataset dont on sait qu’il est correct :
Exécuter en parallèle
Exécutez plusieurs instances simultanément :Évaluer les prédictions du modèle
Pour tester la sortie d’un modèle personnalisé :Options
Ajuster les ressources
Par défaut, chaque sandbox dispose de 2 CPU et de 4Gi de mémoire. Modifiez ces valeurs dansrun_evaluation.py :
Fonctionnement
Cette section présente les rouages du script afin que vous puissiez l’adapter à vos propres flux de travail d’évaluation.Images de conteneur
Epoch AI héberge des images préconstruites sur GHCR. Chaque instance dispose de sa propre image, avec le dépôt extrait au bon commit, les dépendances installées et l’environnement de test prêt. Le nom de l’image respecte le format suivant :ghcr.io/epoch-research/swe-bench.eval.{arch}.{instance_id.lower()}:latest
Le script convertit l’ID de l’instance en minuscules pour le nom de l’image. Il tire arch de l’attribut arch de la spécification de test. Si cet attribut est absent, le script utilise x86_64.
La plateforme de sandbox récupère chaque image depuis GHCR au démarrage de la sandbox. Si vous utilisez votre propre capacité CKS, ce sont les nœuds de votre cluster qui récupèrent les images. Votre machine n’a besoin d’aucun accès à ghcr.io et aucune compilation locale n’est nécessaire.
Flux d’évaluation
Chaque instance passe par les étapes suivantes :
Les étapes 2 à 5 et 8 s’exécutent à distance, les étapes 1, 6 et 7 sur votre machine.
Exécution parallèle
Le script utiliseThreadPoolExecutor pour exécuter en parallèle les flux de travail des instances. Chaque thread fait avancer une instance tout au long de son flux de travail. Pendant qu’une instance exécute des tests, une autre peut appliquer son patch, une troisième effectuer l’évaluation en local et une quatrième démarrer. C’est ce chevauchement qui permet de gagner en rapidité.
Les résultats sont renvoyés via as_completed() au fur et à mesure que les flux de travail se terminent.
Nettoyage
Le script utilise uneSession de sandbox pour suivre les sandboxs. Lorsque la session se termine (fin normale, exception ou Ctrl+C), elle nettoie tous les sandboxs.
Sortie
Les résultats sont enregistrés dans{output-dir}/{run-id}/{model-name}/{instance-id}/ :
Format du rapport
report.json contient également "errored": true et une chaîne error_message. Les résultats des tests et sandbox_id peuvent alors être omis.
Ce format est compatible avec les outils standard de SWE-bench.
Dépannage
Échec de l’application du patch
SiAPPLY_PATCH_FAIL apparaît dans les journaux, le patch est probablement mal formé, cible le mauvais commit ou contient des erreurs de caractères d’espacement. Exécutez git apply --check en local pour identifier le problème. Vérifiez que l’ID d’instance correspond bien à celui de la prédiction.
Délais d’expiration des tests
Certaines suites de tests durent plus de 30 minutes. Le code généré par le modèle peut aussi contenir des boucles infinies. Si nécessaire, augmentez la valeur de--timeout ou consultez la sortie des tests pour identifier l’endroit où ils bloquent.
Erreurs de récupération d’image
Si la plateforme de sandbox ne parvient pas à récupérer l’image d’une instance, la sandbox correspondante ne démarre pas. Le script journalise l’erreur avec l’ID de l’instance, par exemple[astropy__astropy-12907] Error: ..., et l’enregistre dans le champ error_message du fichier report.json de cette instance. La récupération s’effectue sur l’infrastructure CoreWeave, et non sur votre machine : votre accès réseau local à ghcr.io n’est donc pas en cause. Lisez le message d’erreur, puis examinez les causes probables :
- Image introuvable : vérifiez qu’Epoch AI publie bien une image pour cet ID d’instance. Un ID d’instance absent du dataset
--datasetn’atteint jamais de sandbox : le script journaliseInstance IDs not found in datasetet l’ignore. - Votre propre capacité CKS : si vous définissez
placement_mode="cks", ce sont les Nœuds de votre cluster qui récupèrent l’image ; ils doivent donc disposer d’un accès sortant àghcr.io. La politique de sandbox de l’exécuteur doit également autoriser les images provenant deghcr.io/epoch-research.
Voir aussi
- Guide d’exécution des commandes : informations détaillées sur les modèles d’utilisation de
exec(). - Modèles de nettoyage : gestion du cycle de vie des sandboxes.