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 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.
  1. Préparez un environnement virtuel Python, puis installez le SDK et les dépendances d’évaluation :
  2. Clonez le dépôt contenant les exemples de scripts d’évaluation :
Choisissez l’identifiant d’authentification du compte propriétaire des Sandbox d’évaluation. Pour obtenir l’un ou l’autre, consultez Choisir et obtenir des identifiants d’authentification.
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.
Les deux options utilisent par défaut la capacité sans serveur. Pour utiliser votre propre capacité CKS, choisissez le jeton CoreWeave, activez un exécuteur et ajoutez 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’option gold utilise le correctif du dataset dont on sait qu’il est correct :
Ce run réussit, ce qui confirme qu’une sandbox peut démarrer à partir de son 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. 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 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

Lorsqu’une instance rencontre une erreur, par exemple parce que sa sandbox ne parvient pas à démarrer, 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

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 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 --dataset n’atteint jamais de sandbox : le script journalise Instance IDs not found in dataset et 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 de ghcr.io/epoch-research.

Voir aussi

Dernière modification le 4 novembre 2026