Maison  >  Article  >  Périphériques technologiques  >  Traffic Engineering double la précision de la génération de code : de 19 % à 44 %

Traffic Engineering double la précision de la génération de code : de 19 % à 44 %

WBOY
WBOYavant
2024-02-05 09:15:09788parcourir

Les auteurs d'un nouvel article proposent un moyen "d'améliorer" la génération de code.

Traffic Engineering double la précision de la génération de code : de 19 % à 44 %

La génération de code est une capacité de plus en plus importante en intelligence artificielle. Il génère automatiquement du code informatique basé sur des descriptions en langage naturel en entraînant des modèles d'apprentissage automatique. Cette technologie a de larges perspectives d'application et peut transformer les spécifications logicielles en code utilisable, automatiser le développement back-end et aider les programmeurs humains à améliorer l'efficacité de leur travail.

Cependant, générer du code de haute qualité reste un défi pour les systèmes d'IA, par rapport aux tâches linguistiques telles que la traduction ou le résumé. Le code doit se conformer avec précision à la syntaxe du langage de programmation cible, gérer les cas extrêmes et les entrées inattendues avec élégance, et gérer avec précision les nombreux petits détails de la description du problème. Même de petites erreurs qui peuvent sembler inoffensives dans d'autres domaines peuvent complètement perturber la fonctionnalité d'un programme, entraînant l'échec de sa compilation ou de son exécution.

Récemment, des chercheurs de CodiumAI ont proposé AlphaCodium, une nouvelle méthode qui peut améliorer considérablement les capacités de génération de code des grands modèles de langage tels que GPT-4. Leur point est que le simple fait d’affiner la formulation des invites présente des limites inhérentes à la résolution de problèmes de codage complexes. Au lieu de cela, ils ont conçu un processus en plusieurs étapes axé sur la génération, l'exécution et le débogage itératifs du code par rapport aux cas de test, permettant au modèle d'apprendre de la pratique.

Limitations de l'ingénierie des indices

Dans les tâches en langage naturel, l'ingénierie des indices fait référence à l'ajustement minutieux de la formulation et de la structure des indices pour guider le modèle afin de produire le résultat souhaité. Par exemple, l'ajout de l'expression « Rédiger un résumé concis : » avant le texte saisi peut amener le modèle à générer un résumé plus précis.

L'ingénierie rapide s'est avérée très efficace dans la génération de texte pour guider le comportement de grands modèles de langage. Cependant, en ce qui concerne les problèmes de codage, les chercheurs ont constaté que même avec des ajustements approfondis et opportuns, seuls de petits gains peuvent être obtenus. Cette découverte donne à réfléchir. Par conséquent, générer du code de haute qualité nécessite encore d'autres solutions :

  • Correspondre exactement à la syntaxe du langage de programmation cible
  • Gérer les cas extrêmes et les entrées inattendues avec élégance
  • Régler tous les petits détails décrits dans le problème déclaration et exigences
  • garantissent que le code se compile et s'exécute correctement pour toutes les entrées valides

Ces exigences structurelles dépassent la portée de la génération de texte et ne peuvent pas être codées en dur dans l'invite. Les invites elles-mêmes manquaient des compétences de codage et des commentaires concrets nécessaires à l'apprentissage du modèle.

Processus itératif AlphaCodium

Pour relever ces défis, les chercheurs ont développé un processus itératif spécifiquement structuré pour les problèmes de génération de code. L'innovation clé consiste à utiliser les résultats d'exécution du code généré comme signaux d'apprentissage pour fournir un retour direct.

Le processus d'AlphaCodium comporte deux étapes principales :

Pré-traitement

  • Le modèle paraphrase la description du problème sous forme de puces pour extraire les détails clés.
  • Expliquez la logique prévue derrière chaque exemple d'entrée/sortie.
  • Fournir deux ou trois solutions en langage naturel.
  • Générez différents cas de test supplémentaires pour la couverture du code.

Code Iteration

  • Le modèle génère des solutions de code initiales.
  • Exécutez le code à plusieurs reprises sur le scénario de test public et corrigez toutes les erreurs qui surviennent.
  • Faites la même chose pour les cas de tests générés par le modèle.
  • Des cas de test supplémentaires sont ajoutés à la suite croissante d'"ancres de test" pour éviter les régressions.

