Hanzo betasına katıl, ücretli her planda %50 indirim kazan

BitDelta: Tek bir GPU kümesinden 14 Zen modeli sunmak

BitDelta'nın 1 bitlik delta sıkıştırması, paylaşılan GPU altyapısından 14 Zen model varyantını nasıl sunar: matematik, mimari ve ödünler.

Bu sayfada

İnce ayarlı model varyantlarını sunmanın ekonomisi varsayılan olarak serttir.

BF16 içinde 70B parametreli bir model 140GB GPU belleği gerektirir. Bu modelin 14 ince ayarlı varyantı varsa — her biri ayrı bir yetenek profilini, alan uzmanlığını veya davranış ayarını temsil eder — naif sunum mimarisi 14 ayrı model yüklemesi ister: 1.96TB GPU belleği, 14 ayrı çıkarım süreci, 14x altyapı maliyeti. İlkinin ötesindeki her varyant için, neredeyse tümüyle yinelenen temel bilgiye tam fiyat ödenir.

BitDelta (arXiv:2402.10193) bu ekonomiyi bozar. Görüş zariftir ve matematik basittir.

Matematiksel temel

W_base taban modelin ağırlık matrisi, W_ft ise ince ayarlı bir varyanttaki karşılık gelen ağırlık matrisi olsun. Davranış deltası şudur:

Δ = W_ft - W_base

BitDelta bu deltayı 1 bit kesinliğe sıkıştırır:

W_ft ≈ W_base + α · sign(Δ)

Burada α, Δ değerinin mutlak değer ortalaması olarak hesaplanan, matris başına bir ölçek çarpanıdır:

α = (1/n) · ||Δ||_1 = mean(|Δ_ij|)

İşaret işlemi her skaler deltayı tek bir bite indirger, artı ya da eksi. α ölçek çarpanı büyüklüğü geri getirir. Birlikte, yaklaşım ince ayar güncellemesinin yön bilgisini, tam kesinlikli bir deltanın depolama maliyetinin 1/32 kadarıyla yakalar (parametre elemanı başına 1 bit, 32 bite karşı).

Bu neden çalışır? Büyük bir önceden eğitilmiş modeldeki ince ayar, beklenti olarak taban ağırlıklara göre küçük deltalar üretir. Taban model dilin baskın yapısını yakalar; ince ayar bu yapının üzerine davranış değişikliklerini yakalar. Delta küçükken her elemanın işareti, o elemanın en yüksek bilgili temsilidir: büyüklük delta matrisi boyunca kabaca tekdüzedir, bu yüzden α · sign(Δ) verimli bir koddur.

Bu daha biçimsel söylenebilir. Δ_ij konum 0 ve ölçek b olan bir Laplace rastgele değişkeni olarak modellenirse:

Δ_ij ~ Laplace(0, b)
|E[sign(Δ) | |Δ|]| = 1 for all nonzero Δ

İşaret, yön bilgisini eksiksiz korur. Bilgi kaybı yalnızca büyüklük değişimindedir ve tek ölçek çarpanı α bunu kısmen geri kazanır. Büyüklük değişiminin düşük olduğu ince ayar deltalarında (bilgi aktarımı değil, davranış değişikliği) yaklaşım sıkıdır.

Bellek azaltımı: BF16 içindeki bir 70B modelde taban ağırlıklar 140GB yer kaplar. Her ince ayarlı varyantın deltası, tam BF16 içinde, 140GB daha eklerdi. BitDelta biçiminde her delta yaklaşık 8.75GB yer kaplar (70B bit = 8.75GB, artı ihmal edilebilir α skalerleri). 14 varyantlı küme 14 × 140GB = 1.96TB değerinden 140GB + 14 × 8.75GB ≈ 262GB değerine iner, 87% azaltım.

Sunum mimarisi

┌─────────────────────────────────────────────────────────────────┐
│                    GPU CLUSTER (8x H100, 80GB each)             │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              BASE WEIGHTS (140GB, HBM resident)          │   │
│  │  W_base for zen4-70b: attention, FFN, embeddings, norms  │   │
│  └──────────────────────────────┬───────────────────────────┘   │
│                                 │ shared read                    │
│  ┌──────────────────────────────▼───────────────────────────┐   │
│  │           DELTA CACHE (≈8.75GB per variant)              │   │
│  │  zen4-coder:    α_coder,    sign(Δ_coder)    [8.75GB]    │   │
│  │  zen4-ultra:    α_ultra,    sign(Δ_ultra)    [8.75GB]    │   │
│  │  zen4-math:     α_math,     sign(Δ_math)     [8.75GB]    │   │
│  │  zen4-writer:   α_writer,   sign(Δ_writer)   [8.75GB]    │   │
│  │  zen4-legal:    α_legal,    sign(Δ_legal)    [8.75GB]    │   │
│  │  zen4-medical:  α_medical,  sign(Δ_medical)  [8.75GB]    │   │
│  │  ...14 total...                                           │   │
│  └──────────────────────────────┬───────────────────────────┘   │
│                                 │                                │
│  ┌──────────────────────────────▼───────────────────────────┐   │
│  │              REQUEST ROUTER                               │   │
│  │  model_id → delta_load → reconstruct W_ft → inference    │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

