Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten
Glossar

Tiefenmischung (MoD)

Entdecken Sie, wie Mixture of Depths (MoD) die KI-Effizienz durch dynamisches Routing von Tokens optimiert. Erfahren Sie, wie diese Technik FLOPs in Ultralytics und LLMs reduziert.

In Deep-Learning-Architekturen ist die Recheneffizienz von größter Bedeutung, insbesondere bei der Verarbeitung langer Sequenzen oder hochauflösender Eingaben. Ein neuartiger Ansatz weist die Rechenressourcen dynamisch zu, indem das Netzwerk entscheiden kann, welche Teile der Eingabe vollständig verarbeitet werden müssen und welche bestimmte Schichten sicher umgehen können. Diese dynamische Routing-Strategie reduziert die gesamte Rechenkomplexität, ohne die Vorhersagekraft oder Genauigkeit des Modells zu beeinträchtigen.

Das Konzept verstehen

Mixture of Depths (MoD) ist eine Architekturtechnik, die in erster Linie bei Transformer-Architekturen angewendet wird, bei denen das Modell lernt, Berechnungen für bestimmte Token in verschiedenen Schichten dynamisch zu überspringen. Herkömmliche Transformer verarbeiten jedes Token in jeder Schicht, unabhängig davon, ob es sich um eine wichtige Information oder um Füllinhalt handelt. Im Gegensatz dazu verwendet ein MoD-Modell einen Router-Mechanismus, um Token zu bewerten und ihnen eine Punktzahl zuzuweisen. Nur die Tokens mit der höchsten Punktzahl – bis zu einer vordefinierten Kapazitätsgrenze – werden durch die rechenintensiven Blöcke geleitet, wie z. B. Aufmerksamkeitsmechanismen oder dichte Feedforward-Schichten . Die übrigen Tokens umgehen den Block über Restverbindungen, wodurch effektiv eine „Mischung aus Tiefen” entsteht, bei der verschiedene Tokens unterschiedliche Verarbeitungsintensitäten durchlaufen.

Diese Methode, die durch die jüngsten Forschungen von DeepMind bekannt wurde und ausführlich im arXiv-Repository dokumentiert ist, reduziert die Gesamtzahl der Fließkommaoperationen (FLOPs), die sowohl während des Trainings als auch der Inferenz erforderlich sind, drastisch.

Unterscheidung von Mixture of Experts (MoE)

Dieses Konzept kann leicht mit einem Mixture of Experts (MoE) verwechselt werden. Beide verwenden zwar Routing-Mechanismen, lösen jedoch unterschiedliche Probleme:

  • MoE leitet Token an verschiedene Subnetze (Experten) innerhalb einer Schicht weiter. Die Berechnungstiefe bleibt für alle Token gleich, aber die Parameteranzahl des Modells erhöht sich.
  • MoD leitet Tokens entweder zum Berechnungsblock oder zu einer Skip-Verbindung weiter. Die Parameteranzahl bleibt strikt konstant, aber die Berechnungstiefe nimmt für weniger wichtige Tokens ab, was direkt zu einer Verbesserung der Inferenzlatenz führt.

Anwendungsfälle in der Praxis

Die Möglichkeit, Rechenleistung dynamisch zu budgetieren, macht diese Technik in mehreren Bereichen der Computervision und der Verarbeitung natürlicher Sprache äußerst wertvoll.

  1. Kontextoptimierung in Sprachmodellen: Moderne große Sprachmodelle (LLMs) von Organisationen wie OpenAI und Anthropic verarbeiten riesige Kontextfenster. Durch den Einsatz von dynamischem Tiefenrouting können diese Modelle strukturelle oder repetitive Füllwörter überspringen und so tiefgreifende Berechnungen für komplexe Schlussfolgerungen und die Extraktion von Fakten reservieren.
  2. Hochauflösende Vision-KI: In fortschrittlichen Bildverarbeitungssystemen wie dem Ultralytics erfordert die Verarbeitung großer Bilder zur Objekterkennung und Bildsegmentierung einen enormen Speicherbedarf. Durch Depth Routing kann das Netzwerk die Merkmalsextraktion auf einheitlichen Hintergründen (wie leerem Himmel oder leeren Wänden) umgehen und die Rechenleistung auf komplexe Vordergrundobjekte konzentrieren. Dies ist entscheidend für den Einsatz von Modellen auf ressourcenbeschränkter Edge-KI-Hardware, die durch CUDA optimiert wurde.

Beispiel für die Umsetzung

Nachfolgend finden Sie einen konzeptionellen PyTorch , der veranschaulicht, wie ein grundlegender Routing-Mechanismus die Berechnung für einen Teil der Eingabetoken überspringen und so ein Deep-Routing-Verhalten simulieren könnte.

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)

Durch die Nutzung von Frameworks wie dem PyTorch oder TensorFlowkönnen Entwickler diese benutzerdefinierten Modelloptimierungsblöcke integrieren. Darüber hinaus helfen Tools wie die Ultralytics Teams bei der Verwaltung der Trainingsdaten, die für das genaue Training dieser Router erforderlich sind, und lassen sich nahtlos in Unternehmensökosysteme wie Google AI integrieren.

Leistungssteigerung mit Ultralytics YOLO

Erhalten Sie fortschrittliche KI-Vision für Ihre Projekte. Finden Sie noch heute die richtige Lizenz für Ihre Ziele.

Lizenzoptionen entdecken