İ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.
Model seç
Eğitim kurulumu
Gereken bellek
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.
Hangi GPU'lar yeter
vLLM gibi her kartın %95'ini kullanırKarma 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.