İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
DersOrta45 dakikaAI Altyapı Mühendisi · 2. ders

Bellek bütçesi ve hızlandırıcı kararı

Ağırlıkların, dikkat önbelleğinin ve ara değerlerin aynı belleği nasıl paylaştığını hesaplamayı öğretir. Hızlandırıcı kararını tek bir tercih yerine bağlam uzunluğu ve eşzamanlılıktan türetilen bir bellek bütçesi tablosuna bağlar.

Önkoşul: Large Language Model, Context Window

BU DERSİN SONUNDA

  • Ağırlık, dikkat önbelleği ve ara değer kalemlerini ayrı ayrı hesaplamak
  • Bağlam uzunluğu ve eşzamanlılıktan bir bellek tavanı türetmek
  • Bant genişliği ile hesap gücü arasında hangisinin darboğaz olduğunu ayırt etmek
  • Kestirilen bütçeyi gerçek ölçümle karşılaştırıp sapmayı açıklamak
  1. 1

    Teori

    Kavramın çalışma mantığı

  2. 2

    Örnek

    Gerçek bir senaryo üzerinde gösterim

  3. 3

    Lab

    Uygulamalı alıştırma

  4. 4

    Test

    Kısa ölçüm

  5. 5

    Proje

    Rotadaki projeye katkı

Kısa cevap

Modelin hızlandırıcıya yüklenip yüklenemeyeceğini ağırlıklar belirler; yüklendikten sonra kaç isteğe aynı anda hizmet verebileceğini dikkat önbelleği belirler. Ağırlıklar sabit bir yer tutar; dikkat önbelleği ise bağlam uzunluğu ile eşzamanlı istek sayısının çarpımı kadar büyür. Karar, bu iki kalemi ve ara değer payını aynı tabloda toplayan bir bütçeyle verilir; tek bir parametre sayısıyla verilemez.

Teori: üç kalem, tek tavan#

Birinci kalem ağırlıklar: parametre sayısı ile parametre başına bayt genişliğinin çarpımı. Bayt genişlikleri tanım gereği sabittir: fp32 dört bayt, bf16 ve fp16 iki bayt, sekiz bitlik tamsayı bir bayt, dört bitlik temsil yarım bayt. Bu kalem yük ile değişmez; kurulumda bir kez ödenir ve orada durur.

İkinci kalem dikkat önbelleği. Üretim aşamasında her yeni jeton kendisinden önceki tüm jetonlara bakmak zorundadır; geçmişi her adımda yeniden hesaplamak yerine her katmanın anahtar ve değer vektörleri saklanır. Boyut, iki (anahtar ve değer) çarpı katman sayısı çarpı anahtar-değer başlık sayısı çarpı başlık boyutu çarpı bayt genişliği kadardır ve bu, jeton başına maliyettir.

Bu formülde altyapıyı en çok etkileyen terim anahtar-değer başlık sayısıdır. Birçok mimaride sorgu başlıkları anahtar-değer başlıklarını paylaşır; paylaşım arttıkça saklanacak başlık sayısı düşer ve önbellek küçülür. Yani mimari bir tercih, doğrudan sizin eşzamanlılık tavanınıza dönüşür. Bu yüzden bütçe hesabı model yapılandırmasını okumakla başlar.

Üçüncü kalem ara değerler ve çalışma zamanı payı: geçici tamponlar, parçalanma ve çalışma zamanının önceden ayırdığı havuz. Bu kalem formülle kestirilmez, ölçülür. Bu yüzden bütçeye açıkça bir pay olarak yazılır ve ilk ölçümden sonra o payın gerçek değeriyle güncellenir.

Hesap#

python
BAYT = {"fp32": 4, "bf16": 2, "fp16": 2, "int8": 1, "int4": 0.5}


def kv_bayt_jeton_basina(katman, kv_baslik, baslik_boyutu, tip="bf16"):
    """Bir jetonun dikkat önbelleğinde tuttuğu yer. 2 çarpanı: anahtar + değer."""
    return 2 * katman * kv_baslik * baslik_boyutu * BAYT[tip]


def butce(bellek_gb, parametre_milyar, agirlik_tipi, kv_jeton_basina, pay=0.10):
    """pay: ara değer, parçalanma ve çalışma zamanı için ayrılan oran (varsayım)."""
    toplam = bellek_gb * 1024**3
    agirlik = parametre_milyar * 1e9 * BAYT[agirlik_tipi]
    kalan = toplam * (1 - pay) - agirlik
    return {
        "agirlik_gb": agirlik / 1024**3,
        "onbellek_icin_kalan_gb": kalan / 1024**3,
        "toplam_jeton_butcesi": int(kalan / kv_jeton_basina) if kalan > 0 else 0,
    }


# Katman sayısı, anahtar-değer başlık sayısı ve başlık boyutu kendi modelinizin
# yapılandırmasından okunur; buraya sabit sayı yazılmaz.

Bu hesabın asıl çıktısı toplam jeton bütçesidir: kalan belleğin kaç jetonluk geçmişi taşıyabildiği. Bu tek sayı, iki bilinmeyenle bölüşülür: eşzamanlı istek sayısı ve istek başına en uzun bağlam. İkisini birlikte belirleyemezsiniz; birini ürün kararı sabitler, diğeri hesaptan çıkar. Bütçe tablosunun değeri tam olarak bu zorunlu tercihi görünür kılmasıdır.

Bant genişliği mi, hesap gücü mü#

