Skip to main content
Exécutez des évaluations SWE-bench en parallèle à l’aide de sandboxs sur CoreWeave. Ce guide s’adresse aux praticiens et chercheurs en ML qui souhaitent évaluer à grande échelle les performances des modèles de langage en matière de correction de code. À la fin de ce guide, vous disposerez d’une configuration opérationnelle qui exécute des évaluations SWE-bench simultanément sur de nombreux sandboxs CoreWeave, et qui enregistre les résultats en local en vue de leur analyse.

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.
  1. Installez le SDK Python et les dépendances nécessaires aux évaluations :
  2. Clonez le dépôt contenant les exemples de scripts d’évaluation :
  3. Définissez CWSANDBOX_API_KEY sur un jeton d’accès à l’API CoreWeave. Remplacez [API-ACCESS-TOKEN] par votre jeton :
Par défaut, le script d’évaluation utilise l’authentification CoreWeave. Pour utiliser une clé API Forge, configurez explicitement l’authentification comme décrit dans Premiers pas, puis transmettez la valeur 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’option gold utilise le correctif du dataset dont on sait qu’il est correct :
Ce run réussit, ce qui confirme que votre sandbox peut récupérer l’image, appliquer le patch et exécuter la suite de tests de bout en bout.

Exécuter en parallèle

Exécutez plusieurs instances simultanément :
Cette commande lance huit sandboxs et les exécute en parallèle. Tous réussissent, car les patchs de référence (gold patches) sont les correctifs attendus.

Évaluer les prédictions du modèle

Pour tester la sortie d’un modèle personnalisé :
Le fichier de prédictions associe chaque ID d’instance à un patch :

Options

Ajuster les ressources

Par défaut, chaque sandbox dispose de 2 CPU et de 4Gi de mémoire. Modifiez ces valeurs dans run_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 utilise ThreadPoolExecutor 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 une Session 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

Ce format est compatible avec les outils standard de SWE-bench.

Dépannage

Échec de l’application du patch

Si APPLY_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

Dernière modification le 15 octobre 2026