L'équipe originale WizardLM de Microsoft : code grand modèle WarriorCoder, performance nouveau SOTA

微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTA

 

  • Titre du document : WarriorCoder : Learning from Expert Battles to Augment Code Large Language Models (Apprendre des batailles d'experts pour augmenter le code des grands modèles linguistiques)
  • Lien vers l'article : https://arxiv.org/pdf/2412.17395

01 Contexte

Ces dernières années, les grands modèles de langage (LLM) ont fait preuve d'une performance phénoménale dans les tâches liées au code, avec l'émergence d'une variété de macromodèles de code. Ces réussites montrent que le pré-entraînement sur des données de code à grande échelle peut améliorer de manière significative les capacités de programmation de base des modèles. En plus du pré-entraînement, certaines méthodes de post-entraînement des LLM sur des données d'instructions ont également conduit à des améliorations significatives de la compréhension des instructions par les modèles et de la qualité des réponses. Toutefois, l'efficacité du post-entraînement dépend fortement de la disponibilité de données de haute qualité, mais la collecte et l'annotation des données présentent des défis considérables.
Afin de relever les défis susmentionnés, certaines méthodes ont conçu divers volants de données pour générer des données d'instruction, telles que Self-Instruct, Evol-Instruct, etc. Ces méthodes construisent des données d'instruction par divers moyens d'enrichissement des données. La formation sur ces données peut améliorer efficacement la capacité de génération de code du modèle. Toutefois, comme le montre la figure 1, ces méthodes reposent toujours sur l'extension d'ensembles de données existants et nécessitent l'appel à des LLM privés (par exemple, GPT-3.5, GPT-4, etc.), ce qui rend la collecte de données coûteuse. En outre, le nombre limité de sources de données et de LLM utilisés pour l'annotation limite également la diversité des données et hérite du biais systématique inhérent aux LLM privés limités. 微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTAFigure 1

Ce document présente WarriorCoder, un nouveau paradigme de formation pour les macromodèles de codes, où le modèle intègre les forces des macromodèles d'experts en codes individuels en apprenant des approches contradictoires d'experts.. Comme le montre la figure 1, de grands modèles individuels d'experts en codage s'affrontent, les attaquants défiant leurs adversaires dans leurs propres domaines d'expertise, et les modèles cibles apprenant des vainqueurs de ces paires de batailles. Contrairement aux méthodes précédentes, qui s'appuient principalement sur des ensembles de données open source existants comme données de départ à synthétiser et à augmenter, warriorCoder génère des données de 0 à 1 sans avoir besoin de données de départ, et la méthode peut fusionner les points forts de plusieurs macromodèles d'experts en codage au lieu de simplement distiller les points forts de modèles individuels. En outre, la méthode proposée dans cet article élimine la dépendance à l'égard de l'implication humaine et des LLM privés dans le processus de collecte de données, et permet la collecte de données d'entraînement diversifiées et de haute qualité à un coût très faible. Les résultats expérimentaux montrent que warriorCoder atteint non seulement le SOTA actuel dans les tâches de génération de code, mais qu'il obtient également d'excellents résultats dans des benchmarks tels que le raisonnement de code et l'utilisation de bibliothèques, qui peuvent être appelés code hexagon warrior.

02 Méthodologie

Cet article construit une arène pour les grands modèles de code. Ici, les macromodèles experts en code les plus modernes sont opposés les uns aux autres, chaque modèle défiant les autres en utilisant les connaissances qu'il possède déjà, tandis que les autres modèles agissent comme des arbitres pour évaluer le résultat des confrontations. Le modèle cible apprend ensuite des vainqueurs de ces confrontations, en intégrant progressivement les forces de tous les concurrents. Dans cet article, nous considérons les concurrents (macromodèles experts) comme un groupe et optimisons le modèle en fonction de la supériorité relative des réponses au sein du groupe, ce qui est conforme à l'approche des GRPO Il y a des similitudes et des différences. 微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTAFigure 2

2.1 Positionnement des concurrents

La compétence des participants détermine la performance finale de WarriorCoder. En théorie, plus la diversité et la qualité des données d'entraînement obtenues à partir d'un pool de concurrents plus large et plus fort sont grandes, plus la performance du modèle entraîné final est élevée. Dans chaque tour de l'arène, une seule paire de codeurs est sélectionnée comme concurrents, tandis que les autres jouent le rôle de juges. Dans cet article, cinq grands modèles avancés de 75B ont été sélectionnés dans le classement BigCodeBench - Athene-V2-Chat, DeepSeek-Coder-V2-Lite-Instruct, Llama-3.3-70B-Instruct Il est intéressant de noter que ces cinq modèles sont tous des modèles open source, et que WarriorCoder atteint d'excellentes performances en se basant uniquement sur la confrontation de ces modèles open source. Bien entendu, WarriorCoder est également capable d'apprendre de puissants macromodèles privés.

2.2 L'extraction d'instructions à partir de zéro

Pour une paire d'adversaires -- A et B (où A est l'attaquant et B le défenseur) -- la première étape de la confrontation consiste à défier B dans un domaine où A excelle, ce qui nécessite de savoir ce que A a appris au cours de son entraînement. Cependant, presque tous les macromodèles actuels à source ouverte ne publient pas leurs données d'entraînement de base, ce qui rend extrêmement difficile la connaissance de ce que les attaquants savent faire. Inspiré par Magpie, cet article conçoit une approche basée sur la complétion de dialogue pour exploiter les capacités déjà maîtrisées par un grand modèle. En prenant Qwen2.5 comme exemple, si nous voulons qu'il génère un algorithme de tri rapide, le format complet de l'invite est illustré à la figure 3. L'invite doit inclure le contenu du système, le contenu de l'utilisateur et des jetons spéciaux liés au format, tels que "", "", "", "", etc. L'invite doit inclure le contenu du système, le contenu de l'utilisateur et des jetons spéciaux liés au format, comme "", "", etc. 微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTAFigure 3

