İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
RehberİleriGPU, TPU ve Hızlandırıcılar

Hızlandırıcı seçmek ve bellek bütçesi çıkarmak

Hızlandırıcı seçimi bir bellek bütçesi hesabıyla başlar: ağırlık belleği (parametre sayısı × duyarlılığın bayt karşılığı; bf16'da 2, int8'de 1 bayt), KV önbelleği (2 × katman × KV kafa sayısı × kafa boyutu × bayt × aynı anda tutulan token) ve aktivasyon ile parçalanma payı toplanır; toplam, cihaz belleğinin tamamına değil pay ayrılmış hâline sığmalıdır. Hız tarafında belirleyici olan tepe işlem gücü değil bellek bant genişliğidir, çünkü çözümleme her token için ağırlıkları yeniden okur.

ÖNKOŞULLAR

  • Çalıştırmayı planladığınız modelin katman sayısı, kafa yapısı ve kafa boyutunu okuyabileceğiniz yapılandırma dosyası veya model kartı
  • Hedef eşzamanlılık ile girdi ve çıktı uzunluğu dağılımını içeren bir iş yükü profili
  • Aday donanımın bellek kapasitesi, bellek bant genişliği ve desteklenen sayı biçimleri bilgisi
  • Kısa ölçümler yapabileceğiniz bir deneme cihazına veya saatlik kiralanmış bir örneğe erişim

