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 sandboxs CoreWeave vous permettent d’exécuter des évaluations à grande échelle sur l’infrastructure CoreWeave. Lancez simultanément des dizaines, voire des centaines de sandboxs, sans avoir à vous soucier de leur gestion. Le script récupère des images prêtes à l’emploi depuis le registre d’Epoch AI sur GHCR : aucune étape de compilation Docker locale n’est donc nécessaire.Configuration
Suivez les étapes ci-dessous pour installer les outils requis et configurer l’authentification avant d’exécuter des évaluations.-
Installez le SDK Python et les dépendances nécessaires aux évaluations :
-
Clonez le dépôt contenant les exemples de scripts d’évaluation :
-
Définissez
CWSANDBOX_API_KEYsur un jeton d’accès à l’API CoreWeave. Remplacez[API-ACCESS-TOKEN]par votre jeton :
auth obtenue à SandboxDefaults(...) dans examples/swebench/run_evaluation.py.
Démarrage rapide
Avant de passer à l’échelle, commencez par un run sur une seule instance afin de vérifier que votre environnement, vos identifiants d’authentification et votre accès réseau à GHCR fonctionnent correctement. 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. Format de l’image :ghcr.io/epoch-research/swe-bench.eval.x86_64.{instance_id}:latest
Les Sandbox récupèrent ces images directement depuis GHCR, sans qu’aucune compilation locale soit 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
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 le conteneur ne démarre pas en raison d’une erreur de récupération d’image, soit l’ID d’instance n’existe pas dans le registre d’Epoch AI, soit un problème réseau empêche d’accéder àghcr.io. Vérifiez que l’ID d’instance figure bien dans le dataset SWE-bench.
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.