Kecerdasan buatan
LoRa, QLoRA dan QA-LoRA: Kemampuan Adaptasi yang Efisien pada Model Bahasa Besar Melalui Faktorisasi Matriks Berperingkat Rendah

Model Bahasa Besar (LLM) telah menciptakan niche unik, menawarkan kemampuan luar biasa dalam memahami dan menghasilkan teks yang mirip dengan manusia. Kekuatan LLM dapat ditelusuri kembali ke ukuran besar mereka, seringkali memiliki miliaran parameter. Sementara skala besar ini memicu kinerja mereka, itu juga melahirkan tantangan, terutama ketika datang ke adaptasi model untuk tugas atau domain tertentu. Jalur konvensional untuk mengelola LLM, seperti fine-tuning semua parameter, menyajikan beban komputasi dan keuangan yang berat, sehingga memposisikan hambatan signifikan untuk adopsi luas mereka dalam aplikasi dunia nyata.
Dalam artikel sebelumnya, kami menyelami fine-tuning Model Bahasa Besar (LLM) untuk menyesuaikannya dengan kebutuhan spesifik. Kami menjelajahi berbagai metodologi fine-tuning seperti Fine-Tuning Berbasis Instruksi, Fine-Tuning Tugas Tunggal, dan Fine-Tuning Efisien Parameter (PEFT), masing-masing dengan pendekatan unik untuk mengoptimalkan LLM untuk tugas yang berbeda. Sentral dalam diskusi adalah arsitektur transformer, tulang punggung LLM, dan tantangan yang ditimbulkan oleh tuntutan komputasi dan memori untuk menangani sejumlah besar parameter selama fine-tuning.
Gambar di atas mewakili skala berbagai model bahasa besar, diurutkan berdasarkan jumlah parameter mereka. Terutama: PaLM, BLOOM, dll.
Sampai tahun ini, telah ada kemajuan yang mengarah ke model yang bahkan lebih besar. Namun, menyetel model raksasa, open-source seperti itu pada sistem standar tidak memungkinkan tanpa teknik optimasi khusus.
Masuk Low-Rank Adaptation (LoRA) yang diperkenalkan oleh Microsoft dalam makalah ini, yang bertujuan untuk memitigasi tantangan ini dan membuat LLM lebih mudah diakses dan disesuaikan.
Inti LoRA terletak pada pendekatannya untuk adaptasi model tanpa memasuki kerumitan pelatihan ulang model secara keseluruhan. Tidak seperti fine-tuning tradisional, di mana setiap parameter tunduk pada perubahan, LoRA mengadopsi rute yang lebih pintar. Ini membekukan bobot model pra-dilatih dan memperkenalkan matriks dekomposisi peringkat yang dapat dilatih ke setiap lapisan arsitektur Transformer. Pendekatan ini secara drastis memangkas jumlah parameter yang dapat dilatih, memastikan proses adaptasi yang lebih efisien.
Evolusi Strategi Penyetelan LLM
Mengingat perjalanan penyetelan LLM, satu dapat mengidentifikasi beberapa strategi yang digunakan oleh praktisi selama bertahun-tahun. Awalnya, sorotan ada pada fine-tuning model pra-dilatih, strategi yang melibatkan perubahan menyeluruh parameter model untuk menyesuaikan tugas tertentu. Namun, ketika model tumbuh dalam ukuran dan kompleksitas, tuntutan komputasi dari pendekatan ini juga tumbuh.
Strategi berikutnya yang mendapatkan traksi adalah fine-tuning subset, versi yang lebih terkendali dari pendahulunya. Di sini, hanya subset dari parameter model yang disesuaikan, mengurangi beban komputasi sampai batas tertentu. Meskipun memiliki kelebihan, fine-tuning subset masih tidak dapat mengikuti laju pertumbuhan ukuran LLM.
Ketika praktisi berusaha untuk mengeksplorasi jalur yang lebih efisien, fine-tuning penuh muncul sebagai pendekatan yang ketat namun bermanfaat.
Pengenalan LoRA
Peringkat sebuah matriks memberikan kita gambaran tentang dimensi yang dibuat oleh kolomnya, ditentukan oleh jumlah baris atau kolom unik yang dimilikinya.
- Matriks Berperingkat Penuh: Peringkatnya sesuai dengan jumlah baris atau kolom yang lebih kecil.
- Matriks Berperingkat Rendah: Dengan peringkat yang jauh lebih kecil dari jumlah baris dan kolom, ia menangkap fitur yang lebih sedikit.
Sekarang, model besar memahami pemahaman yang luas tentang domainnya, seperti bahasa dalam model bahasa. Namun, menyetel mereka untuk tugas tertentu seringkali hanya membutuhkan penekanan pada sebagian kecil dari pemahaman ini. Di sinilah LoRA bersinar. Ini menyarankan bahwa matriks yang menampilkan penyesuaian bobot ini dapat menjadi matriks berperingkat rendah, sehingga menangkap fitur yang lebih sedikit.
LoRA dengan cerdas membatasi peringkat matriks pembaruan dengan membaginya menjadi dua matriks berperingkat rendah yang lebih kecil. Jadi, alih-alih mengubah seluruh matriks bobot, itu hanya mengubah sebagian dari itu, membuat tugas fine-tuning lebih efisien.
Mengaplikasikan LoRA pada Transformer
LoRA membantu meminimalkan beban pelatihan dalam jaringan saraf dengan fokus pada matriks bobot tertentu. Di bawah arsitektur Transformer, matriks bobot tertentu terkait dengan mekanisme perhatian diri, yaitu Wq, Wk, Wv, dan Wo, selain dua lagi di modul Multi-Layer Perceptron (MLP).
Penjelasan Matematis di Balik LoRA
Mari kita turunkan matematika di balik LoRA:
- Matriks Bobot Pra-dilatih W0:
- Ini dimulai dengan matriks bobot pra-dilatih W0 dengan dimensi d×k. Ini berarti matriks memiliki d baris dan k kolom.
- Dekomposisi Berperingkat Rendah:
- Alih-alih langsung memperbarui matriks keseluruhan W0, yang dapat memakan biaya komputasi, metode ini mengusulkan pendekatan dekomposisi berperingkat rendah.
- Pembaruan ΔW ke W0 dapat diwakili sebagai produk dari dua matriks: B dan A.
- B memiliki dimensi d×r
- A memiliki dimensi r×k
- Titik kunci di sini adalah bahwa peringkat r jauh lebih kecil dari d dan k, yang memungkinkan representasi yang lebih komputasi-efisien.
- Pelatihan:
- Selama proses pelatihan, W0 tetap tidak berubah. Ini disebut sebagai “membekukan” bobot.
- Di sisi lain, A dan B adalah parameter yang dapat dilatih. Ini berarti bahwa, selama pelatihan, penyesuaian dilakukan pada matriks A dan B untuk meningkatkan kinerja model.
- Perkalian dan Penjumlahan:
- Baik W0 dan pembaruan ΔW (yang merupakan produk dari B dan A) dikalikan dengan input yang sama (ditandai sebagai x).
- Hasil dari perkalian ini kemudian dijumlahkan.
- Proses ini diringkas dalam persamaan: h=W0x+ΔWx=W0x+BAx. Di sini, h mewakili output akhir setelah menerapkan pembaruan ke input x.
Singkatnya, metode ini memungkinkan cara yang lebih efisien untuk memperbarui matriks bobot besar dengan merepresentasikan pembaruan menggunakan dekomposisi berperingkat rendah, yang dapat bermanfaat dalam hal efisiensi komputasi dan penggunaan memori.
Inisialisasi dan Penskalaan:
Ketika melatih model, bagaimana kita menginisialisasi parameter dapat secara signifikan mempengaruhi efisiensi dan efektivitas proses pembelajaran. Dalam konteks pembaruan matriks bobot menggunakan A dan B:
- Inisialisasi Matriks A dan B:
- Matriks A: Matriks ini diinisialisasi dengan nilai Gaussian acak, juga dikenal sebagai distribusi normal. Rasionalku di balik menggunakan inisialisasi Gaussian adalah untuk memecahkan simetri: neuron yang berbeda dalam lapisan yang sama akan belajar fitur yang berbeda ketika mereka memiliki bobot awal yang berbeda.
- Matriks B: Matriks ini diinisialisasi dengan nol. Dengan melakukan ini, pembaruan ΔW=BA dimulai sebagai nol di awal pelatihan. Ini memastikan bahwa tidak ada perubahan mendadak dalam perilaku model di awal, memungkinkan model untuk beradaptasi secara bertahap saat B belajar nilai yang tepat selama pelatihan.
- Menskalakan Output dari ΔW:
- Setelah menghitung pembaruan ΔW, outputnya diskalakan dengan faktor rα di mana α adalah konstanta. Dengan menskalakan, magnitudo pembaruan dikontrol.
- Penskalaan ini terutama penting ketika peringkat r berubah. Misalnya, jika Anda memutuskan untuk meningkatkan peringkat untuk akurasi yang lebih tinggi (dengan biaya komputasi), penskalaan memastikan bahwa Anda tidak perlu menyesuaikan banyak hiperparameter lain dalam proses. Ini memberikan tingkat stabilitas pada model.
Dampak Praktis LoRA
LoRA telah menunjukkan potensinya untuk menyetel LLM ke gaya artistik tertentu dengan efisien oleh komunitas AI. Ini terutama ditunjukkan dalam adaptasi model untuk meniru gaya artistik Greg Rutkowski.
Seperti yang disoroti dalam makalah dengan GPT-3 175B sebagai contoh. Memiliki contoh fine-tuning model dengan 175B parameter masing-masing cukup mahal. Namun, dengan LoRA, parameter yang dapat dilatih turun sebesar 10.000 kali, dan penggunaan memori GPU dipangkas menjadi sepertiga.
Metodologi LoRA bukan hanya mempersonifikasikan langkah signifikan menuju membuat LLM lebih mudah diakses tetapi juga menekankan potensi untuk menjembatani kesenjangan antara kemajuan teoretis dan aplikasi praktis dalam domain AI. Dengan menghilangkan hambatan komputasi dan memfasilitasi proses adaptasi model yang lebih efisien, LoRA berpotensi memainkan peran penting dalam adopsi dan penerapan LLM yang lebih luas dalam skenario dunia nyata.
QLoRA (Kuantisasi)
Sementara LoRA adalah permainan ganti dalam mengurangi kebutuhan penyimpanan, itu masih membutuhkan GPU yang kuat untuk memuat model untuk pelatihan. Di sinilah QLoRA, atau Kuantisasi LoRA, masuk, menggabungkan LoRA dengan Kuantisasi untuk pendekatan yang lebih cerdas.
Biasanya, parameter bobot disimpan dalam format 32-bit (FP32), yang berarti setiap elemen dalam matriks mengambil 32 bit ruang. Bayangkan jika kita bisa mengompresi informasi yang sama ke dalam hanya 8 atau bahkan 4 bit. Itulah inti dari QLoRA. Kuantisasi merujuk pada proses pemetaan nilai kontinu tak terhingga ke himpunan nilai diskrit terbatas. Dalam konteks LLM, ini merujuk pada proses mengonversi bobot model dari tipe data presisi yang lebih tinggi ke tipe data presisi yang lebih rendah.
Berikut adalah penjelasan sederhana tentang QLoRA:
- Kuantisasi Awal: Pertama, Model Bahasa Besar (LLM) dikuantisasi ke 4 bit, secara signifikan mengurangi jejak memori.
- Pelatihan LoRA: Kemudian, pelatihan LoRA dilakukan, tetapi dalam presisi standar 32-bit (FP32).
Sekarang, Anda mungkin bertanya-tanya, mengapa kembali ke 32 bit untuk pelatihan setelah menyusut ke 4 bit? Nah, untuk melatih adapter LoRA secara efektif dalam FP32, bobot model perlu kembali ke FP32 juga. Perpindahan bolak-balik ini dilakukan dengan cara yang cerdas dan bertahap untuk menghindari kelebihan memori GPU.
LoRA menemukan aplikasi praktisnya dalam perpustakaan Parameter Efficient Fine-Tuning (PEFT) dari Hugging Face, memudahkan penggunaannya. Untuk mereka yang ingin menggunakan QLoRA, itu dapat diakses melalui kombinasi perpustakaan bitsandbytes dan PEFT. Selain itu, perpustakaan Transformer Reinforcement Learning (TRL) dari HuggingFace memfasilitasi fine-tuning terawasi dengan dukungan terintegrasi untuk LoRA. Ketiga perpustakaan ini menyediakan toolkit esensial untuk fine-tuning model pra-dilatih yang dipilih, memungkinkan generasi deskripsi produk yang persuasif dan kohatif ketika dipicu dengan instruksi atribut spesifik.
Setelah fine-tuning dari QLoRA, bobot harus kembali ke format presisi tinggi, yang dapat menyebabkan kehilangan akurasi dan kekurangan optimasi untuk mempercepat proses.
Solusi yang diusulkan adalah mengelompokkan matriks bobot menjadi segmen yang lebih kecil dan menerapkan kuantisasi dan adaptasi berperingkat rendah pada setiap grup secara individual. Metode baru, yang disebut QA-LoRA, berusaha untuk menggabungkan kelebihan kuantisasi dan adaptasi berperingkat rendah sambil menjaga proses tetap efisien dan model efektif untuk tugas yang diinginkan.
Kesimpulan
Dalam artikel ini kita menyentuh tantangan yang ditimbulkan oleh ukuran parameter mereka yang besar. Kita menyelami praktik fine-tuning tradisional dan tuntutan komputasi dan keuangan yang terkait. Inti LoRA terletak pada kemampuannya untuk memodifikasi model pra-dilatih tanpa melatihnya secara keseluruhan, sehingga mengurangi parameter yang dapat dilatih dan membuat proses adaptasi lebih hemat biaya.
Kita juga menyentuh singkat tentang Quantized LoRA (QLoRA), yang menggabungkan LoRA dengan Kuantisasi untuk mengurangi jejak memori model sambil mempertahankan presisi esensial untuk pelatihan. Dengan teknik lanjutan ini, praktisi sekarang dilengkapi dengan perpustakaan yang kuat, memfasilitasi adopsi dan penerapan LLM yang lebih mudah di berbagai skenario dunia nyata.
Strategi ini dirancang untuk menyeimbangkan membuat LLM yang dapat disesuaikan untuk tugas tertentu dan memastikan proses fine-tuning dan penerapan tidak terlalu menuntut dalam hal sumber daya komputasi dan penyimpanan.




