GEREKEN ARAÇLAR

  • Not defteri ortamı veya hesap tablosu (bellek bütçesi modeli için)
  • Cihaz bellek kullanımını ve bant genişliğini okuyabilen izleme aracı
  • Kısa yük testi koşabilen bir çıkarım sunucusu kurulumu
  • Model yapılandırma dosyalarına erişim (katman, kafa ve sözlük bilgisi)
  • Nicemleme ve dönüştürme araç zinciri
  1. 01

    İş yükünü çıkarım profili olarak yaz

    Hedef model, tepe eşzamanlılık, girdi ve çıktı uzunluğu dağılımı ile ilk token hedefini tek sayfada yazın; bellek bütçesi bu girdiler olmadan hesaplanamaz.

    Donanım kararı iş yükünün fonksiyonudur, tersi değil. Aynı modeli çalıştıran iki ürün — kısa sorulara cevap veren bir asistan ile uzun belgeleri özetleyen bir hat — tamamen farklı bellek profilleri üretir. Profil yazılmadan yapılan kart karşılaştırması, hangi sütunun bağlayıcı olduğunu bilmeden yapılan bir karşılaştırmadır.

    Profil girdisiBellek bütçesinde neyi belirler
    Model ve ağırlık duyarlılığıAğırlık belleğini
    Tepe eşzamanlı istekKV havuzunun genişliğini
    Girdi uzunluğu dağılımıÖn doldurma tamponlarını ve KV'nin büyüme hızını
    Çıktı uzunluğu dağılımıİsteğin cihazı ne kadar süre meşgul edeceğini
    İlk token süresi hedefiÖn doldurma için gereken işlem gücünü
    Beş satır da yazılmadan hiçbir kart karşılaştırması anlamlı değildir.
  2. 02

    Ağırlık belleğini duyarlılığa göre hesapla

    Parametre sayısını duyarlılığın bayt karşılığıyla çarpın: bf16 için parametre başına 2 bayt, int8 için 1 bayt, 4 bit için yaklaşık yarım bayt artı ölçek katsayıları.

    Ağırlık belleği hesabın en kolay ve en kesin kısmıdır: parametre sayısı ile parametre başına bayt sayısının çarpımı. Bayt karşılıkları tanım gereği sabittir, ölçüm değildir. Nicemlenmiş biçimlerde bunun üzerine küçük bir ek yük gelir, çünkü ölçek katsayıları ve sıfır noktaları da saklanır.

    DuyarlılıkParametre başına bayt70 milyar parametre varsayımıyla ağırlık
    fp324yaklaşık 280 GB
    bf16 / fp162yaklaşık 140 GB
    int81yaklaşık 70 GB
    4 bityaklaşık 0,5yaklaşık 35 GB + ölçek katsayıları
    Parametre sayısı varsayımdır, bir ölçüm değil. Son sütun yalnızca çarpma işleminin sonucudur; kendi modelinizin gerçek parametre sayısıyla tekrarlayın.

    Nicemleme bellekten kazandırır ve çözümlemede okunan bayt azaldığı için çoğu durumda hızlandırır; karşılığında çıktı kalitesinden bir miktar ödün verir. Bu ödünün büyüklüğü göreve göre değişir ve yalnızca kendi değerlendirme setinizde ölçülerek bilinir — varsayılmaz. Ayrıca her sayı biçimi her donanımda hızlı çekirdeklerle desteklenmez; destek matrisini seçimden önce doğrulayın.

    Uzman karışımı (MoE) mimarilerde ayrımı unutmayın: bellek toplam parametre sayısına göre, işlem gücü ise her token için etkinleşen parametre sayısına göre ölçeklenir. Böyle bir model belleği doldurur ama işlem gücünü aynı oranda yormaz; kart seçiminde bu iki sütun farklı yönlere çeker.

  3. 03

    KV önbelleğini token başına formülle

    Token başına KV maliyeti 2 × katman × KV kafa sayısı × kafa boyutu × bayt'tır; bunu eşzamanlı istek ve dizi uzunluğuyla çarparak toplam KV bütçesini çıkarın.

    python
    # VARSAYIM: değerler modelin yapılandırma dosyasından okunmalıdır.
    katman = 80
    kv_kafa = 8          # gruplanmış dikkatte; çok başlı dikkatte kafa sayısına eşittir
    kafa_boyutu = 128
    bayt = 2             # bf16
    
    token_basina = 2 * katman * kv_kafa * kafa_boyutu * bayt   # 2: anahtar ve değer
    
    eszamanli_istek = 32
    ortalama_dizi = 8000  # girdi + üretilen token
    
    toplam_kv = token_basina * eszamanli_istek * ortalama_dizi
    print(token_basina / 1024, "KiB/token")
    print(toplam_kv / 1024**3, "GiB toplam KV")

    Formülün iki çarpanı doğrudan ürün kararıdır: eşzamanlılık ve dizi uzunluğu. Yani "kaç kullanıcıya aynı anda hizmet vereceğiz" ile "bağlamı ne kadar uzun tutacağız" aslında tek bir bellek kararıdır. Birini büyütmek diğerinin bütçesini daraltır.

    Kafa yapısı burada belirleyicidir. Gruplanmış veya tek anahtar-değer kafası kullanan mimarilerde KV kafa sayısı düştüğü için token başına maliyet doğrusal olarak azalır; bu çoğu zaman modelin cihaza sığması ile sığmaması arasındaki farktır. Model kartındaki kafa sayısını değil, anahtar-değer kafa sayısını okuyun.

  4. 04

    Kalan payı aktivasyon ve parçalanma için ayır

    Ağırlık ve KV toplamından sonra kalan belleği geçici aktivasyon tamponları, parçalanma ve çalışma zamanı yükü için ayırın; cihazı tavanına kadar doldurmayın.

    Bellek yetmezliği hataları neredeyse hiçbir zaman kararlı durumda ortaya çıkmaz. Ön doldurma sırasındaki geçici tamponlar toplu iş büyüklüğü ile istem uzunluğunun çarpımına göre büyür; ortalama istemle sorunsuz çalışan bir yapılandırma, alışılmadık uzunlukta tek bir istek geldiğinde çöker.

    • Çalışma zamanı ve sürücü bağlamı
    • Model ağırlıkları
    • KV önbelleği havuzu
    • Ön doldurma sırasındaki geçici aktivasyon tamponları
    • Bellek ayırıcının parçalanma payı
    • Çok cihazlı çalışmada iletişim tamponları
    • Spekülatif çözümleme kullanılacaksa taslak modelin ağırlıkları

    Doğrulama adımı: bütçeyi yazdıktan sonra en uzun istem senaryosunu tepe eşzamanlılıkla birlikte deneyin. Bu iki koşul ayrı ayrı sorun çıkarmasa da birlikte geldiklerinde çıkarır; üretimde de birlikte gelirler.

  5. 05

    Bant genişliği tavanını hesapla

    Çözümleme adımı bellek bant genişliğine bağlıdır: saniyedeki token üst sınırı, bant genişliğinin bir token için okunan ağırlık baytına bölünmesiyle kabaca bulunur.

    Tek bir isteğin token üretim hızını belirleyen şey tepe işlem gücü değil, ağırlıkları bellekten okuma hızıdır: her üretilen token için ağırlıkların baştan sona okunması gerekir. Bu yüzden kart karşılaştırırken bakılacak ilk sütun bant genişliğidir; başlık hâlindeki işlem gücü rakamı çözümleme hızını tahmin etmez.

    AşamaDarboğazNeyi büyütmek yardım eder
    Ön doldurmaİşlem gücüDaha yüksek işlem gücü, parçalı ön doldurma
    ÇözümlemeBellek bant genişliğiDaha yüksek bant genişliği, toplu işlem, daha az ağırlık baytı
    Çok cihazlı çalışmaCihazlar arası bağlantıDaha hızlı bağlantı, daha az bölme
    Üç satır tek bir kart seçiminde farklı yönlere çeker; hangisinin bağlayıcı olduğunu iş yükü profili söyler.

    Toplu işlem bu tavanı istek başına değil hat başına iyileştirir: aynı ağırlık okuması birden çok dizi için kullanıldığından verim yükselir, tek bir isteğin token hızı ise yükselmez. Sunum katmanındaki toplu işlem ve önbellek ayarları ayrı bir rehberin konusudur; burada yalnızca donanım tavanını belirlemek yeterlidir.

  6. 06

    Çok cihazlı düzeni ve bağlantıyı seç

    Model tek cihaza sığmıyorsa tensor paralelliğini yalnızca yüksek bant genişlikli bağlantı varken seçin; yavaş bağlantıda ardışık düzen daha güvenli ama gecikmesi yüksektir.

    DüzenNeyi bölerBağlantı ihtiyacıGecikmeye etkisi
    Tensor paralelliğiHer katmanın ağırlıklarınıYüksek: her katmanda toplamaTek istek hızlanır; bağlantı yavaşsa tersine döner
    Ardışık düzen paralelliğiKatmanları cihazlaraOrta: yalnızca bölüm sınırlarındaVerim korunur, tek istek gecikmesi artar
    KopyalamaYalnızca trafiğiDüşükKuyruk beklemesi düşer, tek istek hızı değişmez
    Model tek cihaza sığıyorsa kopyalama neredeyse her zaman en basit ve en öngörülebilir seçenektir.

    Bölme, bir maliyettir: tensor paralelliğinde her katmanda cihazlar arasında veri toplanır ve bu iletişim çözümlemenin her adımında tekrarlanır. Bağlantı yeterince hızlı değilse eklenen kart gecikmeyi düşürmek yerine artırır. Karar sırası bu yüzden nettir: önce sığdır, sığıyorsa kopyala; sığmıyorsa en az bölme ile sığdır.

  7. 07

    Şirket içi ve bulut kararını doluluk üzerinden ver

    Kararı kendi doluluk oranınız üzerinden verin: sürekli ve öngörülebilir yük sahipliğe, değişken ve henüz kanıtlanmamış talep kiralamaya yaklaştırır.

    ÖlçütŞirket içi lehineBulut lehine
    DolulukSürekli ve yüksekDeğişken; tepe/ortalama oranı büyük
    Talep belirsizliğiTalep ölçülmüş ve kararlıTalep henüz kanıtlanmadı
    Veri ikametgâhıVeri kurum dışına çıkamıyorUygun bölge sözleşmeyle sağlanabiliyor
    Tedarik süresiBeklemeye tahammül varHemen başlamak gerekiyor
    Operasyon kapasitesiDonanım ve sürücü işletebilen ekip varEkip uygulamaya odaklanmalı
    Yenileme riskiYenileme planı ve bütçesi yazılıRisk sağlayıcıda kalsın
    Satırların çoğu aynı tarafa düşmüyorsa karar henüz olgunlaşmamıştır; pilotla veri toplayın.

    Hesabı kendi rakamlarınızla kurun, hazır bir eşikle değil. Sahiplik tarafında donanım, barındırma, enerji, operasyon ekibi ve kullanılmayan kapasite; kiralama tarafında birim fiyat çarpı gerçek kullanım, artı taşınma ve bağımlılık maliyeti. İki tarafı da aynı doluluk varsayımıyla karşılaştırın; sahiplik ancak yüksek ve sürekli dolulukta öne geçer.

    Hibrit bir kurgu — taban yükü sahip olunan donanımda, tepe yükü kiralanan kapasitede — kâğıt üzerinde her iki tarafın iyisini alır. Bedeli, iki yığını birden çalışır ve güncel tutmanın operasyon maliyetidir; bu maliyeti hesaba katmadan yapılan hibrit kararı genellikle geri alınır.

