deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

7B'lik bir modelin kendisi yalnızca 14 GB iken fine-tuning'in neden 112 GB gerektirdiği

Adam ile mixed-precision eğitim parametre başına yaklaşık 16 bayt maliyet getiriyor; yani 7B'lik bir model aktivasyonlar hariç 112 GB belleğe ihtiyaç duyuyor. Bir dev.to analizi bu belleğin nereye gittiğini ve LoRA ile QLoRA'nın bunu nasıl azalttığını açıklıyor.

7B'lik bir modelin kendisi yalnızca 14 GB iken fine-tuning'in neden 112 GB gerektirdiği

dev.to'da yayımlanan bir yazı, fine-tuning bellek hesabını adım adım ele alıyor ve birçok uygulayıcıyı şaşırtan bir rakama ulaşıyor: 7 milyar parametreli bir modeli mixed precision ve Adam optimizer ile eğitmek yaklaşık 112 GB bellek gerektiriyor ve modelin kendisi bunun yalnızca 14 GB'ını oluşturuyor.

Geri kalan 98 GB nereye gidiyor

Yazıda açıklandığı üzere bu hesap ZeRO makalesine dayanıyor. Adam ile mixed-precision eğitimde her parametre 16 baytlık bir durum taşıyor:

  • 2 bayt fp16 ağırlık için
  • 2 bayt fp16 gradient için
  • 12 bayt optimizer durumu: ağırlığın fp32 master kopyası artı Adam'ın her biri 4 bayt olan iki moment tamponu

16 baytı 7 milyar parametreyle çarptığınızda 112 GB'a ulaşıyorsunuz — ve bu, tek bir aktivasyon bile saklanmadan önceki durum. Yalnızca optimizer durumu 84 GB; yani ağırlıkların altı katı. Yazının ana noktası şurada: eğitim belleğini asıl belirleyen model değil, onu güncellemek için gereken durumdur.

LoRA optimizer faturasını ortadan kaldırıyor

Hu ve arkadaşlarının geliştirdiği LoRA, baskın maliyete saldırıyor. Gradient ve optimizer durumu parametre başına 16 baytın 14'ünü oluşturduğundan strateji, bunlara ihtiyaç duyulan parametre sayısını büyük ölçüde azaltmak. LoRA önceden eğitilmiş tüm ağırlıkları dondurur ve bunun yerine her katmana yerleştirilen küçük düşük ranklı matrisleri eğitir. Dondurulmuş taban model bellekte fp16 olarak hâlâ yer kaplar — 7B'lik bir model için 14 GB — ama gradient ve optimizer durumu biriktirmez. Bunları yalnızca adapter'lar yapar.

dev.to yazısı, 32 katmanlı ve 4096 gizli boyutlu Llama tarzı bir 7B model için, query ve value projeksiyonlarına rank-8 adapter'lar yerleştirerek sayıları hesaplıyor. Her adapter 8 × (4096 + 4096) = 65.536 değer tutuyor; bu da ağ genelinde yaklaşık 4,2 milyon eğitilebilir parametre anlamına geliyor — modelin kabaca yüzde 0,06'sı.

Hu ve arkadaşları, Adam ile fine-tune edilen GPT-3 175B ile karşılaştırıldığında LoRA'nın eğitilebilir parametre sayısını 10.000 kat, GPU bellek gereksinimini üç kat azalttığını, test ettikleri modellerde tam fine-tuning kalitesine eşit ya da onu aşan sonuçlar elde edildiğini bildiriyor. Düşük ranklı güncelleme eğitimden sonra taban ağırlığa birleştirilebildiği için çıkarım gecikmesi eklemiyor — bu, ileri geçişte kalıcı olarak ekstra katmanlar bırakan önceki adapter tasarımlarından onu ayıran özellik.

QLoRA, LoRA'nın kaçamadığı kısmı küçültüyor

LoRA, dondurulmuş taban modeli fp16 olarak 14 GB yer kaplamış halde bırakıyor. Dettmers ve arkadaşlarının geliştirdiği QLoRA tam olarak buna odaklanıyor: taban modeli 4-bit hassasiyetle saklayarak onu yaklaşık 3,5 GB'a indiriyor; quantization sabitleri için de küçük bir ek maliyet oluşuyor. Makaledeki double quantization tekniği bu ek yükü parametre başına 0,5 bitten yaklaşık 0,127 bite düşürüyor.

Gradientler yine 4-bit taban üzerinden akarak daha yüksek hassasiyette tutulan LoRA adapter'larına ulaşıyor. Öne çıkan sonuç: 65B'lik bir modeli tek bir 48 GB GPU'da fine-tune edecek kadar bellek tasarrufu sağlanırken tam 16-bit fine-tuning görev performansı korunuyor. Bedeli hız — 4-bit ağırlıklar her geçişte her aritmetik işlem öncesinde dequantize edilmek zorunda, bu yüzden QLoRA düz LoRA'dan daha yavaş çalışıyor.

Üç yöntem, tek bellek bütçesi

Yazı üç yaklaşımın tamamını tek bir kararın varyasyonları olarak çerçeveliyor: her yöntem, parametre başına 16 baytlık faturanın hangi parçalarını ortadan kaldırıyor. Tam fine-tuning 16 baytın tamamını öder. LoRA, taban model için 14 baytlık gradient ve optimizer durumu ödemeyi bırakırken 2 baytlık fp16 kopyayı tutuyor. QLoRA, kalan bu 2 baytı kabaca yarım bayta sıkıştırıyor.

Neden önemli

7B'lik bir model için dile getirilen 14 GB rakamı bir çıkarım (inference) rakamı; aynı modeli mixed precision ile Adam kullanarak eğitmek, aktivasyonlar sayılmadan bile yalnızca ağırlık, gradient ve optimizer durumunda sekiz kat maliyete neden oluyor. Bu hesabı anlamak, LoRA ve QLoRA'nın neden var olduğunu ve her birinin gerçekte neyi optimize ettiğini açıklığa kavuşturuyor — LoRA parametre başına tutulan defter kaydını ortadan kaldırıyor, QLoRA dondurulmuş ağırlıkları küçültüyor. İkisi arasında seçim yapan uygulayıcılar için karar, donanım sınırlarına ve hedef görevin modelin özgün eğitim dağılımından ne kadar uzakta olduğuna indirgeniyor; QLoRA, eğitim hızını, büyük modelleri küçük GPU'lara sığdırabilme karşılığında takas ediyor.

  • #fine-tuning
  • #lora
  • #qlora
  • #large-language-models
  • #gpu-memory

İlgili yazılar