GPU iş yükü kılavuzu
Gerçekte ne kadar GPU VRAM'na ihtiyacınız var?
Çıkarım, ince ayar, görüntü üretimi ve video iş yükleri için pratik bir bellek bütçesi—24 GB ile 192 GB arasında.
AnchorGPU tarafından · Güncellendi · 6 dk okumaVRAM bir bütçedir, model etiketi değildir
GPU belleği birkaç bağımsız kategori tarafından tüketilir: model ağırlıkları, çıkarım KV önbelleği, geçici aktivasyonlar, çerçeve çalışma alanları, ayırıcı önbelleği ve eğitim sırasında gradyanlar ile optimize edici durumu. Bir modelin bir yapılandırmaya sığması, daha uzun bağlam, daha büyük parti, farklı hassasiyet veya daha fazla eşzamanlı istekle sığacağını kanıtlamaz.
Tam model revizyonundan ve çalışma zamanı yapılandırmasından plan yapın. 7B, 13B veya 70B gibi etiketler toplam çalışma belleğini değil parametre ölçeğini tanımlar; bu nedenle hiçbir zaman evrensel olarak bir GPU ile eşleştirilmemelidir.
Önce ham ağırlıkları tahmin edin
Açıkça varsayımsal bir örnek olarak, bir modelin tam olarak 13 milyar parametresi olduğunu ve her parametreyi 16 bit biçiminde sakladığını varsayalım. Ham ağırlık depolaması 13,000,000,000 × 2 bayt = 26,000,000,000 bayt veya yaklaşık 24.2 GiB olur. Bu sayı diğer tüm tahsisleri hariç tutar, bu nedenle bir GPU önerisi değil, bir alt sınırdır.
Niceleme ağırlık depolamasını azaltabilir, ancak gerçek ayak izleri ayrıca ölçekleri, meta verileri, niceleme çözme tamponlarını, çoğaltılmış tensörleri ve çalışma zamanı çalışma alanlarını içerir. Parametre sayısını nominal bir bit genişliğine bölüp sonucu nihai olarak değerlendirmek yerine, gerçek yükleyicinin ürettiği biçimi kullanın.
Çıkarım, KV önbelleği ve çalışma belleği ekler
Otoregresif sunum, etkin diziler için anahtar ve değer tensörlerini tutar. KV-önbellek talebi; model mimarisine, önbellek hassasiyetine, eşzamanlı dizilere ve bu dizilerdeki canlı belirteç sayısına bağlıdır. Maksimum bağlamı veya eşzamanlılığı artırmak, ağırlıklar başarıyla yüklense bile belleği tüketebilir.
Geçici etkinleştirmeler, dikkat çalışma alanları, derlenmiş çekirdekler, iletişim arabellekleri ve çerçeve ayırıcı ek bellek tüketir. vLLM, kullanılabilir GPU KV önbellek kapasitesini ve yapılandırılan dizi uzunluğu için tahmini bir eşzamanlılığı bildirir; bu başlangıç rakamlarını planlama kanıtı olarak değerlendirin ve bir üretim iş yükünü taahhüt etmeden önce temsili istemleri yeniden çalıştırın.
Eğitimin farklı bir bellek şekli vardır
İnce ayar; gradyanlar, optimize edici durumu, kaydedilen aktivasyonlar ve bazen ek tam hassasiyetli kopyalar ekler. Bunların tam boyutu optimize ediciye, hassasiyet politikasına, eğitilebilir parametre kümesine ve parçalama stratejisine bağlıdır; bu nedenle tek bir çıkarım çarpanı yanıltıcıdır.
DistributedDataParallel, her çalışanın ihtiyaç duyduğu eğitim durumunu çoğaltır; birkaç GPU'yu tek bir bitişik bellek havuzuna dönüştürmez. Fully Sharded Data Parallel, parametreleri, gradyanları ve optimize edici durumlarını çalışanlar arasında parçalayabilir; aktivasyon kontrol noktası ise geriye doğru geçiş sırasında seçilen işi yeniden hesaplayarak kaydedilen aktivasyon belleğini azaltır. Her iki teknik de bellek için basitliği veya hesaplamayı takas eder.
Çalıştıracağınız yapılandırmayı ölçün
Model yüklemeyi ve optimize edici güncellemesi dahil eksiksiz, temsili bir çıkarım isteğini veya eğitim adımını; tam çerçeve, hassasiyet, bağlam, yığın ve paralellik ayarlarıyla test edin. Ayrılan ve ayrılmış en yüksek belleği kaydedin, ardından gerçekçi eşzamanlılık veya gradyan birikimiyle tekrarlayın. Son kullanılabilir baytı hedeflemek yerine işletim payı bırakın.
Ölçülen tepe değeri güvenli bir şekilde azaltılamadığında daha büyük belleğe sahip bir GPU seçin. Yalnızca yazılım modeli veya iş yükünü açıkça parçaladığında ve sağlanan ara bağlantı bilindiğinde GPU ekleyin. Herhangi bir model, çalışma zamanı, nicemleme, bağlam veya toplu iş değişikliğinden sonra ölçümü yeniden çalıştırın.
Kaynaklar ve editoryal yöntem
Resmi belgeler teknik açıklamaları destekler. Donanım önerileri, ölçülmüş bir performans garantisi değil, iş yüküne bağlı yorumumuzdur.
vLLM — paralellik ve ölçekleme ↗PyTorch — FullyShardedDataParallel ↗PyTorch — aktivasyon kontrol noktası ↗