SIK DÜŞÜLEN TUZAKLAR

  • Bütçeyi yalnızca ağırlık boyutuna göre çıkarmak

    Eşzamanlılığı belirleyen kalem KV önbelleği ve aktivasyon payıdır. Yüklenirken rahat sığan bir model, tepe eşzamanlılıkta belleği doldurur ve üretimde bellek hatası verir.

  • Bellek planını ortalama istem uzunluğuna kurmak

    Ön doldurma tamponları istem uzunluğuyla büyür. Dağılımın kuyruğundaki tek bir uzun istek, ortalamaya göre boyutlanmış yapılandırmayı tepe saatte düşürür.

  • Nicemlemeyi bedava hız saymak

    Nicemleme bellekten kazandırır ve okunan bayt azaldığı için genelde hızlandırır, ama kalite tarafında bir bedeli vardır. Bedelin büyüklüğü göreve göre değişir; kendi değerlendirme setinizde ölçülmeden karara girmemelidir.

  • Başlık işlem gücü rakamına bakarak karar vermek

    Çözümleme bellek bant genişliğine takılır. Tepe işlem gücü yüksek ama bant genişliği düşük bir kart, tek istek token hızında beklenenin altında kalır.

  • Kart sayısını artırıp gecikmenin düşmesini beklemek

    Tensor paralelliği her katmanda iletişim ekler. Bağlantı yeterince hızlı değilse eklenen her cihaz, kazandırdığı hesaptan fazlasını iletişimde geri alır.

