Model dan platform AI
LoRa, QLoRA, dan QA-LoRA: Adaptasi 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, yang sering memiliki miliaran parameter. Sementara skala besar ini memacu 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 biaya yang besar, sehingga menjadi hambatan signifikan bagi adopsi mereka yang luas dalam aplikasi dunia nyata.
Dalam artikel sebelumnya, kami membahas tentang fine-tuning Model Bahasa Besar (LLM) untuk disesuaikan dengan kebutuhan spesifik. Kami menjelajahi berbagai metode fine-tuning seperti Instruction-Based Fine-Tuning, Single-Task Fine-Tuning, dan Parameter Efficient Fine-Tuning (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 permintaan komputasi dan memori yang besar dalam menangani jumlah parameter yang sangat besar selama fine-tuning.
Gambar di atas mewakili skala dari berbagai model bahasa besar, diurutkan berdasarkan jumlah parameter mereka. Yang menonjol adalah: PaLM, BLOOM, dll.
Sampai tahun ini, telah ada kemajuan yang menyebabkan model yang lebih besar. Namun, mengatur model raksasa seperti itu pada sistem standar tidak memungkinkan tanpa teknik optimasi khusus.
Masuklah Low-Rank Adaptation (LoRA) yang diperkenalkan oleh Microsoft (MSFT ) dalam paper ini, yang bertujuan untuk memitigasi tantangan ini dan membuat LLM lebih dapat diakses dan disesuaikan.
Inti dari LoRA terletak pada pendekatannya untuk adaptasi model tanpa memasuki kerumitan pelatihan ulang model secara keseluruhan. Tidak seperti fine-tuning tradisional, di mana setiap parameter berubah, LoRA mengadopsi rute yang lebih cerdas. Ini membekukan bobot model pra-latih dan memperkenalkan matriks dekomposisi peringkat yang dapat dilatih ke dalam 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 adalah pada fine-tuning model pra-latih, strategi yang melibatkan perubahan menyeluruh parameter model untuk disesuaikan dengan tugas tertentu. Namun, ketika model tumbuh dalam ukuran dan kompleksitas, begitu juga permintaan komputasi dari pendekatan ini.
Strategi berikutnya yang mendapatkan perhatian adalah subset fine-tuning, versi yang lebih terbatas dari pendahulunya. Di sini, hanya subset dari parameter model yang difine-tune, mengurangi beban komputasi sampai batas tertentu. Meskipun memiliki kelebihan, subset fine-tuning masih tidak dapat mengimbangi 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 matriks memberikan gambaran tentang dimensi yang dibuat oleh kolomnya, yang 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 domainnya dengan baik, seperti bahasa dalam model bahasa. Namun, fine-tuning mereka untuk tugas tertentu sering hanya membutuhkan penekanan pada sebagian kecil dari pemahaman ini. Inilah tempat 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 peringkat rendah yang lebih kecil. Jadi, bukan mengubah seluruh matriks bobot, ia hanya mengubah sebagian dari itu, membuat tugas fine-tuning lebih efisien.
Menerapkan LoRA pada Transformer
LoRA membantu meminimalkan beban pelatihan dalam jaringan saraf dengan fokus pada matriks bobot tertentu. Dalam arsitektur Transformer, matriks bobot tertentu terkait dengan mekanisme perhatian diri, yaitu Wq, Wk, Wv, dan Wo, serta dua lagi dalam modul Multi-Layer Perceptron (MLP).
Penjelasan Matematika di Balik LoRA
Mari kita turut memahami matematika di balik LoRA:
- Matriks Bobot Pra-Latih :
- Ini dimulai dengan matriks bobot pra-latih dengan dimensi . Ini berarti matriks memiliki baris dan kolom.
- Dekomposisi Berperingkat Rendah:
- Bukan dengan langsung memperbarui matriks keseluruhan , yang dapat komputasi mahal, metode ini mengusulkan pendekatan dekomposisi berperingkat rendah.
- Pembaruan ke dapat diwakili sebagai produk dari dua matriks: dan .
- memiliki dimensi
- memiliki dimensi
- Titik kunci di sini adalah bahwa peringkat jauh lebih kecil dari dan , yang memungkinkan representasi yang lebih komputasi-efisien.
- Pelatihan:
- Selama proses pelatihan, tetap tidak berubah. Ini disebut sebagai “membekukan” bobot.
- Di sisi lain, dan adalah parameter yang dapat dilatih. Ini berarti bahwa, selama pelatihan, penyesuaian dilakukan pada matriks dan untuk meningkatkan kinerja model.
- Perkalian dan Penambahan:
- Kedua dan pembaruan (yang merupakan produk dari dan ) dikalikan dengan input yang sama (ditandai sebagai ).
- Hasil dari perkalian ini kemudian ditambahkan bersama.
- Proses ini diringkas dalam persamaan: Di sini, mewakili output akhir setelah menerapkan pembaruan ke input .
Singkatnya, metode ini memungkinkan cara yang lebih efisien untuk memperbarui matriks bobot besar dengan mewakili 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 dan :
- Inisialisasi Matriks dan :
- Matriks : Matriks ini diinisialisasi dengan nilai Gaussian acak, juga dikenal sebagai distribusi normal. Alasan 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 : Matriks ini diinisialisasi dengan nol. Dengan melakukan ini, pembaruan mulai sebagai nol di awal pelatihan. Ini memastikan bahwa tidak ada perubahan mendadak dalam perilaku model di awal, memungkinkan model untuk beradaptasi secara bertahap saat belajar nilai yang tepat selama pelatihan.
- Penskalaan Output dari :
- Setelah menghitung pembaruan , outputnya diskalakan dengan faktor di mana adalah konstanta. Dengan menskalakan, magnitudo pembaruan dikendalikan.
- Penskalaan ini sangat penting ketika peringkat berubah. Misalnya, jika Anda memutuskan untuk meningkatkan peringkat untuk akurasi yang lebih baik (dengan biaya komputasi), penskalaan memastikan bahwa Anda tidak perlu menyesuaikan banyak hiperparameter lain dalam proses.
Dampak Praktis LoRA
LoRA telah menunjukkan potensinya untuk menyetel LLM ke gaya seni tertentu dengan efisien oleh komunitas AI. Ini ditunjukkan dalam penyesuaian model untuk meniru gaya seni Greg Rutkowski.
Sebagaimana 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 tidak hanya memperlihatkan langkah signifikan menuju membuat LLM lebih dapat diakses tetapi juga menekankan potensi untuk menjembatani kesenjangan antara kemajuan teoretis dan aplikasi praktis di domain AI. Dengan menghilangkan hambatan komputasi dan memfasilitasi proses adaptasi model yang lebih efisien, LoRA diposisikan untuk memainkan peran penting dalam adopsi dan penerapan LLM yang lebih luas dalam skenario dunia nyata.
QLoRA (Kuantisasi)
Sementara LoRA adalah permainan yang mengubah dalam mengurangi kebutuhan penyimpanan, itu masih menuntut GPU yang besar untuk memuat model untuk pelatihan. Inilah di mana QLoRA, atau Kuantisasi LoRA, masuk, dengan menggabungkan LoRA dengan Kuantisasi untuk pendekatan yang lebih cerdas.
Normalnya, 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 mengacu pada proses pemetaan nilai kontinu tak terhingga ke himpunan nilai diskrit terbatas. Dalam konteks LLM, ini mengacu 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 menjadi 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) Hugging Face, memudahkan penerapannya. Untuk mereka yang ingin menggunakan QLoRA, itu dapat diakses melalui kombinasi perpustakaan bitsandbytes dan PEFT. Selain itu, perpustakaan HuggingFace Transformer Reinforcement Learning (TRL) memfasilitasi fine-tuning terarah dengan dukungan terintegrasi untuk LoRA. Bersama, ketiga perpustakaan ini menyediakan toolkit esensial untuk fine-tuning model pra-latih yang dipilih, memungkinkan generasi deskripsi produk yang persuasif dan kohatif ketika dipicu dengan instruksi atribut spesifik.
Post fine-tuning dari QLoRA, bobot harus kembali ke format presisi tinggi, yang dapat menyebabkan kehilangan akurasi dan kurangnya 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 individu. Metode baru, yang disebut QA-LoRA, mencoba menggabungkan keuntungan dari 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 yang sangat besar. Kita membahas praktik fine-tuning tradisional dan tuntutan komputasi serta biaya yang terkait. Inti dari LoRA terletak pada kemampuannya untuk memodifikasi model pra-latih tanpa melatih ulang keseluruhan model, sehingga mengurangi parameter yang dapat dilatih dan membuat proses adaptasi lebih hemat biaya.
Kita juga membahas singkat tentang Kuantisasi LoRA (QLoRA), yang merupakan kombinasi dari LoRA dan Kuantisasi, yang 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 antara membuat LLM dapat disesuaikan untuk tugas tertentu dan memastikan proses fine-tuning dan penerapan tidak terlalu menuntut dalam hal komputasi dan sumber daya penyimpanan.




















