QLoRA (QLoRA (Nicel Düşük Sıralı Uyarlama))

QLoRA, büyük dil modellerini 4-bit kuantize ederek LoRA adaptörleriyle tüketici GPU'larında verimli biçimde ince ayarlamayı mümkün kılan parametre-etkin bir öğrenme tekniğidir.

QLoRA (Quantized Low-Rank Adaptation), büyük dil modellerini sınırlı GPU belleğiyle ince ayarlamayı mümkün kılan bir parametre-etkin öğrenme tekniğidir. Tim Dettmers ve ekibi tarafından 2023 NeurIPS konferansında sunulan bu yöntem, modeli 4-bit kuantize ederek dondurur; ardından üzerine küçük LoRA adaptörleri eğitir. Temel model ağırlıkları hiçbir zaman güncellenmez — gradyanlar yalnızca adaptörlerden geçer. Tekniğin üç temel yeniliği şöyle açıklanabilir: **4-bit NormalFloat (NF4):** Sinir ağı ağırlıkları çoğunlukla sıfır merkezli normal dağılım gösterir. NF4, bu dağılıma göre tasarlanmış bilgi teorisi açısından optimal bir kuantizasyon veri tipidir. Standart INT4'ün yaklaşık bir puan üzerinde MMLU doğruluğu elde eder. **Çift Kuantizasyon:** İlk kuantizasyon adımında üretilen sabitlerin kendisi de ikinci kez kuantize edilir. Bu ekstra adım parametre başına ortalama 0,37 bit tasarruf yaratır ve 65 milyar parametreli bir modelde yaklaşık 3 GB ek bellek kazandırır. **Sayfalı Optimize Ediciler:** NVIDIA'nın birleşik bellek altyapısını kullanan bu mekanizma, GPU belleği dolduğunda optimizasyon durumlarını CPU RAM'ine aktarır; böylece uzun dizilerde yaşanan bellek taşması hatalarını önler. Bellek tasarrufu dramatiktir: 65 milyar parametreli bir modelin tam ince ayarı için yaklaşık 1 TB GPU belleği gerekirken QLoRA bunu tek bir 48 GB'lık GPU'ya sığdırır. 7B-8B parametreli modeller ise 10 GB'ın altında VRAM ile, yani RTX 3090 veya RTX 4090 gibi tüketici kartlarıyla eğitilebilir hale gelir. Çalışma zamanında 4-bit ağırlıklar geçici olarak BF16 formatına dönüştürülür, hesaplama yapılır ve atar; yani kalıcı olarak yüksek hassasiyetle saklanmaz. Bu tasarım kararı belleği minimize ederken kaliteyi korur. QLoRA, LLaMA, Mistral, Qwen ve Gemma dahil pratik olarak tüm dönüştürücü tabanlı modellerle çalışır. Araştırmacılar ve geliştiriciler bu yöntemi etki alanı uyarlaması, talimat ayarlaması ve RLHF tarzı hizalama görevleri için yoğun biçimde kullanmaktadır.

Nasıl Çalışır?

QLoRA, temel modeli 4-bit NF4 formatında dondurur ve bu modelin üzerine eğitilebilir LoRA adaptörleri ekler. İleri geçişte 4-bit ağırlıklar BF16'ya geçici olarak dönüştürülür, hesaplama tamamlanır ve dönüştürülen değerler atılır. Gradyanlar yalnızca adaptör parametrelerinden (düşük rankli A ve B matrisleri) geçer; temel ağırlıklar hiçbir zaman güncellenmez. Bu sayede eğitim sırasında bellekte yalnızca adaptörler ve geçici hesaplamalar yer kaplar.

4-bit NormalFloat (NF4): Bilgi Teorisi Açısından Optimal Kuantizasyon

NF4, sinir ağı ağırlıklarının genellikle sıfır merkezli normal dağılım izlediği gözleminden hareket eder. Quantile Quantization yöntemini baz alan NF4, ağırlıkları bu dağılıma göre eşit olasılıklı bölgelere böler. Böylece standart INT4 veya FP4'e kıyasla daha az bilgi kaybıyla kuantizasyon yapılır. Benchmark testlerinde NF4, FP4'ün yaklaşık 1 puan üzerinde MMLU (5-shot) doğruluğu elde eder.

Çift Kuantizasyon ve Sayfalı Optimize Ediciler

Çift Kuantizasyon, ilk kuantizasyon adımından çıkan sabitleri (ölçek faktörleri ve sıfır noktaları) ikinci kez kuantize eder. Bu işlem parametre başına ortalama 0,37 bit tasarruf yaratır; 65 milyar parametreli modelde bu ~3 GB'a karşılık gelir. Sayfalı Optimize Ediciler ise NVIDIA'nın Unified Memory özelliğini kullanır: GPU belleği dolduğunda optimizer durumları otomatik olarak CPU RAM'ine taşınır, uzun dizilerde bellek taşması hataları engellenir.

Bellek Tasarrufu: Sayılarla Karşılaştırma

65B parametreli bir modeli tam ince ayarlamak için ~1 TB GPU belleği gerekirken LoRA (16-bit taban) bunu ~130 GB'a, QLoRA ise ~48 GB'a düşürür. 7B-8B modeller için QLoRA ile eğitim, 10 GB altında VRAM gerektirir; bu, RTX 3090 (24 GB) veya RTX 4070 Ti (12 GB) ile yapılabilir anlamına gelir. Araştırmacılar artık çok GPU'lu sunucu kiralamak yerine tek bir tüketici kartıyla özel veri kümeleri üzerinde model özelleştirmesi yapabilmektedir.

QLoRA ile Büyük Model İnce Ayar Adımları

  • check_circle 4-bit nicemleme uygulayın: bitsandbytes kütüphanesiyle NF4 niceleme taban modeli küçültür
  • check_circle LoRA adaptörlerini ekleyin: nicelenen modelin üzerine eğitilebilir düşük rank matrisler yerleştirin
  • check_circle İkili niceleme: niceleme sabitlerini de niceleyerek bellek kullanımını daha da düşürün
  • check_circle Sayfalı 8-bit optimizasyon: CUDA bellek taşmasında CPU'ya aktarım yapan özel Adam optimizörü
  • check_circle Eğitim sonrası adaptörleri birleştirin: LoRA ağırlıklarını taban modelle merge edip tek dosya elde edin

LoRA ile Temel Farklar

Standart LoRA, taban modeli 16-bit (FP16 veya BF16) hassasiyetle saklar; QLoRA ise bunu 4-bit NF4'e indirger. Her ikisi de yalnızca adaptör matrislerini eğitir, ancak QLoRA'da adaptörler BF16 hassasiyetiyle çalışır. Bu fark bellek kullanımını yaklaşık yarıya indirir. Kalite açısından NF4 ve çift kuantizasyon kombinasyonu, benchmark testlerinde 16-bit LoRA kalitesine eşit veya çok yakın sonuçlar üretir. Orijinal QLoRA çalışmasındaki Guanaco modeli (65B), OASST1 verisiyle 24 saatte ince ayarlanmış ve Vicuna benchmark'ında ChatGPT ile yarışabilir düzeye gelmiştir.