KONTROL LİSTESİ

  • Model, tepe eşzamanlılık ve dizi uzunluğu varsayımları yazılı
  • Ağırlık belleği hedef duyarlılıkta hesaplandı
  • Token başına KV maliyeti formülle çıkarıldı ve tepe eşzamanlılıkla çarpıldı
  • Aktivasyon, parçalanma ve çalışma zamanı için ayrılan pay belirlendi
  • En uzun istem senaryosu tepe eşzamanlılıkla birlikte denendi
  • Bant genişliği tavanı hesaplandı ve ölçülen token hızıyla karşılaştırıldı
  • Çok cihazlı düzen seçildiyse bağlantı bant genişliği ve topolojisi doğrulandı
  • Şirket içi ve bulut karşılaştırması aynı doluluk varsayımıyla belgelendi

Maddelerin tamamı işaretlenmeden kurulum üretime alınmamalı.

Sık sorulan sorular

Bir modelin kaç GB belleğe ihtiyacı olduğunu nasıl hesaplarım?

Üç kalemi toplayın: ağırlıklar (parametre sayısı × parametre başına bayt), KV önbelleği (2 × katman × KV kafa sayısı × kafa boyutu × bayt × aynı anda tutulan toplam token) ve aktivasyon, parçalanma ile çalışma zamanı için ayrılan pay. Toplam, cihaz belleğinin tamamına değil, pay ayrılmış hâline sığmalıdır.

KV önbelleği neden bu kadar yer kaplıyor?

Çünkü hem eşzamanlı istek sayısıyla hem de her isteğin dizi uzunluğuyla birlikte doğrusal büyür: uzun bağlamlı ve çok kullanıcılı bir kurulumda ağırlıkların yanında kayda değer bir yer tutar. Gruplanmış anahtar-değer kafası kullanan mimarilerde KV kafa sayısı düştüğü için bu maliyet doğrusal olarak azalır.

Nicemleme belleği düşürürken neyi kaybettiriyorum?

Çıktı kalitesinden bir miktar ödün verirsiniz; kayıp göreve ve nicemleme yöntemine göre değişir, evrensel bir oranı yoktur. Kesin olan tek kazanç bellektir: ağırlık boyutu parametre başına bayt karşılığıyla doğrudan küçülür. Çözümleme hızındaki artış ise koşulludur — okunan ağırlık baytı azaldığı için bant genişliğine takılı düşük toplu işte belirgindir, toplu iş büyüyüp darboğaz işlem gücüne kaydıkça erir ve çözme ek yükü kazancı yiyebilir. Kalite etkisi yalnızca kendi değerlendirme setinizde ölçülerek bilinir.

Şirket içi hızlandırıcı mı bulut mu daha mantıklı?

Belirleyici ölçüt doluluk ve talep belirsizliğidir. Yük sürekli, öngörülebilir ve yüksekse; ekip donanım işletebiliyorsa ve veri ikametgâhı zorunluysa sahiplik öne geçer. Talep henüz kanıtlanmamışsa, tepe/ortalama oranı büyükse veya hemen başlamak gerekiyorsa kiralama daha az risk taşır.

Kaynaklar

  1. 01Hızlandırıcı üreticilerinin bellek, bant genişliği ve sayı biçimi dokümantasyonu — Donanım üreticileri · Dokümantasyon
  2. 02Model kartları ve mimari yapılandırma dosyaları — Model sağlayıcıları · Dokümantasyon
  3. 03Sinaptik Research — bellek bütçesi hesap notları — Sinaptik Lab · Teknik rapor

BUILD

Bu rehberi kurumunuzda uygulayalım mı?

Aynı mimariyi kendi verinizle kurmak için discovery oturumundan üretime kadar birlikte ilerliyoruz.