Çıkarım anında sunum hattı şöyledir:

  1. İstek model: "zen4-coder" ile gelir
  2. Yönlendirici, zen4-coder için delta önbelleği girdisini belirler
  3. Etkili ağırlık anında kurulur: W_eff = W_base + α_coder · sign(Δ_coder)
  4. Kurulan ağırlıklarla ileri geçiş çalıştırılır
  5. Yanıt döner

Adım 3 kritik yoldur. Kurulum, taban ağırlıkları ve delta bitlerini aynı anda okuyan, kaynaşmış bir CUDA çekirdeğidir; tam W_eff tensörünü HBM içinde somutlaştırmadan etkili ağırlığı yazmaçlarda veya paylaşılan bellekte kurar. Kurulum ile matris çarpımı tek bir çekirdek geçişinde kaynaştırılabilir: kurulan ağırlık hiçbir zaman bağımsız bir tensör olarak bütünüyle var olmaz.

# Simplified reconstruction kernel (conceptual)
def fused_bitdelta_linear(
    x: torch.Tensor,          # input activations [batch, seq, d_in]
    w_base: torch.Tensor,     # base weight [d_out, d_in] in HBM
    delta_sign: torch.Tensor, # 1-bit delta [d_out, d_in] packed as int8
    alpha: torch.Tensor,      # scale factor [d_out] or scalar
) -> torch.Tensor:
    # In practice: single CUDA kernel, no intermediate w_eff allocation
    # Conceptually equivalent to:
    delta_unpacked = unpack_bits(delta_sign).to(w_base.dtype)  # {-1, +1}
    w_eff = w_base + alpha.unsqueeze(1) * delta_unpacked
    return torch.nn.functional.linear(x, w_eff)

Kaynaşmış çekirdek yaklaşımı, tepe HBM bant genişliği tüketimini taban modelin ağırlıklarının yaklaşık 1.5x düzeyinde tutar, 2x düzeyinde değil, çünkü delta paketlenmiş bit biçiminde okunur ve kaynaşmış işlem sırasında hızlı SRAM içinde açılır.

Gecikme profili

Uygulamada, 14 varyantlı Zen sunum kümesinde:

VaryantP50 TTFTP99 TTFTtaban çizgiye göre
zen4 (base)18ms42ms1.0x
zen4-coder21ms48ms1.17x
zen4-ultra22ms51ms1.22x
zen4-math21ms47ms1.17x
zen4-writer20ms45ms1.11x

BitDelta kurulumundan gelen ilk belirtece kadar süre ek yükü 2-4ms düzeyindedir, tipik istem uzunluklarında prefill maliyetine göre ihmal edilebilir. Kurulum çekirdeği bellek değil hesap sınırlıdır, bu yüzden GPU üzerindeki üretimle iyi ölçeklenir.

Üretim verimi (token/saniye) taban model ile herhangi bir BitDelta varyantı arasında aynıdır, çünkü kurulum yalnızca prefill aşamasında olur. KV önbelleği dolduktan sonra özbağlanımlı üretim adımı standart matmul yollarını kullanır.

1 bit sıkıştırmada ne kaybolur

Dürüst yanıt: küçük, özenle sınırlanmış bir miktar.

BitDelta kalite düşüşü göreve bağlıdır. İnce ayar verisinde iyi temsil edilen görevlerde davranış deltası güçlüdür: işaret, baskın gradyan yönünü güvenilir biçimde yakalar. İnce ayar dağılımının çeperindeki görevlerde delta daha zayıftır: yaklaşım, sinyale göre daha çok gürültü sokar.

Ampirik olarak, hedef görev takımlarında değerlendirilen Zen modellerinde:

ModelTam kesinlikBitDeltaDelta
zen4-coder (HumanEval)72.4%71.1%-1.3%
zen4-math (MATH-500)68.9%67.8%-1.1%
zen4-writer (WritingBench)84.2%83.7%-0.5%
zen4-legal (LegalBench)61.3%60.1%-1.2%

Birincil görev takımlarındaki 1-1.3% düşüş, 87% bellek azaltımının bedelidir. Tüm Zen varyantları için bu ödün kabul edilebilir: kalite farkı, tipik kullanımda kullanıcıya hissedilir bir davranış değişiminin eşiğinin altındadır.

MonoSoup: SVD ile tek kontrol noktası tamamlayıcısı

MonoSoup (arXiv:2602.09689) tamamlayıcı bir sorunu ele alır: aynı taban modelin birden çok ince ayarlı kontrol noktası varken, hepsini aynı anda yüklemeden bunları tek bir kontrol noktasında nasıl birleştirirsiniz?

MonoSoup, en çok davranış bilgisini yakalayan düşük ranklı bileşenleri bulmak için görev vektörüne (Δ = W_ft - W_base) SVD uygular, sonra bunları kontrol noktaları arasında toplar:

