Rumah > Peranti teknologi > AI > teks badan

Kaedah pengoptimuman model pengubah untuk urutan kod panjang untuk meningkatkan prestasi dalam senario kod panjang

PHPz
Lepaskan: 2023-04-29 08:34:06
ke hadapan
1665 orang telah melayarinya

Platform pembelajaran mesin Awan Alibaba PAI bekerjasama dengan pasukan Profesor Gao Ming dari East China Normal University untuk menerbitkan model Transformer SASA yang menyedari struktur di SIGIR2022 Ini ialah kaedah pengoptimuman model Transformer untuk jujukan kod panjang, khusus untuk menambah baik senario kod panjang dan prestasi. Memandangkan kerumitan modul perhatian kendiri meningkat secara eksponen dengan panjang jujukan, kebanyakan model bahasa pralatihan (PPLM) berasaskan pengaturcaraan menggunakan pemotongan jujukan untuk memproses jujukan kod. Kaedah SASA mengurangkan pengiraan perhatian kendiri dan menggabungkan ciri-ciri struktur kod, dengan itu meningkatkan prestasi tugas urutan panjang dan mengurangkan memori dan kerumitan pengiraan.

Kertas: Tingting Liu, Chengyu Wang, Cen Chen, Ming Gao, dan Aoying Zhou Memahami Bahasa Pengaturcaraan Panjang dengan SIGIR 2022

Rangka Kerja Model

.

Rajah berikut menunjukkan rangka kerja keseluruhan SASA:

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

Antaranya, SASA terutamanya terdiri daripada dua peringkat: peringkat prapemprosesan dan peringkat latihan Sparse Transformer. Dalam peringkat prapemprosesan, matriks interaksi antara dua token diperolehi, satu ialah matriks frekuensi top-k, dan satu lagi ialah matriks corak AST. Matriks kekerapan Top-k menggunakan model bahasa pra-latihan kod untuk mempelajari kekerapan interaksi perhatian antara token pada korpus CodeSearchNet Matriks corak AST ialah Pokok Sintaks Abstrak (AST) yang menghuraikan kod tersebut pada hubungan sambungan pepohon sintaks maklumat interaktif antara token. Fasa latihan Sparse Transformer menggunakan Transformer Encoder sebagai rangka kerja asas, menggantikan perhatian kendiri penuh dengan perhatian kendiri jarang sedar struktur, dan melakukan pengiraan perhatian antara pasangan token yang mematuhi corak tertentu, dengan itu mengurangkan kerumitan pengiraan.

Perhatian jarang SASA termasuk empat modul berikut:

  • Perhatian tetingkap gelongsor: Kira perhatian kendiri hanya antara token dalam tetingkap gelongsor, mengekalkan ciri-ciri konteks setempat kerumitan ialah, ialah panjang jujukan, dan ialah saiz tetingkap gelongsor.
  • Perhatian global: Tetapkan token global tertentu ini akan melakukan pengiraan perhatian dengan semua token dalam jujukan untuk mendapatkan maklumat global jujukan adalah, iaitu bilangan token global.
  • Top-k jarang perhatian: Interaksi perhatian dalam model Transformer adalah jarang dan berekor panjang Untuk setiap token, hanya token top-k dengan interaksi perhatian tertinggi dikira.
  • Perhatian struktur sedar AST: Kod ini berbeza daripada jujukan bahasa semula jadi dan mempunyai ciri struktur yang lebih kukuh Kod dihuraikan ke dalam pokok sintaks abstrak (AST), dan kemudian perhatian dikira berdasarkan sambungan perhubungan dalam skop sintaks.

Untuk menyesuaikan diri dengan ciri pengkomputeran selari perkakasan moden, kami membahagikan jujukan kepada beberapa blok dan bukannya mengira dalam unit token Setiap blok pertanyaan berkaitan dengan

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

blok tingkap gelongsor dan

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

blok global dan

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

atas-k dan Blok AST kira perhatian, dan kerumitan pengiraan keseluruhan ialah

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

b ialah saiz blok.

Setiap corak perhatian jarang sepadan dengan matriks perhatian dengan mengambil perhatian tetingkap gelongsor sebagai contoh, pengiraan matriks perhatian ialah:

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

Kod pseudo ASA. :

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

Hasil eksperimen

Kami menggunakan empat set data tugasan yang disediakan oleh CodeXGLUE[1] untuk penilaian, iaitu pengesanan klon kod, pengesanan kecacatan, carian kod dan ringkasan kod. Kami mengekstrak data yang panjang jujukannya melebihi 512 untuk membentuk set data jujukan yang panjang Keputusan eksperimen adalah seperti berikut:

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

Daripada keputusan eksperimen, ia dapat dilihat. bahawa prestasi SASA pada tiga set data adalah Prestasi dengan ketara melebihi semua Garis Dasar. Antaranya, Roberta-base[2], CodeBERT[3], dan GraphCodeBERT[4] menggunakan pemotongan untuk memproses jujukan panjang, yang akan kehilangan sebahagian daripada maklumat konteks. Longformer[5] dan BigBird[6] ialah kaedah yang digunakan untuk memproses jujukan panjang dalam pemprosesan bahasa semula jadi, tetapi mereka tidak menganggap ciri-ciri struktur kod, dan pemindahan terus kepada tugas kod adalah tidak berkesan.

Untuk mengesahkan kesan top-k sparse attention dan AST-aware sparse attention modul, kami menjalankan eksperimen ablasi pada set data BigCloneBench dan Pengesanan Kecacatan Hasilnya adalah seperti berikut:

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

Modul perhatian yang jarang bukan sahaja meningkatkan prestasi tugasan kod yang panjang, tetapi juga mengurangkan penggunaan memori video dengan ketara Di bawah peranti yang sama, SASA boleh menetapkan saiz kelompok yang lebih besar, manakala diri penuh -model perhatian menghadapi masalah ingatan, penggunaan memori video khusus adalah seperti berikut:

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

SASA, sebagai modul perhatian yang jarang, boleh dipindahkan ke model pra-latihan yang lain berdasarkan Transformer untuk memproses tugas pemprosesan bahasa semula jadi urutan panjang akan disepadukan ke dalam rangka kerja sumber terbuka EasyNLP (https://github.com/alibaba/EasyNLP) dan menyumbang kepada komuniti sumber terbuka.

Pautan kertas:
https://arxiv.org/abs/2205.13730

Atas ialah kandungan terperinci Kaedah pengoptimuman model pengubah untuk urutan kod panjang untuk meningkatkan prestasi dalam senario kod panjang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!