En revanche, si seule la partie préfixe (qui n'a pas de signification spécifique en soi, comme le montre la figure 4) est introduite dans le modèle, le contenu utilisateur peut être obtenu en utilisant la capacité de complémentation du modèle. 微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTAFigure 4

De cette manière, avec différentes configurations de paramètres génératifs (par exemple, différentes valeurs de température et de top-p), il est possible de collecter des données d'instruction qui ont été apprises par le modèle. Contrairement à la synthèse de données traditionnelle, les données d'instructions collectées dans le présent document ne sont pas synthétisées par le modèle, mais sont obtenues par échantillonnage directement à partir de la distribution du modèle, ce qui permet d'éviter des problèmes tels que le surajustement du modèle et le biais de la distribution de sortie. Cependant, les instructions peuvent être répétitives, ambiguës, peu claires ou trop simples. Pour résoudre ces problèmes, nous dédupliquons les données et utilisons un modèle d'arbitre pour évaluer leur difficulté. Dans le présent document, nous classons la difficulté en quatre catégories : excellent, bon, moyen et médiocre. En fin de compte, nous n'utilisons que les instructions des catégories excellent et bon, et nous recourons à l'algorithme KcenterGreedy pour comprimer davantage les données d'instruction.

2.3 Décision gagnant-perdant

Le challenger et le defender doivent générer des réponses sur la base des données d'instruction, et un arbitre (le modèle restant) vote pour désigner le vainqueur :
微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTA Toutefois, le fait de s'appuyer uniquement sur le textit {les scores locaux} pour sélectionner les gagnants peut introduire le problème du hasard. Étant donné que le vote peut être influencé par des facteurs tels que le hasard ou la partialité des examinateurs, un modèle plus faible peut recevoir plus de votes qu'un modèle plus fort selon certaines instructions, même si ses réponses ne sont pas vraiment meilleures que celles du modèle plus fort.
Pour résoudre ce problème, le présent document tient compte à la fois de la contingence locale et de la cohérence globale dans le processus de prise de décision. Il introduit le concept de note globale - note Elo. Il peut refléter de manière plus complète les changements dans la performance relative du modèle, couvrant la performance dans le temps et à travers des évaluations multiples. En introduisant la note Elo, la performance locale d'un modèle dans un seul jeu et sa performance globale sur plusieurs tours peuvent être prises en compte dans le processus d'évaluation, fournissant ainsi une mesure plus robuste et plus précise de la capacité globale d'un modèle, ce qui peut aider à réduire le risque qu'un modèle plus faible gagne en raison du hasard et d'un vote non représentatif.
微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTA微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTA Le score final de la réponse est pondéré par la note Elo et les votes des juges :
微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTA Chaque réponse est comparée à toutes les réponses opposées, de sorte que le score représente la force relative de la réponse actuelle au sein du groupe.

2.4 Formation finale

Dans ce document, le format de données est l'instruction, la réponse de chaque participant et le score correspondant à chaque réponse. Ce format de données peut prendre en charge diverses méthodes de post-formation, telles que SFT, DPO, KTO, etc. Dans cet article, SFT est adopté, et la réponse ayant le score le plus élevé dans le groupe est utilisée comme sortie or, de sorte que WarriorCoder puisse intégrer les points forts de chaque participant à la formation et combiner les points forts de tous les participants.

 

03 Expérimental

3.1 Principaux résultats
Le tableau 1 montre la performance de WarriorCoder sur le benchmark de génération de code. Comparé à des travaux similaires, WarriorCoder atteint SOTA sur HumanEval, HumanEval+, MBPP, et MBPP+. Il est intéressant de noter que WarriorCoder obtient des résultats étonnants sans avoir besoin d'un grand modèle privé (par exemple, GPT-4, etc.). 微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTATableau 1

WarriorCoder obtient également d'excellents résultats dans le benchmark de raisonnement de code et dans le benchmark d'utilisation de bibliothèques. Comme le montrent les tableaux 2 et 3, WarriorCoder obtient des résultats optimaux dans la plupart des métriques et surpasse même des modèles plus importants tels que 15B et 34B. Cela prouve également que la méthode proposée dans cet article a une bonne généralisation, ce qui permet au modèle d'obtenir de nombreuses capacités différentes à partir de plusieurs grands modèles d'experts en code. 微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTATableau 2微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTATableau 3

3.2 Analyse des données

Ce document analyse également les données de formation construites et les étudie sous trois angles : la dépendance, la diversité et la difficulté.
Dépendance
Alors que les travaux antérieurs tendent à étendre l'amélioration des données sur la base de certains ensembles de données de code existants (par exemple), le présent document construit des données entièrement nouvelles à partir de zéro. Comme le montre la figure 5, les auteurs calculent le degré de chevauchement (métrique ROUGE) entre les données d'entraînement et les deux ensembles de données de code couramment utilisés, et la grande majorité des instructions ont des scores ROUGE inférieurs à 0,3 avec codealpaca et codeultrafeedback, ce qui suggère que leur contenu diffère de manière significative de celui des ensembles de données existants. Notamment, aucune des instructions extraites n'a une métrique ROUGE supérieure à 0,6, ce qui constitue une preuve supplémentaire que ces instructions proviennent de la distribution interne du macromodèle expert, plutôt que d'une simple copie ou extension des données d'entraînement existantes. Par conséquent, ces instructions sont plus nouvelles et présentent un degré d'indépendance plus élevé, ce qui est particulièrement utile pour la formation. 微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTAFigure 5

Le tableau 4 montre la composition des données d'entraînement, couvrant sept tâches de code différentes, ce qui explique pourquoi WarriorCoder est capable d'obtenir de bons résultats sur plusieurs points de référence. Il convient de noter que le raisonnement sur le code ne représente que 2,9%, ce qui permet à WarriorCoder d'obtenir des résultats étonnants sur les points de référence pertinents, ce qui montre que la méthode proposée dans cet article a beaucoup de potentiel et que si les données sont exploitées pour cibler les faiblesses du modèle, ce dernier peut être encore plus performant. En outre, la carte thermique de la figure 6 montre également les résultats de la confrontation des concurrents, même les modèles les plus forts ont parfois de mauvaises performances, et WarriorCoder n'apprend que de la réponse gagnante ayant le score le plus élevé dans le cadre de l'instruction actuelle. 微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTATableau 4微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTAFigure 6

La figure 7 montre le taux de difficulté des instructions générées par les différents modèles. La majorité des instructions sont jugées bonnes, avec des scores compris entre 6 et 8. Les instructions classées comme excellentes (scores de 9-10) ne représentent qu'une petite partie de l'ensemble de données, ce qui indique que les tâches très complexes ou avancées sont relativement rares. Les auteurs ont exclu de l'ensemble de formation les instructions dont les scores étaient inférieurs à 6, car elles avaient tendance à être trop simples ou trop vagues, ce qui aurait nui à la phase de formation et aurait même pu affaiblir les performances et la généralisation du modèle. 微软原WizardLM团队:代码大模型WarriorCoder,性能新SOTAFigure 7


04 Ressources connexes

Bien que les auteurs n'ouvrent pas actuellement le modèle, nous avons constaté que quelqu'un avait déjà reproduit le travail des auteurs à l'adresse suivante :
Lien vers le projet : https://huggingface.co/HuggingMicah/warriorcoder_reproduce

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...