Optimierungsmethode für Transformer-Modelle für lange Codesequenzen zur Verbesserung der Leistung in Szenarien mit langem Code

PHPz
Freigeben: 2023-04-29 08:34:06
nach vorne
1696 Leute haben es durchsucht

Die Alibaba Cloud-Plattform für maschinelles Lernen PAI hat mit dem Team von Professor Gao Ming von der East China Normal University zusammengearbeitet, um das strukturbewusste Transformer-Modell SASA mit geringer Aufmerksamkeit auf der SIGIR2022 zu veröffentlichen. Dies ist eine Transformer-Modelloptimierungsmethode für lange Codesequenzen, die der Verbesserung gewidmet ist Leistung langer Codesequenzen und Leistung. Da die Komplexität des Selbstaufmerksamkeitsmoduls exponentiell mit der Sequenzlänge zunimmt, verwenden die meisten programmierbasierten Pretrained Language Models (PPLM) Sequenzkürzungen, um Codesequenzen zu verarbeiten. Die SASA-Methode spart die Berechnung der Selbstaufmerksamkeit und kombiniert die Strukturmerkmale des Codes, wodurch die Leistung von Aufgaben mit langen Sequenzen verbessert und Speicher und Rechenkomplexität reduziert werden.

Artikel: Tingting Liu, Chengyu Wang, Cen Chen, Ming Gao und Aoying Zhou. Verständnis langer Programmiersprachen mit strukturbewusster, spärlicher Aufmerksamkeit.

Modellrahmen: Die folgende Abbildung zeigt den Gesamtrahmen von SASA :

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能Davon umfasst SASA hauptsächlich zwei Phasen: die Vorverarbeitungsphase und die Sparse Transformer-Trainingsphase. In der Vorverarbeitungsphase werden die Interaktionsmatrizen zwischen zwei Token erhalten, eine ist die Top-k-Frequenzmatrix und die andere ist die AST-Mustermatrix. Die Top-k-Häufigkeitsmatrix verwendet ein vorab trainiertes Code-Sprachmodell, um die Aufmerksamkeitsinteraktionshäufigkeit zwischen Token im CodeSearchNet-Korpus zu lernen. Die AST-Mustermatrix ist ein abstrakter Syntaxbaum (AST), der den Code analysiert über die Verbindungsbeziehung des Syntaxbaums. Interaktive Informationen zwischen Token. Die Sparse Transformer-Trainingsphase verwendet Transformer Encoder als Grundgerüst, ersetzt die vollständige Selbstaufmerksamkeit durch strukturbewusste, spärliche Selbstaufmerksamkeit und führt Aufmerksamkeitsberechnungen zwischen Token-Paaren durch, die bestimmten Mustern entsprechen, wodurch die Rechenkomplexität reduziert wird.

SASA spärliche Aufmerksamkeit umfasst insgesamt die folgenden vier Module:

Sliding-Window-Aufmerksamkeit: Berechnet nur die Selbstaufmerksamkeit zwischen Token im Schiebefenster und behält dabei die Eigenschaften des lokalen Kontexts, die Rechenkomplexität und die Sequenzlänge bei. ist die Größe des Schiebefensters.
  • Globale Aufmerksamkeit: Legen Sie bestimmte globale Token fest, um Aufmerksamkeitsberechnungen mit allen Token in der Sequenz durchzuführen, um die globalen Informationen der Sequenz zu erhalten.
  • Spärliche Top-k-Aufmerksamkeit: Die Aufmerksamkeitsinteraktion im Transformer-Modell ist spärlich und langschwänzig. Für jeden Token werden nur die Top-k-Token mit der höchsten Aufmerksamkeitsinteraktion berechnet.
  • AST-bewusste Strukturaufmerksamkeit: Code unterscheidet sich von Sequenzen in natürlicher Sprache und weist stärkere Strukturmerkmale auf. Durch das Parsen des Codes in einen abstrakten Syntaxbaum (AST) wird der Umfang der Aufmerksamkeitsberechnung basierend auf der Verbindungsbeziehung im Syntaxbaum bestimmt .
  • Um uns an die parallelen Recheneigenschaften moderner Hardware anzupassen, teilen wir die Sequenz in mehrere Blöcke auf, anstatt in Token-Einheiten zu berechnen. Jeder Abfrageblock verfügt über

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

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

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能 Top-K- und AST-Blöcke berechnen die Aufmerksamkeit. Die gesamte Rechenkomplexität beträgt

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能b ist die Blockgröße.

Jedes spärliche Aufmerksamkeitsmuster entspricht einer Aufmerksamkeitsmatrix. Am Beispiel der Schiebefenster-Aufmerksamkeit lautet die Berechnung der Aufmerksamkeitsmatrix:

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

Experimentelle Ergebnisse

Wir verwenden zur Auswertung vier von CodeXGLUE[1] bereitgestellte Aufgabendatensätze, nämlich Code-Klonerkennung, Fehlererkennung, Codesuche und Codezusammenfassung. Wir haben die Daten extrahiert, deren Sequenzlänge größer als 512 ist, um einen langen Sequenzdatensatz zu bilden. Die experimentellen Ergebnisse sind wie folgt:

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

Wie aus den experimentellen Ergebnissen ersichtlich ist, ist die Leistung von SASA bei den drei Datensätzen signifikant übersteigt die aller Baselines. Unter diesen verwenden Roberta-base[2], CodeBERT[3] und GraphCodeBERT[4] die Kürzung, um lange Sequenzen zu verarbeiten, wodurch ein Teil der Kontextinformationen verloren geht. Longformer[5] und BigBird[6] sind Methoden zur Verarbeitung langer Sequenzen in der Verarbeitung natürlicher Sprache. Sie berücksichtigen jedoch nicht die strukturellen Eigenschaften des Codes und die direkte Übertragung auf die Codeaufgabe ist wirkungslos.

Um die Wirkung von Top-K-Spärse-Aufmerksamkeits- und AST-bewussten Sparse-Aufmerksamkeits-Modulen zu überprüfen, haben wir Ablationsexperimente an BigCloneBench- und Defekterkennungsdatensätzen durchgeführt. Die Ergebnisse sind wie folgt:

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

Das Sparse-Aufmerksamkeitsmodul ist Nicht nur für lange Codeaufgaben geeignet. Die Leistung wurde verbessert und die Nutzung des Videospeichers kann erheblich reduziert werden. Auf demselben Gerät kann SASA eine größere Stapelgröße festlegen, während das Modell mit vollständiger Selbstaufmerksamkeit dem Problem des Speichermangels gegenübersteht . Die spezifische Videospeichernutzung ist wie folgt:

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

SASA kann als Modul mit geringer Aufmerksamkeit auf andere vorab trainierte Modelle migriert werden, die auf Transformer basieren, um Aufgaben zur Verarbeitung natürlicher Sprache mit langen Sequenzen zu bewältigen Open-Source-Framework EasyNLP (https://github.com/alibaba/EasyNLP) und leisten Sie einen Beitrag zur Open-Source-Community.

Link zum Papier:
https://arxiv.org/abs/2205.13730

Das obige ist der detaillierte Inhalt vonOptimierungsmethode für Transformer-Modelle für lange Codesequenzen zur Verbesserung der Leistung in Szenarien mit langem Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:51cto.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage