Yolo Vision Shenzhen
Shenzhen
Şimdi katılın
Sözlük

Derinlik Karışımı (MoD)

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 .

Kavramı Anlamak

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.

Uzman Karışımı (MoE) ile Farklılaşma

Bu kavramı Uzman Karışımı (MoE) ile karıştırmak kolaydır. Her ikisi de yönlendirme mekanizmaları kullanır, ancak farklı sorunları çözerler:

  • MoE, belirli bir katman içindeki farklı alt ağlara (uzmanlar) tokenları yönlendirir. Hesaplama derinliği tüm tokenlar için aynı kalır, ancak modelin parametre sayısı artar.
  • MoD, tokenları hesaplama bloğuna veya atlama bağlantısına yönlendirir. Parametre sayısı kesinlikle sabit kalır, ancak daha az önemli tokenlar için hesaplama derinliği azalır ve bu da çıkarım gecikmesini doğrudan iyileştirir.

Gerçek Dünya Uygulamaları

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. .

  1. Dil Modellerinde Bağlam Optimizasyonu: Modern OpenAI ve Anthropic gibi kuruluşların Anthropic büyük bağlam pencerelerini işler. Dinamik derinlik yönlendirmesi kullanarak bu modeller, yapısal veya tekrarlayan dolgu kelimelerini atlayabilir ve karmaşık akıl yürütme adımları ve olgusal çıkarımlar için derin hesaplamaları saklayabilir.
  2. Yüksek Çözünürlüklü Görme AI: Ultralytics modeli gibi gelişmiş görme sistemlerinde, nesne algılama ve görüntü segmentasyonu için büyük görüntülerin işlenmesi çok büyük bir bellek gerektirir. Derinlik yönlendirmesi, ağın tekdüze arka planlarda (boş gökyüzü veya boş duvarlar gibi) özellik çıkarımını atlamasına ve hesaplama gücünü karmaşık ön plan nesnelerine odaklamasına olanak tanır. Bu, kaynakların kısıtlı olduğu kenar AI modellerinin dağıtımı için çok önemlidir. Derinlik yönlendirmesi, ağın tekdüze arka Derinlik yönlendirmesi, ağın tekdüze arka planlarda (boş gökyüzü veya boş duvarlar gibi) özellik çıkarmayı atlamasına ve hesaplama gücünü karmaşık ön plan nesnelerine odaklamasına olanak tanır. Bu, CUDA kitaplıkları ile optimize edilmiş kaynak kısıtlı kenar AI donanımına modellerin dağıtılması için çok önemlidir. .

Uygulama Örneği

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.

Ultralytics YOLO ile güçlenin

Projeleriniz için gelişmiş yapay zeka vizyonu edinin. Hedeflerinize uygun lisansı bugün bulun.

Lisanslama seçeneklerini keşfedin