LLMScalecanlı Hugging Face verisi

İnce ayar VRAM'i — LoRA, QLoRA ve tam ince ayar belleği

İnce ayar GPU belleğinde neye mal olur? Eğitimde KV cache yoktur ama gradyanlar, optimizer durumu ve geri yayılım için saklanan aktivasyonlar eklenir — bu yüzden tek kartta servis edebildiğin bir model çoğu zaman o kartta eğitilemez.

1

Model seç

gömülü DBgatedllama8.03B parametre·32L · 4096d · 32/8 headGQA
2

Eğitim kurulumu

Listeden seçmek yerine kesin değerleri gir. Bu tarayıcıda hatırlanır.
ⓘLoRA adapter'ının rank'i: düşük ranklı güncellemesinin genişliği; kaç eğitilebilir parametre ekleyeceğini belirler.13.6M
ⓘHer GPU'da her optimizer adımında işlenen dizi sayısı.
ⓘHer eğitim örneğindeki token sayısı.131,072
3

Gereken bellek

16.63 GiB
cihaz başına
Taban ağırlıklar — 14.96 GiBGradyanlar — 26 MiBOptimizer — 156 MiBAktivasyonlar — 512 MiBEk yük — 1.00 GiB

Tabanı dondurmak gradyan ve optimizer belleğinin neredeyse tamamını kaldırır, ama geri yayılım yine her katmandan geçer — yani aktivasyonlar tam ince ayarla aynı yer tutar. Elinde kalan kollar: checkpointing, batch boyutu ve dizi uzunluğu.

4

Hangi GPU'lar yeter

vLLM gibi her kartın %95'ini kullanır
sığar ✓
16.63 GiB / 24 GB (kullanılabilirin %74'i)

Karma hassasiyetli Adam, parametre başına 16 bayt (bf16 ağırlık + bf16 gradyan + fp32 ana kopya, m ve v). Aktivasyonlar Korthikanti vd. 2022'ye göre katman ve token başına ~34 bayt (flash-attention varsayılır), tam yeniden hesaplamada 2 bayt. Gerçek koşular framework ve çekirdek seçimlerine göre değişir; bunu planlama rakamı olarak al.

İnce ayar belleği nasıl hesaplanıyor

İnce ayar, bellekte ağırlıklardan fazlasını tutar. Eğitilen her parametre için bir gradyan ve optimizer durumu gerekir; ileri geçiş de geri yayılım için aktivasyonları saklar. LoRA ve QLoRA temel modeli dondurup küçük adaptörler eğitir, böylece gradyan ve optimizer durumu adaptör boyutuna iner; QLoRA ayrıca dondurulmuş temel modeli 4-bit NF4 olarak saklar.

  • temel ağırlıklar = parametre × 2 byte (BF16) ya da × 0,516 byte (QLoRA NF4)
  • gradyanlar = eğitilen parametre × 2 byte
  • optimizer (Adam) = eğitilen parametre × 12 byte: FP32 ana ağırlıklar + iki moment
  • aktivasyonlar = katman × dizi uzunluğu × batch × hidden boyutu × 34 byte; gradient checkpointing ile × 2
  • toplam = temel + gradyanlar + optimizer + aktivasyonlar + 1 GiB ek yük

Tam ince ayarda her parametre eğitilir; LoRA'da sayı, rank ve hedef modüllerden — attention projeksiyonları ya da tüm lineer katmanlar — çıkar. Aktivasyonlarda flash attention varsayılır. Motor yayımlanmış iki sonuca karşı doğrulanır: ZeRO makalesinin karışık hassasiyetli Adam için parametre başına 16 byte'ı ve QLoRA'nın 65B bir modeli tek 48 GB kartta eğitmesi; motor bunu 43,3 GiB olarak hesaplar.

Sık sorulanlar

Tam ince ayar kaç GB VRAM ister?
Aktivasyonlardan önce parametre başına yaklaşık 16 byte: 2'si ağırlık, 2'si gradyan, 12'si Adam. 7B bir model için bu kabaca 104 GiB eder; tam ince ayarın genelde birden çok GPU ya da ZeRO-3/FSDP ile paylaştırma gerektirmesinin nedeni budur.
LoRA mı QLoRA mı — bellek farkı ne?
İkisi de aynı adaptörleri eğitir; fark dondurulmuş temel modeldedir. LoRA onu BF16'da (parametre başına 2 byte), QLoRA NF4'te (0,516 byte) tutar. 8B bir modelde yalnızca temel ağırlıklar için bu, yaklaşık 14,9 GiB'a karşı 3,8 GiB demektir.
LoRA aktivasyon belleğini azaltır mı?
Hayır. İleri geçiş yine modelin tamamından geçer, bu yüzden aktivasyonlar tam ince ayardakiyle aynıdır. Onları azaltan gradient checkpointing'dir: her katmanın yalnızca girdisini tutar — katman, token ve hidden birimi başına 34 yerine 2 byte — ve gerisini yeniden hesaplar.
Burada neden KV cache yok?
Eğitim dizileri tek geçişte işler ve metin üretirken olduğu gibi adımlar arasında key ve value önbelleği tutmaz; bu yüzden çıkarım hesaplayıcısındaki KV cache terimi burada yer almaz.