Apprentissage de la représentation de code à grande échelle
Code Representation Learning At Scale
February 2, 2024
Auteurs: Dejiao Zhang, Wasi Ahmad, Ming Tan, Hantian Ding, Ramesh Nallapati, Dan Roth, Xiaofei Ma, Bing Xiang
cs.AI
Résumé
Des études récentes ont montré que les modèles de langage de code à grande échelle démontrent des gains de performance significatifs sur des tâches en aval, telles que la génération de code. Cependant, la plupart des travaux existants sur l'apprentissage de représentations de code entraînent des modèles à l'échelle de centaines de millions de paramètres en utilisant des corpus de prétraitement très limités. Dans ce travail, nous alimentons l'apprentissage de représentations de code avec une quantité massive de données de code via un schéma de prétraitement en deux étapes. Nous entraînons d'abord les encodeurs via un mélange qui exploite à la fois l'aléa dans la modélisation de langage masqué et l'aspect structurel des langages de programmation. Nous améliorons ensuite les représentations via un apprentissage contrastif avec des négatifs durs et des positifs durs construits de manière non supervisée. Nous établissons un modèle encodeur prêt à l'emploi qui surpasse de manière persistante les modèles existants sur une grande variété de tâches en aval avec des marges importantes. Pour comprendre les facteurs contribuant à un apprentissage réussi des représentations de code, nous menons des ablations détaillées et partageons nos découvertes sur (i) un schéma de débruitage personnalisé et efficace au niveau des tokens pour le code source ; (ii) l'importance des négatifs durs et des positifs durs ; (iii) comment l'apprentissage contrastif bimodal proposé améliore les performances de recherche sémantique multilingue ; et (iv) comment les schémas de prétraitement déterminent l'échelle des performances des tâches en aval en fonction de la taille du modèle.
English
Recent studies have shown that code language models at scale demonstrate
significant performance gains on downstream tasks, i.e., code generation.
However, most of the existing works on code representation learning train
models at a hundred million parameter scale using very limited pretraining
corpora. In this work, we fuel code representation learning with a vast amount
of code data via a two-stage pretraining scheme. We first train the encoders
via a mix that leverages both randomness in masking language modeling and the
structure aspect of programming language. We then enhance the representations
via contrastive learning with hard negative and hard positive constructed in an
unsupervised manner. We establish an off-the-shelf encoder model that
persistently outperforms the existing models on a wide variety of downstream
tasks by large margins. To comprehend the factors contributing to successful
code representation learning, we conduct detailed ablations and share our
findings on (i) a customized and effective token-level denoising scheme for
source code; (ii) the importance of hard negatives and hard positives; (iii)
how the proposed bimodal contrastive learning boost the cross-lingual semantic
search performance; and (iv) how the pretraining schemes decide the downstream
task performance scales with the model size.