Mixture of Depths (MoD)
Derinlik Karışımı (MoD), her Transformer bloğundan yalnızca en yüksek puanlı belirteçleri geçirir ve diğerlerinin bloğu atlamasını sağlayarak ileri geçiş başına hesaplama maliyetini düşürür.
Mixture of Depths (MoD), öğrenilmiş bir yönlendiricinin her blokta hangi belirteçlerin işleneceğine, hangilerinin artık bağlantısından atlayarak bloğu geçeceğine karar verdiği bir Transformer tekniğidir; böylece belirteçler farklı miktarlarda hesaplama alır. Google DeepMind'dan David Raposo, Adam Santoro ve çalışma arkadaşları, tekniği Nisan 2024'te Derinlik Karışımı: Transformer Tabanlı Dil Modellerinde Hesaplamayı Dinamik Olarak Dağıtma başlıklı makalede tanıttı. Sabit bir k kapasitesi, yönlendirilen her bloğun kaç belirteci işleyeceğini belirler; dolayısıyla hangi belirteçlerin seçileceği girdiye bağlı olsa da hesaplama bütçesi ve tensör boyutları önceden bellidir. MoD büyük dil modelleri (LLM'ler), eşit eğitim FLOPs ve gerçek süre koşullarında temel modelle aynı kaliteye ulaşırken ileri geçiş başına FLOPs'un yalnızca bir bölümünü kullandı ve örnekleme sırasında %50'den fazla hızlandı. Sabit bir eğitim bütçesinde en iyi MoD modeli, en iyi temel modelden daha büyüktü ve daha düşük kayıp değerine ulaştı.
MoD Yönlendirmesi Nasıl Çalışır?#
Yönlendirilen bir bloktan önce doğrusal bir yönlendirici her belirtece skaler bir puan verir. En yüksek puanlı k belirteç, bloğun öz-dikkat ve MLP katmanlarından geçer. Çıktıları yönlendirici puanlarıyla çarpılır ve artık akışına eklenir. Puanla çarpma, yönlendiriciyi gradyan yoluna dâhil eder; böylece geri yayılım, hangi belirteçlerin yarar gördüğünü yönlendiriciye öğretebilir. Geri kalan belirteçler değişmeden geçer ve o bloğun dikkat mekanizmasına alınmaz; bu nedenle sonraki belirteçler o blokta onlara dikkat edemez ve dikkat maliyeti kapasitenin karesiyle azalır: belirteçlerin yarısı, sorgu-anahtar çarpımlarının dörtte birine mal olur. Makaledeki en iyi ayarda, her iki bloktan biri dizinin %12,5 kapasitesinde yönlendirildi. PyTorch ile yazılmış, yalnızca MLP içeren yönlendirilmiş tek bir bloğun en yalın hâli:
import torch
from torch import nn
torch.manual_seed(0)
batch, seq_len, dim = 2, 64, 128
capacity = int(0.125 * seq_len) # 12.5% of tokens, the paper's best setting
x = torch.randn(batch, seq_len, dim)
router = nn.Linear(dim, 1)
block = nn.Sequential(nn.Linear(dim, 4 * dim), nn.GELU(), nn.Linear(4 * dim, dim))
# The router scores every token, and only the top-k tokens enter the block
weights, idx = router(x).squeeze(-1).topk(capacity, dim=1)
idx = idx[..., None].expand(-1, -1, dim)
update = block(x.gather(1, idx)) * weights[..., None] # router weight keeps the router trainable
# Selected tokens get the residual update; the rest skip the block unchanged
out = x.scatter_add(1, idx, update)
unchanged = (out == x).all(dim=-1).sum().item()
print(f"Block ran on {batch * capacity} of {batch * seq_len} tokens; {unchanged} skipped it unchanged")Block ran on 16 of 128 tokens; 112 skipped it unchanged değerini yazdırır: bloğun MLP katmanı olağan iş yükünün sekizde birini yaptı ve sonraki blok için çıktı tensörü tam dizi boyutunu koruyor.
Üretim Sırasında Yönlendirme#
Top-k seçimi nedensel değildir: Bir belirtecin dizideki en iyi k belirteç arasında yer alıp almaması, modelin metin üretirken henüz var olmayan sonraki belirteçlerin puanlarına bağlıdır. Yazarlar yönlendirmeyi iki yolla nedensel hâle getirdi: yönlendiricinin çıktısını top-k üyeliğini tahmin edecek şekilde öğreten yardımcı bir ikili çapraz entropi kayıp fonksiyonu; bu yöntem dil modelleme kaybını yalnızca %0,2-0,3 değiştirdi. Diğer yol, gradyan durdurulmuş girdilerde çalışan küçük ve ayrı bir MLP tahmincisiydi; bu tahminci kısa sürede %97-99 doğruluğa ulaştı. Her iki yöntemde de otoregresif örnekleme çok az kalite kaybetti. Eğitilmiş yönlendiriciler ayrıca bir örüntü gösteriyor: bazı belirteçler modelin derinliği boyunca yönlendirilen her bloğa girerken, bazıları mümkün oldukça blokları atlıyor.
MoD ve İlgili Teknikler#
- Uzman karışımı (MoE): Her belirteci bir katman içindeki bir veya birkaç uzman MLP'ye yönlendirir; belirteç başına hesaplama sabit kalırken parametre sayısı artar. Makalede iki yöntem MoDE adıyla da birleştirildi; bu yöntemde bir belirteç bir uzmana veya işlemsiz seçeneğe yönlendirilebilir ve kazanımlar katlanarak arttı.
- Erken çıkış: Bir belirteç bir katmandan sonra durur ve geri kalan katmanları atlar. MoD ise bir bloğu atlayıp sonraki blokları kullanmaya devam edebilir.
- Belirteç birleştirme (ToMe): Bir görme Transformer'ında benzer belirteçleri birleştirerek sonraki katmanların daha az belirteç işlemesini sağlar; öğrenilmiş yönlendirici kullanmaz.
- Model budama: Ağırlıkları kalıcı olarak kaldırır ve böylece her girdi aynı, daha küçük ağı kullanır.
- Model yönlendirme: Bir isteğin tamamını birkaç modelden birine gönderir; aynı fikri modelin bütünü düzeyinde uygular.
Çoğu ağın derinliği oluşturulurken sabitlenir. Ultralytics YOLO26 bu derinliği model ölçeğine göre belirler: model YAML dosyasındaki derinlik çarpanı n, s ve m ölçeklerinde 0.50; l ve x ölçeklerinde 1.00'dır. Dolayısıyla 2 tekrar olarak listelenen bir C3k2 aşaması YOLO26n'de 1, YOLO26x'te 2 blok çalıştırır ve her görüntü bu blokların tümünden geçer.










