
Les outils actuels de compréhension de code basés sur l'IA qui utilisent la synthèse, la génération augmentée par récupération (RAG) et les graphiques de connaissance sont comme utiliser une loupe pour cartographier un continent. Ils sont cassants et manquent souvent l'image la plus large - surtout pour les grandes bases de code.
Inspiré par Rich SuttonUne leçon amère, la méthode de contexte global adopte une approche différente. Au lieu de décomposer la base de code en morceaux et de construire la compréhension de la base de code pièce par pièce à l'aide de partage-et-conquer et de astuces logicielles, notre méthode embrasse une solution holistique, axée sur l'apprentissage. Dans ce court post, nous examinerons pourquoi les méthodes fragmentées sont trop courtes et dessinent des parallèles à l'évolution de l'IA. Nous ferons également état de quelques premiers résultats qualitatifs avec notre méthode, et une analyse plus approfondie sera effectuée ultérieurement. L'avenir de la compréhension du code est ici, et il ne repose pas sur les astuces logicielles et l'heuristique humaine.
La leçon amère et pourquoi les raccourcis échouent
Rich Sutton, l'un des fondateurs de l'apprentissage de renforcement informatique (et aussi un auteur de mon manuel préféré), a écritLa leçon amèresur son site personnel. C'est un rappel que « les méthodes générales de calcul de l'effet de levier sont en fin de compte les plus efficaces, et d'une grande marge ». Les méthodes générales surpassent systématiquement les heuristiques spécialisées et les connaissances de domaine conçues par l'homme. L'histoire de l'IA le soutient avec des exemples frappants.
- Échec, bleu profond et AlphaZeroEn 1997, Deep Blue a vaincu le champion du monde, Kasparov. profond Blue a utilisé une combinaison de recherche massive et de tactiques d'échecs humains. En 2017, l'AlphaZero de DeepMind a maîtrisé les échecs de zéro à l'auto-joueur. Il a non seulement surpassé tous les humains, mais aussi fait sauter Stockfish - le meilleur programme d'échecs d'ordinateur dans le monde - hors de l'eau. Depuis, Stockfish et d'autres programmes d'échecs « traditionnels » ont également commencé à inclure des réseaux neuronaux dans leurs moteurs pour rester compétitifs.
- Vision informatique: Au début des années 2000, les systèmes de vision dépendaient de l'ingénierie des fonctionnalités, comme SIFT ou HOG. En 2016, les réseaux neuronaux convolutionnels profonds, tels que ResNet, formés sur pixels bruts, ont dépassé ces méthodes avec une précision surhumaine.
- StarCraft et AlphaStarEn 2019, DeepMinds AlphaStar domine BlizzardS StarCraft II en modélisant des états de jeu entiers, y compris des centaines d'unités, de cartes et de stratégies, sans s'appuyer sur des règles sélectives, dépassant les joueurs professionnels.
- Archéologie: En 2022, DeepMind de Google a reconstruit des tablettes cunéiformes antiques en apprenant des modèles linguistiques bruts, pas des hypothèses expertes.
- Pliage des protéines: En 2023, AlphaFold 2 a résolu les défis de pliage des protéines de longue date en apprenant des données moléculaires brutes, contournant les modèles chimiques fabriqués par l'homme.
Il semble que l'apprentissage holistique, généralisé à partir de données brutes et beaucoup de calcul surpasse constamment les raccourcis intelligents. Nous nous attendons également à voir un arc similaire dans la compréhension du code AI.
Pourquoi les obstacles à la compréhension du code pour les grandes bases de codes
Au début de 2025, les copilotes de code luttent lorsque le contexte avec lequel ils doivent travailler couvre plus de dizaines de milliers de lignes de code. Les générateurs de documentation de code AI produisent des résultats manquants pour les bases de code massives. Ceci est principalement dû aux fenêtres de contexte plus petites (~100k token) de nombreux LLM et aux limites des astuces communes utilisées pour le surmonter. Tricks tels que:
- Résumé et mémoire: Une approche commune pour traiter de grands contextes consiste à en attribuer une partie à un résumé évolutif de tout ce qui a été vu jusqu'à présent. Ce processus, par sa conception même, est perdu. Pour la compréhension du code, bien que cette approche puisse capter les dépendances locales, elle manque souvent des dépendances globales multimodules à travers la base de code.
- Génération augmentée par récupération (RAG): RAG utilise une base de données vectorielle de morceaux de la base de code et récupère les morceaux les plus "pertinents" sur la base de code pour une requête donnée. RAG peut être utile pour la recherche d'informations spécifiques, mais est souvent peu fiable. De plus, le RAG n'est pas utile pour les tâches qui nécessitent un grand nombre de morceaux.
- Graphiques de connaissances (KG): Les KG sont parfaits pour répondre aux questions dans un domaine spécifique où le vocabulaire des objets et des relations est limité. Cependant, ils luttent pour obtenir de grandes bases de code en évolution.
Les petites fenêtres contexte forcent les développeurs à casser les bases de code en fragments et à travailler avec un nombre limité de fragments à la fois. Cette approche perd nuance puisque le code est un artefact vivant avec des motifs couvrant des milliers de fichiers. Notre équipe a produit de la documentation pour PyTorch (1,5 million de lignes de code) en utilisant des techniques standard basées sur la sommation et a trouvé la documentation résultante de faible qualité et de dépendances critiques manquantes. Par contre, notre méthode de contexte global a produit une documentation beaucoup plus claire et plus précise.
La méthode globale du contexte
Et si au lieu de nous concentrer sur une utilisation économique des jetons, nous nous concentrions sur la maximisation? Nous pourrions arrêter de fragmenter les bases de code et capturer même les interdépendances les plus complexes. La méthode contextuelle entière fait exactement cela. Il utilise des LLM avec les plus grandes fenêtres de contexte disponibles pour traiter des dépôts entiers, y compris chaque fichier, commit, et commentaires, comme un seul contexte unifié. Voici comment ça marche :
- Ingestion complète: Il traite des bases de code massives, comme PyTorch (lignes de 1,2M), en un seul coup, captant des interdépendances que des méthodes fragmentées manquent.
- Apprentissage des engagements: Il s'adapte aux histoires de commit pour comprendre l'intention et l'évolution, au-delà du simple code statique.
- Centre de documentation vivante: Il crée un hub interactif et interrogeable qui se met à jour automatiquement à mesure que la base de code évolue, servant les développeurs et les responsables.
Conclusion : Faire place à la leçon amère
AlphaZero s'est enseigné des échecs de classe mondiale basés sur des méthodes générales d'apprentissage, de jeu de soi, et de recherche, avec un calcul massif. De même, la méthode du contexte entier ne dépend pas de l'heuristique artisanale, des abstractions lossées ou des pipelines modulaires qui tentent de sortir du problème. Au lieu de cela, il embrasse la leçon Bitter: que la vraie compréhension ne vient pas de l'encodage des connaissances du domaine fragile, mais de la mise à profit de systèmes d'apprentissage évolutives qui peuvent découvrir les modèles que nous avons essayés à la main-ingénieur.
Le code, comme les esprits, est irréductiblement complexe. Comme l'écrit Sutton, le monde réel est rempli de structures arbitraires : préoccupations transversales, hacks hérités, interactions dynamiques entre des milliers de modules. L'envie de la simplifier avec des modèles d'auteurs humains est un piège. La seule façon fiable d'aller de l'avant est de construire des systèmes qui peuvent apprendre à comprendre, et non pas des systèmes qui contiennent simplement notre compréhension actuelle.
Dans un futur post, nous partagerons des repères et des exemples plus détaillés sur de grandes bases de code comme PyTorch, Kubernetes et les systèmes d'entreprise existants. Mais même maintenant, une chose est claire: La prochaine génération d'outils de développement ne vient pas de hacks plus intelligents. Ça viendra de voir le tout.
Références
- Sutton, R. S. (2019). La leçon amère (Idées incomplètes).
- Silver, D., et al. (2017). Maîtriser les échecs et les shogis en self-play avec un algorithme d'apprentissage général de renforcement (arXiv).
- Vinyals, O., et al. (2019). Niveau Grandmaster en StarCraft II en utilisant l'apprentissage du renforcement multi-agents (Nature).
- Jumper, J., et al. (2021). Prédiction très précise de la structure protéique avec AlphaFold (Nature).
- Assael, Y., et al. (2022). Restaurer et attribuer des textes anciens en utilisant des réseaux neuraux profonds (Nature).