Maison > Périphériques technologiques > IA > le corps du texte

Méthode d'optimisation du modèle de transformateur pour les séquences de code longues afin d'améliorer les performances dans les scénarios de code longs

PHPz
Libérer: 2023-04-29 08:34:06
avant
1703 Les gens l'ont consulté

La plateforme d'apprentissage automatique Alibaba Cloud PAI a collaboré avec l'équipe du professeur Gao Ming de l'Université normale de Chine orientale pour publier le modèle SASA de Transformer d'attention sparse sensible à la structure au SIGIR2022. performances de longues séquences de code, effets et performances. Étant donné que la complexité du module d'auto-attention augmente de façon exponentielle avec la longueur de la séquence, la plupart des modèles de langage pré-entraînés basés sur la programmation (PPLM) utilisent la troncature de séquence pour traiter les séquences de code. La méthode SASA économise le calcul de l'attention personnelle et combine les caractéristiques structurelles du code, améliorant ainsi les performances des tâches à séquence longue et réduisant la mémoire et la complexité de calcul.

Article : Tingting Liu, Chengyu Wang, Cen Chen, Ming Gao et Aoying Zhou. Comprendre les langages de programmation longs avec une attention sparse sensible à la structure

Cadre modèle

La figure suivante montre le cadre global de SASA. :

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能

Parmi eux, SASA comprend principalement deux étapes : l'étape de prétraitement et l'étape de formation Sparse Transformer. Au cours de l'étape de prétraitement, les matrices d'interaction entre deux jetons sont obtenues, l'une est la matrice de fréquence top-k et l'autre est la matrice de modèle AST. La matrice de fréquence Top-k utilise un modèle de langage pré-entraîné pour apprendre la fréquence d'interaction d'attention entre les jetons du corpus CodeSearchNet. La matrice de modèles AST est un arbre de syntaxe abstraite (AST) qui analyse le code. sur la relation de connexion de l'arbre syntaxique Informations interactives entre les jetons. La phase de formation Sparse Transformer utilise Transformer Encoder comme cadre de base, remplace l'auto-attention complète par une auto-attention clairsemée sensible à la structure et effectue des calculs d'attention entre des paires de jetons conformes à des modèles spécifiques, réduisant ainsi la complexité de calcul.

SASA sparse attention comprend les quatre modules suivants au total :

  • Attention à fenêtre coulissante : calcule uniquement l'auto-attention entre les jetons dans la fenêtre glissante, en conservant les caractéristiques du contexte local, la complexité de calcul est la longueur de la séquence, est la taille de la fenêtre coulissante.
  • Attention globale : définissez certains jetons globaux. Ces jetons effectueront des calculs d'attention avec tous les jetons de la séquence pour obtenir les informations globales de la séquence, qui est le nombre de jetons globaux.
  • Attention éparse Top-k : l'interaction d'attention dans le modèle Transformer est clairsemée et à longue traîne. Pour chaque jeton, seuls les jetons top-k avec l'interaction d'attention la plus élevée sont calculés.
  • Attention à la structure prenant en compte l'AST : le code est différent des séquences de langage naturel et présente des caractéristiques structurelles plus fortes. En analysant le code dans un arbre syntaxique abstrait (AST), la portée du calcul de l'attention est déterminée en fonction de la relation de connexion dans l'arbre syntaxique. .

Afin de s'adapter aux caractéristiques de calcul parallèle du matériel moderne, nous divisons la séquence en plusieurs blocs au lieu de calculer en unités symboliques. Chaque bloc de requête comporte

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能

blocs de fenêtre coulissante et

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能

blocs globaux. et

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能

les blocs top-k et AST calculent l'attention. La complexité informatique globale est

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能

b est la taille du bloc.

Chaque modèle d'attention clairsemé correspond à une matrice d'attention. En prenant comme exemple l'attention par fenêtre glissante, le calcul de la matrice d'attention est :

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能

Pseudo-code ASA :

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能

Résultats expérimentaux

Nous utilisons quatre ensembles de données de tâches fournis par CodeXGLUE[1] pour l'évaluation, à savoir la détection de clone de code, la détection de défauts, la recherche de code et le résumé de code. Nous avons extrait les données dont la longueur de séquence est supérieure à 512 pour former un ensemble de données de séquence longue. Les résultats expérimentaux sont les suivants : Les performances sur cet ensemble de données dépassent largement toutes les lignes de base. Parmi eux, Roberta-base[2], CodeBERT[3] et GraphCodeBERT[4] utilisent la troncature pour traiter de longues séquences, ce qui fera perdre une partie des informations contextuelles. Longformer[5] et BigBird[6] sont des méthodes utilisées pour traiter de longues séquences dans le traitement du langage naturel, mais elles ne prennent pas en compte les caractéristiques structurelles du code et le transfert direct vers la tâche de code n'est pas efficace.

Afin de vérifier l'effet des modules d'attention clairsemée top-k et d'attention clairsemée AST, nous avons mené des expériences d'ablation sur les ensembles de données BigCloneBench et Defect Detection. Les résultats sont les suivants : 面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能.

sparse attention module non seulement améliore les performances des tâches de code long, mais réduit également considérablement l'utilisation de la mémoire vidéo sous le même appareil, SASA peut définir une taille de lot plus grande, tandis que le modèle -attention est confronté au problème du manque de mémoire. L'utilisation spécifique de la mémoire est la suivante :

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能

SASA, en tant que module d'attention clairsemé. , peuvent être migrés vers D'autres modèles pré-entraînés basés sur Transformer sont utilisés pour traiter des tâches de traitement du langage naturel à séquence longue. Ils seront intégrés dans le framework open source EasyNLP (https://github.com/alibaba/EasyNLP) et contribués à. la communauté open source.

Lien papier : 面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能https://arxiv.org/abs/2205.13730

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!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal