Derinlik Karışımı (MoD) tekniğinin, tokenleri dinamik olarak yönlendirerek AI verimliliğini nasıl optimize ettiğini keşfedin. Bu tekniğin Ultralytics ve LLM'lerde FLOP'ları nasıl azalttığını öğrenin.
Derin öğrenme mimarilerinde, özellikle uzun diziler veya yüksek çözünürlüklü girdiler işlenirken hesaplama verimliliği çok önemlidir. Yeni bir yaklaşım, ağın girdinin hangi kısımlarının tam işleme tabi tutulması gerektiğini ve hangilerinin belirli katmanları güvenle atlayabileceğini belirlemesine izin vererek hesaplama kaynaklarını dinamik olarak tahsis eder. Bu dinamik yönlendirme stratejisi, modelin tahmin gücünden veya doğruluğundan ödün vermeden genel hesaplama karmaşıklığını azaltır .
Derinlik Karışımı (MoD), öncelikle Transformer mimarilerinde uygulanan bir mimari tekniktir ve model, çeşitli katmanlarda belirli tokenlar için hesaplamayı dinamik olarak atlamayı öğrenir. Geleneksel transformatörler , önemli bir bilgi parçası veya dolgu içeriği olsun, her katmandan her tokenı işler. Buna karşılık, MoD modeli, tokenları değerlendirmek için bir yönlendirici mekanizması kullanır ve onlara bir puan atar. Yalnızca en yüksek puanlı tokenlar — önceden tanımlanmış bir kapasite sınırına kadar — dikkat mekanizmaları veya yoğun ileri besleme katmanları gibi ağır hesaplama bloklarından geçer. Kalan tokenlar, artık bağlantılar aracılığıyla bloğu atlar ve farklı tokenların farklı düzeylerde işleme derinliği yaşadığı etkili bir "derinlik karışımı" oluşturur.
DeepMind'ın son araştırmalarıyla popüler hale gelen ve arXiv deposunda kapsamlı bir şekilde belgelenen bu yöntem, hem eğitim hem de çıkarım sırasında gerekli olan toplam kayan nokta işlemlerinin (FLOP) sayısını önemli ölçüde azaltır.
Bu kavramı Uzman Karışımı (MoE) ile karıştırmak kolaydır. Her ikisi de yönlendirme mekanizmaları kullanır, ancak farklı sorunları çözerler:
Hesaplamayı dinamik olarak bütçeleme yeteneği, bu tekniği bilgisayar görme ve doğal dil işleme gibi birçok alanda oldukça değerli kılar. .
Aşağıda, temel bir yönlendirme mekanizmasının, derinlik yönlendirme davranışını simüle ederek, girdi belirteçlerinin bir kısmı için hesaplamayı nasıl atlayabileceğini gösteren kavramsal bir PyTorch bulunmaktadır. .
import torch
import torch.nn as nn
class MixtureOfDepthsBlock(nn.Module):
def __init__(self, d_model, capacity_factor=0.5):
super().__init__()
self.capacity_factor = capacity_factor
self.router = nn.Linear(d_model, 1)
self.heavy_compute = nn.Sequential(nn.Linear(d_model, d_model * 4), nn.GELU(), nn.Linear(d_model * 4, d_model))
def forward(self, x):
# x shape: (batch_size, seq_len, d_model)
seq_len = x.size(1)
capacity = int(seq_len * self.capacity_factor)
# 1. Compute routing scores
scores = self.router(x).squeeze(-1) # Shape: (batch_size, seq_len)
# 2. Identify top-k tokens to process
topk_indices = torch.topk(scores, capacity, dim=1).indices
# 3. Create an output tensor mirroring the input (residual baseline)
output = x.clone()
# 4. Apply heavy computation only to the selected tokens
for b in range(x.size(0)):
selected_tokens = x[b, topk_indices[b]]
processed_tokens = self.heavy_compute(selected_tokens)
output[b, topk_indices[b]] += processed_tokens
return output
# Example usage
dummy_input = torch.randn(2, 64, 128) # Batch=2, Seq=64, Dim=128
mod_block = MixtureOfDepthsBlock(d_model=128, capacity_factor=0.5)
output = mod_block(dummy_input)
print(f"Output shape: {output.shape}") # Expect (2, 64, 128)
PyTorch veya TensorFlow gibi çerçevelerden yararlanarak TensorFlowgibi çerçevelerden yararlanarak, geliştiriciler bu özel model optimizasyon bloklarını entegre edebilirler. Ayrıca, Ultralytics gibi araçlar, ekiplerin bu yönlendiricileri doğru bir şekilde eğitmek için gereken eğitim verilerini yönetmelerine yardımcı olur ve aynı zamanda Google AI gibi kurumsal ekosistemlerle sorunsuz bir şekilde entegre olur.