AşamaBaskın kaynakBelirtiMüdahale yönü
Girdi dolumuHesap gücüUzun girdide ilk jeton gecikmesi hızla büyürDolumu parçalara ayırmak, paylaşılan öneki önbelleklemek
Jeton üretimiBellek bant genişliğiToplu iş büyürken jeton başına süre az değişirToplu işi büyütmek, ağırlık bayt genişliğini düşürmek
Uzun bağlamlı üretimDikkat önbelleğinin okunmasıBağlam uzadıkça jeton başına süre artarÖnbellek veri tipini düşürmek, bağlamı kısaltmak
Yüksek eşzamanlılıkBellek kapasitesiBellek dolu, istekler kuyrukta bekliyorEşzamanlılık tavanı koymak, istek boyunu sınırlamak
Belirtiler teşhis içindir. Aynı kurulumda baskın darboğaz, istek uzunluğu dağılımı değiştikçe yer değiştirir.

Karar: bütçeden hızlandırıcıya#

  1. 1Yapılandırmayı okuyun

    Katman sayısı, anahtar-değer başlık sayısı, başlık boyutu ve ağırlık veri tipi bütçenin dört girdisidir.

  2. 2Ağırlık ayak izini sabitleyin

    Parametre sayısı ile bayt genişliğinin çarpımı; yük ile değişmediği için ilk çıkarılacak kalem budur.

  3. 3Jeton başına önbellek maliyetini çıkarın

    Kalan belleği bu sayıya bölerek toplam jeton bütçesini bulun; ara değer payını önceden ayırın.

  4. 4Bütçeyi hizmet hedefine bölün

    Toplam jeton bütçesi, eşzamanlı istek sayısı ile en uzun bağlamın çarpımına eşittir. Birini sabitleyin, diğerini okuyun.

  5. 5Kestirimi ölçümle karşılaştırın

    Gerçek doluluk kestirimden yüksekse fark ara değer, parçalanma ve çalışma zamanı payındadır. Payı ölçüme göre güncelleyip tabloyu yeniden okuyun.

Sık yapılan hata#

Birinci hata "model sığıyor, sorun yok" demek: ağırlıklar sığdığı halde tek haneli eşzamanlılıkta bellek tükenebilir, çünkü önbellek kalemi hiç hesaba katılmamıştır. İkinci hata bütçeyi ortalama istek uzunluğuyla kurmak. Bellek tavanını belirleyen ortalama değil, aynı anda sistemde bulunabilecek en uzun isteklerin toplamıdır; ortalamayla kurulan bütçe trafik kuyruğun sağ tarafına kaydığı anda çöker.

LAB · UYGULAMALI ALIŞTIRMA

Bellek bütçesi ızgarasını kurun ve tavanı işaretleyin

  1. 1Kullandığınız modelin yapılandırmasından katman sayısını, anahtar-değer başlık sayısını, başlık boyutunu ve ağırlık veri tipini bir tabloya yazın.
  2. 2Ağırlık ayak izini hesaplayıp hızlandırıcının toplam belleğinden çıkarın; ara değerler için ayırdığınız payı varsayım olarak açıkça yazın.
  3. 3Jeton başına dikkat önbelleği maliyetini hesaplayın; aynı hesabı önbellek veri tipini bir kademe düşürerek ikinci satıra ekleyin.
  4. 4Bağlam uzunluğu satır, eşzamanlı istek sayısı kolon olacak bir ızgara doldurun ve kalan belleği aşan hücreleri işaretleyin.
  5. 5Birinci derste sabitlediğiniz birim işi ızgaraya yerleştirip o sınıfın taşınabileceği en yüksek eşzamanlılığı tek sayı olarak yazın.
  6. 6Çalışan bir kurulumunuz varsa bu sayının hemen altında ve hemen üstünde yük verip gerçek bellek doluluğunu kestiriminizle karşılaştırın ve farkı ara değer payına yazın; yoksa ara değer payını doğrulanmamış varsayım olarak işaretleyip ızgaranın hangi hücresinin ilk ölçümle sınanacağını yazın.

Beklenen çıktı

Bağlam uzunluğu ile eşzamanlılık ızgarası üzerinde işaretlenmiş bir bellek tavanı ve birim iş için gerekçelendirilmiş tek bir eşzamanlılık sınırı.

Sık sorulan sorular

Parametre sayısı iki katına çıkarsa bellek ihtiyacı da iki katına mı çıkar?

Ağırlık kalemi için evet, doğrusal. Ama dikkat önbelleği kalemi parametre sayısına değil katman sayısı, anahtar-değer başlık sayısı ve başlık boyutuna bağlıdır; bunlar aynı oranda büyümez. Bu yüzden bütçeyi tek bir parametre sayısından kestirmek yanıltıcıdır, yapılandırmayı okumak gerekir.

Dikkat önbelleğini saklamayıp her jetonda yeniden hesaplayabilir miyiz?

Hesaplanabilir, ama üretimin her adımında tüm geçmişin yeniden işlenmesi gerekir; bu, üretim aşamasını dolum aşaması kadar pahalı hale getirir. Bellek ile hesap arasındaki bu takas bilinçli bir seçimdir ve varsayılan yön saklamaktır. Bellek darsa doğru cevap yeniden hesaplamak değil, önbelleğin bayt genişliğini veya bağlamı düşürmektir.

Bütçe sığıyorsa hızlandırıcı kararı bitmiş midir?

Hayır. Kapasite sığmayı belirler, bant genişliği hızı belirler. Aynı belleğe sahip iki hızlandırıcı farklı bant genişliğine sahipse jeton başına süre farklı çıkar, çünkü üretim aşaması bant genişliğine bağlıdır. Karar iki eksende birlikte verilir.

LEARN

AI Altyapı Mühendisi rotasına devam et

Dersler tek başına da okunabilir, ama sıralı ilerlemek önkoşul boşluklarını kapatır.