Nebius AI : Révolution RL pour les LLM Open-Weight et Agents SWE
Le paysage évolutif de l’automatisation de l’ingénierie logicielle est de plus en plus façonné par les avancées des grands modèles de langage (LLM). Cependant, un obstacle majeur a persisté : la plupart des agents LLM performants s’appuient soit sur des modèles propriétaires, soit sur des méthodes d’entraînement coûteuses et guidées par un enseignant. Cela a laissé les LLM open-weight — ceux dont les modèles sont publiquement disponibles — avec une utilité limitée dans le monde réel pour les tâches complexes de développement logiciel. Une récente percée d’une équipe de recherche conjointe chez Nebius AI et Humanoid vise à changer cela, en introduisant un nouveau cadre d’apprentissage par renforcement conçu pour entraîner des agents d’ingénierie logicielle très performants, à long contexte et multi-tours. Cette recherche marque un changement pivot, allant au-delà des interactions simplistes et à un seul tour typiquement observées dans l’apprentissage par renforcement des LLM pour répondre aux exigences complexes de l’ingénierie logicielle authentique.
L’ingénierie logicielle diffère fondamentalement de nombreuses tâches pour lesquelles les LLM sont entraînés, telles que le raisonnement mathématique ou la génération de code ponctuelle. Contrairement à ces dernières, qui fournissent souvent une seule récompense à la fin, l’ingénierie logicielle (SWE) exige des agents qu’ils exécutent de longues séquences d’actions, interprètent des retours riches comme les erreurs de compilateur et les journaux de tests, et maintiennent le contexte sur des centaines de milliers de tokens. Cette complexité introduit plusieurs défis fondamentaux pour l’apprentissage par renforcement. Les agents doivent maintenir une cohérence logique sur de nombreuses étapes, nécessitant souvent des fenêtres contextuelles dépassant 100 000 tokens. Les actions produisent des observations significatives et non triviales — telles que les sorties de commandes shell ou les résultats de suites de tests — qui sont cruciales pour guider les décisions ultérieures. De plus, les signaux de succès sont généralement rares et retardés, n’apparaissant qu’à la culmination d’interactions complexes, ce qui rend difficile d’attribuer le crédit à des actions spécifiques. L’évaluation des progrès est également complexe, nécessitant un déroulement complet de la trajectoire, et peut être bruyante en raison de la volatilité des tests.
Pour relever ces défis, l’équipe de recherche a développé un pipeline d’apprentissage en deux étapes pour l’entraînement d’un agent Qwen2.5-72B-Instruct. Le processus commence par le Rejection Fine-Tuning (RFT), une méthode supervisée où l’agent est exécuté sur 7 249 tâches d’ingénierie logicielle rigoureusement filtrées à partir de l’ensemble de données SWE-REBENCH. Seules les traces d’interaction réussies — où l’agent passe la suite de tests environnementaux — sont utilisées pour affiner le modèle, avec une attention particulière portée au masquage des actions de formatage d’environnement invalides pendant l’entraînement. Cette étape initiale seule a significativement augmenté la précision de base de 11% à 20% sur le benchmark SWE-bench Verified.
S’appuyant sur cette base, la deuxième étape utilise l’apprentissage par renforcement à l’aide d’un algorithme d’optimisation de politique à avantage découplé (DAPO) modifié. Plusieurs modifications clés ont été introduites pour améliorer la scalabilité et la stabilité. Le Clipping Asymétrique a été implémenté pour prévenir l’effondrement de l’entropie de la politique, garantissant que l’agent continue d’explorer de nouvelles solutions. Le Filtrage Dynamique d’Échantillons concentre l’optimisation sur les trajectoires qui produisent de réels signaux d’apprentissage, rendant l’entraînement plus efficace. Les Pénalités de Longueur découragent les épisodes excessivement longs, aidant l’agent à éviter de rester bloqué dans des boucles improductives. Enfin, la Moyenne au Niveau du Token garantit que chaque token dans chaque trajectoire contribue également au gradient, permettant aux interactions plus longues et plus complexes d’exercer une influence appropriée sur les mises à jour. L’agent lui-même utilise une boucle de style ReAct, lui permettant de combiner les étapes de raisonnement avec l’utilisation pratique d’outils. Sa boîte à outils robuste comprend la capacité d’exécuter des commandes shell arbitraires, d’effectuer des modifications de code précises, d’utiliser des utilitaires de navigation et de recherche, et de signaler la fin de l’épisode. Chaque interaction est ancrée dans un environnement sandbox robuste, initialisé à partir de snapshots de dépôts réels et présenté avec des invites de problèmes de style GitHub.
Initialement entraîné avec une longueur de contexte de 65 000 tokens — déjà le double de la plupart des modèles ouverts — la performance de l’agent a plafonné à 32%. Pour aller au-delà, une deuxième phase d’apprentissage par renforcement a étendu le contexte à 131 000 tokens et doublé le plafond de longueur d’épisode. Cette phase a concentré l’entraînement subséquent uniquement sur les tâches les plus bénéfiques, permettant au modèle de s’adapter aux traces de pile plus longues et aux historiques de différences inhérents aux tâches de débogage et de correction du monde réel.
Les résultats sont convaincants. L’agent final entraîné par RL a atteint une précision Pass@1 de 39% sur le benchmark SWE-bench Verified, doublant efficacement la performance de la base de référence affinée par rejet. De manière cruciale, il a égalé la performance de modèles open-weight de pointe comme DeepSeek-V3-0324, le tout sans nécessiter de supervision basée sur un enseignant. Sur les divisions SWE-rebench conservées, les scores sont restés compétitifs, démontrant la robustesse de la méthode : 35% pour mai et 31,7% pour juin. Comparé directement aux meilleures bases de référence ouvertes et aux agents d’ingénierie logicielle spécialisés, cet agent RL a constamment égalé ou surpassé plusieurs modèles, confirmant l’efficacité de cette méthodologie d’apprentissage par renforcement dans le domaine du développement logiciel autonome.
Malgré ces avancées, des défis subsistent. L’attribution de crédit dans les régimes à récompense sparse reste fondamentalement difficile, suggérant que les travaux futurs pourraient explorer la mise en forme des récompenses, des critiques au niveau des étapes, ou des déroulements basés sur des préfixes pour un retour plus granulaire. Les agents du monde réel doivent également estimer l’incertitude, savoir quand s’abstenir ou exprimer leur confiance, avec des techniques comme l’entropie de sortie ou la notation explicite de la confiance comme prochaines étapes. L’entraînement lui-même a été une entreprise significative, tirant parti du parallélisme contextuel pour répartir de longues séquences sur 16 nœuds H200, avec une orchestration distribuée gérée via Kubernetes et Tracto AI, et vLLM pour une inférence rapide.
Cette recherche valide de manière décisive l’apprentissage par renforcement comme un paradigme puissant pour construire des ingénieurs logiciels autonomes utilisant des LLM open-weight. En conquérant des tâches à long horizon, multi-tours et en environnement réel, la méthodologie ouvre la voie au développement d’agents évolutifs et sans enseignant qui exploitent directement le pouvoir de l’interaction plutôt que de l’instruction statique. Avec des raffinements supplémentaires, de tels pipelines d’apprentissage par renforcement promettent de fournir une automatisation efficace, fiable et polyvalente pour l’avenir de l’ingénierie logicielle.