Model bahasa skala besar (LLM) mendapatkan lebih banyak perhatian akhir-akhir ini, tetapi kemampuan belajar nol/beberapa-shot sering dievaluasi, dan saya merasa bahwa mereka tidak digunakan untuk menggunakannya untuk menyempurnakan klasifikasi teks seperti model pra-terlatih yang ada seperti Bert. Oleh karena itu, untuk mengetahui berapa banyak klasifikasi teks yang dimungkinkan dengan LLM, kami melakukan percobaan menggunakan LLM untuk klasifikasi teks menggunakan metode yang sama dengan klasifikasi teks menggunakan Bert.
Tujuan dari percobaan ini adalah untuk menyelidiki apa yang terjadi ketika LLM, yang sering menarik perhatian untuk kemampuan belajar nol/beberapa-shot, digunakan untuk klasifikasi teks biasa.
Bert, yang biasanya digunakan untuk klasifikasi teks hingga sekarang, adalah model dua arah, dan sering menggunakan token kalimat [CLS] untuk klasifikasi teks. Namun, LLMS, yang biasanya digunakan hari ini, seperti Llama, adalah model searah. Oleh karena itu, dalam model searah, tidak ada gunanya mengambil token kalimat. Oleh karena itu, dalam implementasi ini, kami menggunakan representasi tertanam dari token akhir LlamaForSequenceClassification transformers referensi. Dalam model bahasa searah, token akhir pernyataan hanya dapat dianggap sebagai token dari seluruh pernyataan dalam suatu seri, sehingga dianggap sebagai alternatif yang tepat untuk [CLS] .
Selain itu, karena penyempurnaan penuh LLM sangat sulit dari memori dan perspektif efisiensi komputasi, kami menggunakan LORA, teknik penyempurnaan yang memungkinkan Anda mencapai kinerja yang sebanding dengan fine-tuning penuh dengan hanya menyesuaikan matriks tambahan tambahan. Catatan: PEFT digunakan untuk menyempurnakan dengan materi penjelasan Lora.
Dalam percobaan evaluasi, kami akan mengklasifikasikan sembilan nilai corpus berita LiveDoor. Konten eksperimental hampir sama dengan tutorial klasifikasi teks penulis menggunakan Bert.
Dalam percobaan evaluasi, tujuh jenis LLM Jepang digunakan. Secara khusus, kami melakukan percobaan pada empat model RINNA 3.6B dan model cyberagent 7b, 3B, dan 1B.
Sebagai cara untuk menyesuaikan hiperparameter, kami melakukan percobaan dengan tingkat pembelajaran yang ditetapkan ke 1E-4, 3E-4, 5E-4, dan 1E-3. Kami juga bereksperimen dengan tiga jenis format input ke model. Khususnya, untuk setiap artikel di Livedoor News Corpus, judulnya disimpan dalam variabel yang disebut title dan body artikel, dan disuntikkan ke dalam tiga templat berikut.
| Jenis Template | Penampilan |
|---|---|
| 0 | f "title: {title} nbody: {body} nlabel:" |
| 1 | f "title: {title} nbody: {body}" |
| 2 | f "{title} n {body}" |
Kami melakukan percobaan satu per satu untuk semua kombinasi tingkat pembelajaran dan templat yang disebutkan di atas, dan menggunakan hiperparameter dengan nilai F rata-rata makro tertinggi dalam set pengembangan untuk evaluasi dalam set tes akhir. Peringkat R Lora ditetapkan pada 32.
Perhatikan bahwa hasil eksperimen tidak akurat karena percobaan dilakukan hanya sekali dengan nilai benih bilangan acak tunggal dan tidak ada validasi silang split yang dilakukan. Oleh karena itu, tolong jangan terlalu mempercayai hasil di bawah ini, tapi tolong lihat saja sebagai referensi.
Hasilnya ditunjukkan pada tabel di bawah ini. Hasil eksperimen diatur dalam urutan menurun untuk nilai F rata -rata makro. Semua hasil selanjutnya dapat dilihat dari file CSV yang disimpan di direktori results .
| Ketepatan | Presisi | Mengingat | F1 | |
|---|---|---|---|---|
| Rinna/Jepang-GPT-NEOX-3.6B-Instruksi-SFT-V2 | 97.96 | 97.77 | 97.76 | 97.75 |
| Rinna/Jepang-GPT-NEOX-3.6B | 97.55 | 97.24 | 97.39 | 97.30 |
| Rinna/Jepang-GPT-NEOX-3.6B-Instruksi-Sft | 97.55 | 97.32 | 97.27 | 97.27 |
| Rinna/Jepang-GPT-NEOX-3.6B-INSTRUKSI-PPO | 97.55 | 97.03 | 97.37 | 97.18 |
| Cyberagent/Open-CalM-7B | 97.01 | 96.76 | 96.42 | 96.55 |
| Cyberagent/Open-CalM-3B | 96.88 | 96.38 | 96.51 | 96.42 |
| Cyberagent/Open-Calm-1B | 94.43 | 94.24 | 93.80 | 93.98 |
Dari meja, kita dapat melihat bahwa arahan yang disetel rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 menunjukkan nilai F tertinggi. Di sisi lain, model yang relatif besar di 7B, cyberagent/open-calm-7b memiliki nilai F yang sedikit lebih rendah. Untuk meningkatkan kinerja, mungkin perlu untuk menyesuaikannya sedikit lagi, seperti Rola R dan paras tinggi lainnya.
Kebetulan, nilai F dari rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 adalah 97.75 , yang lebih tinggi dari nilai F dari studio-ousia/luke-japanese-large-lite yang mencapai kinerja tertinggi dalam tutorial klasifikasi teks menggunakan 97.47 , yang diimplementasikan oleh penulis. Tentu saja, jumlah parameter dalam model sekitar 9 kali berbeda, sehingga tidak bisa menjadi perbandingan sederhana, tetapi jika Anda ingin mengejar kinerja klasifikasi teks, menggunakan LLM+LORA sebagai alternatif untuk Bert mungkin merupakan pilihan yang baik.
Selanjutnya, rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 cyberagent/open-calm-7b rinna/japanese-gpt-neox-3.6b templat untuk tiga model yang representatif dalam percobaan ini ditunjukkan pada tabel di bawah ini.
| Templat | Val. F1 | F1 | |
|---|---|---|---|
| Rinna/Jepang-GPT-NEOX-3.6B-Instruksi-SFT-V2 | 2 | 97.27 | 97.75 |
| Rinna/Jepang-GPT-NEOX-3.6B-Instruksi-SFT-V2 | 1 | 97.18 | 97.14 |
| Rinna/Jepang-GPT-NEOX-3.6B-Instruksi-SFT-V2 | 0 | 97.05 | 96.80 |
| Rinna/Jepang-GPT-NEOX-3.6B | 1 | 97.14 | 97.30 |
| Rinna/Jepang-GPT-NEOX-3.6B | 2 | 96.92 | 97.36 |
| Rinna/Jepang-GPT-NEOX-3.6B | 0 | 96.61 | 96.69 |
| Cyberagent/Open-CalM-7B | 1 | 97.22 | 96.55 |
| Cyberagent/Open-CalM-7B | 0 | 97.07 | 96.56 |
| Cyberagent/Open-CalM-7B | 2 | 96.88 | 96.85 |
Secara umum, kemampuan inferensi LLM sangat dipengaruhi oleh template (prompt). Di sisi lain, karena percobaan ini bukan pengaturan nol/beberapa-shot, diharapkan perbedaan kinerja karena templat dapat dikurangi sampai batas tertentu. Namun, hasilnya menunjukkan bahwa templat sebelumnya telah menghasilkan perbedaan tertentu dalam nilai F (sekitar 1 titik dalam nilai F). template_type=0 adalah templat yang relatif kompleks, template_type=2 adalah templat sederhana yang hanya digabungkan dengan jeda garis, tetapi dapat dilihat bahwa template_type=2 cenderung memiliki kinerja yang lebih baik. Prompt sangat penting dalam pengaturan nol/beberapa-shot, tetapi jika Anda dapat membuat tuning yang baik, mungkin lebih baik untuk menjaga petunjuk sesederhana mungkin.
Selanjutnya, mari kita lihat kinerja setiap tingkat pembelajaran ketika model ditetapkan untuk rinna/japanese-gpt-neox-3.6b dan template_type ditetapkan menjadi 2 .
| Lr | Val. F1 | Ketepatan | Presisi | Mengingat | F1 |
|---|---|---|---|---|---|
| 5e-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 3e-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1e-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 5e-3 | 24.78 | 32.20 | 36.30 | 30.27 | 28.21 |
| 3e-3 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 5e-4 | 96.77 | 98.23 | 98.02 | 97.87 | 97.93 |
| 3e-4 | 96.74 | 96.88 | 96.46 | 96.21 | 96.30 |
| 1E-4 | 94.79 | 97.01 | 96.85 | 96.72 | 96.76 |
| 5e-5 | 94.28 | 95.92 | 95.73 | 95.50 | 95.58 |
| 3e-5 | 93.74 | 94.02 | 93.50 | 93.61 | 93.55 |
| 1E-5 | 78.94 | 81.25 | 80.21 | 79.43 | 79.62 |
Dari meja, dapat dilihat bahwa meskipun tingkat pembelajaran yang cukup besar efektif untuk belajar dengan Lora, batas atas sekitar 1e-3 , dan jika Anda menggunakan tingkat pembelajaran yang sangat besar seperti 1e-2 , pembelajaran Anda tidak akan berjalan dengan baik. Saya ingin melihat hasil eksperimen pada model yang lebih luas, tetapi ketika mengklasifikasikan menggunakan LLM+LORA, saya pikir itu ide yang baik untuk mencoba tingkat pembelajaran sekitar 5e-4 sebagai langkah pertama.
Selain itu, mari kita lihat perbedaan kinerja untuk setiap ukuran batch ketika model ditetapkan untuk rinna/japanese-gpt-neox-3.6b , template_type 2 , dan lora r ditetapkan hingga 32 .
| Ukuran batch | Lr | Val. F1 | Ketepatan | Presisi | Mengingat | F1 |
|---|---|---|---|---|---|---|
| 2 | 5e-4 | 97.12 | 98.10 | 98.02 | 97.48 | 97.70 |
| 16 | 1E-3 | 97.12 | 97.83 | 97.77 | 97.37 | 97.52 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 64 | 5e-4 | 96.57 | 97.55 | 97.39 | 97.35 | 97.35 |
| 4 | 5e-4 | 97.08 | 97.42 | 97.37 | 97.01 | 97.15 |
| 8 | 3e-4 | 97.20 | 97.28 | 96.99 | 96.87 | 96.91 |
Tabel ini diatur dalam urutan menurun untuk nilai F. Akibatnya, ada kemungkinan bahwa ada kemungkinan bahwa perbedaan kinerja dapat dihasilkan sampai batas tertentu tergantung pada ukuran batch, tetapi dalam percobaan ini, percobaan dilakukan hanya sekali dengan satu nilai benih bilangan acak, jadi tampaknya sulit untuk mencapai kesimpulan yang jelas. Secara umum, ukuran batch yang lebih kecil membutuhkan waktu lebih lama untuk berlatih dan cenderung tidak stabil dalam kinerja, jadi mungkin ide yang baik untuk mengatur ukuran batch menjadi sekitar 16 atau 32 untuk saat ini.
Akhirnya, mari kita lihat kinerja Lora per r ketika model ditetapkan untuk rinna/japanese-gpt-neox-3.6b dan template_type ditetapkan menjadi 2 .
| Lora r | Lr | Val. F1 | Ketepatan | Presisi | Mengingat | F1 |
|---|---|---|---|---|---|---|
| 8 | 5e-4 | 97.45 | 97.15 | 96.97 | 96.75 | 96.83 |
| 64 | 1E-3 | 97.22 | 97.28 | 96.96 | 96.85 | 96.89 |
| 16 | 1E-3 | 97.20 | 97.69 | 97.59 | 97.27 | 97.38 |
| 4 | 3e-4 | 97.12 | 97.69 | 97.64 | 97.24 | 97.40 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
Akibatnya, saya merasa tidak ada banyak korelasi antara nilai -nilai F dalam set pengembangan dan nilai F dalam set uji. Karena nilai Lora R dianggap sebagai "semakin besar model, semakin kecil nilainya", saya pikir akan lebih aman untuk mengaturnya ke 32 atau lebih tinggi untuk LLM berukuran sedang hanya beberapa B, tetapi saya ingin mencoba sedikit lebih banyak percobaan.
Dalam implementasi ini, kami melakukan percobaan menggunakan LLM untuk klasifikasi teks tradisional. Akibatnya, dengan membuat penyesuaian yang baik menggunakan LORA, kami dapat mencapai kinerja yang cukup tinggi dengan hanya menyesuaikan sejumlah kecil parameter, dan "menggunakan LLM sebagai alternatif untuk Bert" juga dapat dianggap sebagai pilihan yang masuk akal. Ada juga kecenderungan template untuk tetap mempengaruhi kinerja bahkan ketika pengaturan fine tuning. Selain itu, ketika melakukan penyesuaian yang baik menggunakan LORA, tingkat pembelajaran harus diatur ke nilai yang cukup besar, dan ditemukan bahwa nilai peringkat r juga kemungkinan mempengaruhi kinerja.
Penulis: Hayato Tsukagoshi
Email: [email protected]
Jika Anda ingin merujuk pada implementasi ini dalam makalah, dll., Silakan gunakan yang berikut:
@misc {
hayato-tsukagoshi-2023-llm-lora-classification,
title = { {Text Classification with LLMs and LoRA} } ,
author = { Hayato Tsukagoshi } ,
year = { 2023 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/hppRC/llm-lora-classification} } ,
url = { https://github.com/hppRC/llm-lora-classification } ,
}