For checkpoints {W_1, W_2, ..., W_k}:
  Δ_i = W_i - W_base
  [U_i, S_i, Vh_i] = truncated_SVD(Δ_i, rank=r)
  τ_i = U_i · diag(S_i) · Vh_i  # rank-r approximation

MonoSoup merge:
  W_merged = W_base + (1/k) · Σ τ_i

r rankında SVD kırpma bir gürültü giderme adımıdır: ince ayar, bir modeli ağırlık uzayında az sayıda yüksek varyanslı yön boyunca değiştirme eğilimindedir. Bu yönleri kırpılmış SVD ile yakalayıp birleştirmek, her kontrol noktasının davranış özünü, daha düşük tekil değerli yönlerdeki gürültü olmadan alır.

Zen eğitim koşularında MonoSoup bir kontrol noktası ortalama adımı olarak kullanılır: her 1000 gradyan adımında, güncel kontrol noktası bir önceki en iyiyle saf ortalama yerine MonoSoup ile birleştirilir. Bu, eğitim gürültüsünü azaltır ve daha düzgün kayıp eğrileriyle daha iyi son kalite üretir.

K-Merge: uç için çevrimiçi LoRA adaptör yönetimi

K-Merge (arXiv:2510.13537) sunum sorununun başka bir türünü çözer: depolamanın sabit bir B gigabayt bütçeyle kısıtlı olduğu uçta, K LoRA adaptörü verimli nasıl sunulur?

K-Merge, toplam depolama hiçbir zaman B değerini aşmasın kısıtıyla birleştirilmiş adaptörlerden bir havuz tutar. Havuzda olmayan yeni bir adaptör istendiğinde:

  1. Yeni adaptör ile havuzdaki tüm üyeler arasındaki ikili benzerlik hesaplanır (görev vektörleri üzerinde kosinüs benzerliği)
  2. Mevcut en benzer adaptör belirlenir
  3. Yeni adaptör, OPCM (dikey izdüşüm birleştirmesi) ile en benzer mevcut adaptöre birleştirilir
  4. Birleşik adaptörün her iki görevdeki kalitesi eşiği aşarsa, özgün olan tahliye edilir ve birleşik sürüm saklanır

Politika, havuzun bütçe B tüketen en çok K adaptör içermesini garanti eder ve ilkeli birleştirme ile istenen tüm adaptörlerin kapsamını büyütür.

Zen uç dağıtımı (Hanzo Desktop, mobil) için K-Merge, aksi halde aygıt depolama sınırlarını aşacak, yerelde sunulan model ailelerini olanaklı kılar. 16GB kullanılabilir model depolaması olan bir aygıt, benzer adaptörleri isteğe bağlı birleştiren bir K-Merge havuzu tutarak 8 ayrı davranış profili sunabilir.

Altyapı ayrıntıları

Delta depolama biçimi: paketlenmiş int8 tensörler olarak saklanan 1 bitlik işaret matrisleri (bayt başına 8 bit, böylece 4096×4096 ağırlıklı bir 70B parametre katmanı 4096×512 int8 olarak paketlenir). α ölçek çarpanları float32 olarak, çıkış boyutu başına bir tane saklanır ve deltanın depolamasının yaklaşık 0.1% kadarını oluşturur.

Soğuk başlangıç davranışı: bir varyantın deltası GPU SRAM içinde önbellekte değilse (örneğin varyant 10 dakika içinde istenmemişse), ilk istek 70B bir model için yaklaşık 200ms delta yükleme gecikmesi cezası öder: 8.75GB verinin NVMe sıralı okuma hızlarında NVMe'den HBM'ye aktarım süresi. İlk istekten sonra delta, LRU politikası tahliye edene kadar GPU SRAM delta önbelleğinde kalır.

Önbellek tahliye politikası: istek hızı ağırlıklı LRU. İstek hızı yüksek varyantlar sabitlenir; trafiği düşük varyantlar tahliyeye adaydır. Uygulamada, trafik hacmine göre ilk 6 varyant her zaman önbellekte durur; kalan 8 varyant kalan önbellek alanını LRU tahliyesiyle paylaşır.

İstek yönlendirme: sunum yönlendiricisi varyant başına uçuştaki istekleri izler ve hat başı blokajını önler: zen4-coder deltası yükleniyorsa, gelen zen4-coder istekleri her biri ayrı yükleme tetiklemek yerine kuyruğa girer.

Sonuç: eşdeğer yetenek için daha önce 112x H100 düğüm gerektirecek olan 14 Zen model varyantı, 8x H100 düğümden sunulur. Altyapı maliyeti azalması artımlı değildir. BitDelta, çok kiracılı model ailesini ekonomik olarak uygulanabilir kılar.


Zen modelleri zenlm.org adresindedir. API erişimi hanzo.ai adresindedir.

Yorumlar

Yorum yapmak için Hanzo ID ile giriş yap.

Yorumlar yükleniyor…

Devamını oku