En raisonnant progressivement sur les problèmes, en développant des hypothèses de solutions, en étendant la couverture des tests et en générant et en débogant du code de manière itérative, les modèles apprennent par l'expérience, les compétences mêmes requises pour une génération de code de haute qualité.

Traffic Engineering double la précision de la génération de code : de 19 % à 44 %

Figure 1. Exemple d'invite avec une sortie structurée (phase de génération de solution possible)

Les chercheurs ont découvert qu'il est préférable de concevoir des processus avec des interfaces et des objectifs clairs par rapport au module de modèles de bout en bout pour obtenir de meilleurs résultats. Chaque phase se concentre d'abord sur des sous-tâches plus simples pour acquérir des connaissances et découvrir des informations qui éclairent les phases en aval. Les étapes en amont telles que la génération de tests ne nécessitent pas de solution complète, mais uniquement un raisonnement de base.

Résultats expérimentaux

Les chercheurs ont évalué AlphaCodium par rapport au benchmark CodeContests, qui contient des centaines de problèmes de codage issus de concours de programmation compétitifs.

Traffic Engineering double la précision de la génération de code : de 19 % à 44 %

Figure 2. Description du problème et réflexion - un exemple de question typique de CodeContests, auto-réflexion sur le problème basée sur l'intelligence artificielle. Bien que la description initiale soit longue et complexe, une bonne réflexion personnelle peut rendre le problème plus clair et plus cohérent, conduisant à des solutions de code améliorées

Par rapport au modèle GPT-4, AlphaCodium validera par rapport à une pointe unique fortement optimisée. Le code la précision de la génération sur le plateau est passée de 19 % à 44 %. Cet avantage est valable pour différentes tailles de modèles et ensembles de tests, et est nettement plus efficace qu'un projet d'indice distinct.

AlphaCodium fonctionne également nettement mieux que les méthodes publiées précédemment, telles que AlphaCode et CodeChain, tout en utilisant moins de ressources informatiques. Par exemple, en évitant la génération inutile de force brute, sa précision est comparable à celle d'AlphaCode tout en nécessitant 10 000 fois moins de requêtes de modèle.

Ces résultats démontrent l'intérêt de concevoir des systèmes d'IA de manière holistique autour des structures de tâches, plutôt que de les traiter comme des générateurs de texte à usage général. En intégrant l'exécution et le débogage itératifs de code, AlphaCodium aligne mieux le processus de formation avec l'objectif ultime de produire un code robuste et pratique.

Impact plus large

Bien que démontrés face à un problème de programmation compétitif, les concepts utilisés dans AlphaCodium offrent une expérience plus largement applicable pour la génération de code faisant progresser l'IA :

  • Conseils L'ingénierie seule pour Il y a des limites à travailler avec tâches de code complexes. Une expérience concrète de résolution de problèmes est essentielle.
  • Les spécifications de développement basées sur des tests peuvent fournir une base pour la formation des modèles. Le test fournit une fonction de fitness explicite.
  • Le débogage itératif du code concentre l'amélioration du modèle sur les erreurs qui se produisent réellement.
  • L'extension de couverture de test met en évidence les lacunes de généralisation invisibles dans les indices.
  • La prise de décision douce avec double vérification réduit la vulnérabilité et les préjugés.

AlphaCodium fournit un nouveau paradigme prometteur pour la génération de code basé sur les meilleures pratiques d'ingénierie logicielle. Des questions de recherche restent ouvertes concernant la généralisabilité et la surcharge de calcul. Mais les principes présentés ici (apprentissage par l’expérience, développement piloté par les tests, raisonnement modulaire et débogage itératif) semblent fournir une base solide pour améliorer les capacités de codage de l’IA.

Lien papier : https://arxiv.org/pdf/2401.08500.pdf.

Base de code : https://github.com/Codium-ai/AlphaCodium.

Titre original : « Flow Engineering » double la précision de la génération de code (19 % contre 44 %), auteur : Mike Young

Lien : https://notes.aimodels.fyi/flow-engineering-intensifies-for- génération de code/.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer