Wähle deine bevorzugte Option:
für Einzelnutzer
für Teams und Unternehmen

Von der ersten Idee bis zur voll integrierten KI-Lösung – strukturiert, sicher und mit messbarem Erfolg
Wir analysieren Ihre Geschäftsprozesse und identifizieren konkrete Use Cases mit dem höchsten ROI-Potenzial.
✓ Messbare KPIs definiert
Vollständige Datenschutz-Analyse und Implementierung sicherer Datenverarbeitungsprozesse nach EU-Standards.
✓ 100% DSGVO-konform
Maßgeschneiderte Auswahl der optimalen KI-Lösung – von Azure OpenAI bis zu Open-Source-Alternativen.
✓ Beste Lösung für Ihren Fall
Schneller Proof of Concept mit nahtloser Integration in Ihre bestehende IT-Infrastruktur und Workflows.
✓ Ergebnisse in 4-6 Wochen
Unternehmensweiter Rollout mit umfassenden Schulungen für maximale Akzeptanz und Produktivität.
✓ Ihr Team wird KI-fit
Die Entwicklung von Large Language Models (LLMs) war in den letzten Jahren maßgeblich von der Skalierung dichter Modelle geprägt. Konzepte wie "mehr Daten und mehr Parameter führen zu besserer Leistung" haben die Fortschritte vorangetrieben, von frühen Modellen mit Millionen von Parametern bis hin zu heutigen Systemen mit Hunderten von Milliarden Parametern. Die sogenannten Skalierungsgesetze haben diesen Trend bestätigt, doch stoßen dichte Skalierungsansätze zunehmend an praktische Grenzen. Diese Grenzen manifestieren sich in:
An diesem Punkt treten Mixture of Experts (MoE) Architekturen in den Vordergrund, um diese Herausforderungen zu adressieren.
Ein MoE-Modell behält das grundlegende Transformer-Gerüst bei, ersetzt jedoch bestimmte dichte Feed-Forward-Schichten durch eine Ansammlung von Experten. Ein "Experte" ist hierbei kein thematisch spezialisiertes Modul (z.B. ein "Mathematik-Experte" oder "Code-Experte"), sondern schlicht ein trainierbares Sub-Netzwerk. Für jedes Token wählt ein Router eine kleine Untergruppe von Experten aus, die dieses Token verarbeiten sollen.
Unterschiedliche Token aktivieren demnach basierend auf ihren verborgenen Repräsentationen unterschiedliche Experten. Das zentrale Konzept ist hierbei, dass die Modellkapazität von der Gesamtzahl der Parameter abhängt, die Inferenzgeschwindigkeit jedoch von der Anzahl der aktiv genutzten Parameter. Nehmen wir beispielsweise das Modell `gpt-oss-20b`. Es verfügt über 21 Milliarden Gesamtparameter, nutzt aber pro Token 4 aktive Experten aus insgesamt 32. Berücksichtigt man die gemeinsam genutzten Komponenten und die aktiven Experten, verwendet dieses Modell etwa 3,6 Milliarden aktive Parameter pro Token. Wird dieses Modell auf einem M3 Ultra Mac mit einer Speicherbandbreite von ca. 800 GB betrieben, lässt sich die Generierungsgeschwindigkeit in `bfloat16` auf etwa 111 Token pro Sekunde schätzen, wobei jeder Parameter 2 Byte beansprucht. Die tatsächlich erreichte Leistung von etwa 115 Token pro Sekunde liegt sehr nahe an dieser Schätzung. Diese hohe Geschwindigkeit bestätigt, dass das Modell annähernd wie ein 3,6 Milliarden Parameter großes Modell arbeitet, jedoch die Kapazität (oder Qualität) eines 21 Milliarden Parameter großen Modells besitzt.
MoEs sind aus mehreren Gründen attraktiv:
Die meisten Tools im Ökosystem, einschließlich des Ladens von Modellen, der Geräteplatzierung, der Quantisierung und der Backend-Ausführung, wurden ursprünglich für dichte Modelle konzipiert. MoEs stellen diese Annahmen in Frage. Die Integration von MoEs als "First-Class Citizens" in `transformers` bedeutet eine Neugestaltung von Teilen der Lade-Pipeline, des Ausführungsmodells und der verteilten Abstraktionen, über die bloße Hinzufügung neuer Modellklassen hinaus.
Im Folgenden wird erläutert, wie sich die `transformers`-Bibliothek entwickelt hat, um spärliche Architekturen in den Bereichen Gewichts-Laden, Expert-Backend und Expert-Parallelisierung zu unterstützen.
Die Funktion `AutoModelForCausalLM.from_pretrained("model_id")` lädt Modellgewichte in ein PyTorch-Modell. Bei dichten Modellen ist dieser Vorgang relativ einfach, da jeder Tensor im Checkpoint eins zu eins einem Parameter im Laufzeitmodul entspricht. Bei MoEs ist dies komplexer. In den meisten MoE-Checkpoints wird jeder Experte unabhängig serialisiert. Ein Blick in den DeepSeek-V3 Checkpoint-Index zeigt Schlüssel wie `model.layers.3.mlp.experts.0.gate_proj.weight` bis `model.layers.3.mlp.experts.255.gate_proj.weight`. Jeder Experte besitzt eigene Gewichtungsmatrizen, effektiv 256 kleine Feed-Forward-Netzwerke, die Seite an Seite gespeichert sind. Zur Laufzeit benötigen GPUs jedoch optimierte Kernel, die alle Experten in einer einzigen Operation verarbeiten, anstatt sie einzeln zu durchlaufen. Dies erfordert, dass die Expertengewichte in einem einzigen, zusammenhängenden Tensor verpackt sind. Daraus ergibt sich eine Diskrepanz zwischen dem Checkpoint (256 separate Tensoren) und der Laufzeit (1 gepackter Tensor). Die systematische Überbrückung dieser Lücke wird durch das Refactoring des Gewichts-Ladens ermöglicht.
Mit der Einführung eines generischen WeightConverter hat sich das Verständnis von einem Checkpoint, der dem Laufzeit-Layout entspricht, zu einem Checkpoint als serialisierte Quelle von Tensoren entwickelt, die durch eine Konvertierungspipeline in das gewünschte Laufzeit-Layout transformiert werden.
Die zentrale Abstraktion dieses Refactorings ist das dynamische Gewichts-Laden über einen `WeightConverter`. Dieser allows die Definition von:
Quellschlüsselmuster → Zielschlüssel(e) + Operationen
Primitive Operationen (Chunk, Concatenate etc.) sind komponierbar. Zwei besonders nützliche für MoEs sind:
Der Ladevorgang scannt Checkpoint-Schlüssel einmal, gleicht sie mit Konverter-Mustern ab und gruppiert Tensoren pro Konverter. Sobald ein Schlüssel als benötigt identifiziert wird, wird er als "Future" registriert und über einen Thread-Pool materialisiert. Konvertierungsoperationen werden erst ausgeführt, wenn ihre Abhängigkeiten bereit sind. Dies vermeidet wiederholte Scans und reduziert Speicherpeaks.
Die Benchmarks zeigen eine signifikante Beschleunigung des Ladevorgangs von großen MoE-Modellen. Die Kombination aus Single-Pass-Routing, asynchroner Materialisierung und konvertierungsbewusster Planung vermeidet unnötige Materialisierung und Speicherpeaks, während sie das Packen von Experten und die Projektionsfusion zur Ladezeit ermöglicht. Dieses Refactoring ermöglicht auch die Integration der Quantisierung in die Gewichts-Lade-Pipeline, da die Quantisierung "pro Experte" erst sinnvoll ist, wenn die Experten in einem vorhersagbaren, gepackten Layout vorliegen.
Sind die Experten in einem einzigen Laufzeit-Tensor gepackt, stellt sich die Frage, wie effizient durch sie geroutet werden kann. In einem MoE-Modell wird jedes Token an unterschiedliche Experten weitergeleitet. Die Laufzeit muss Tokens an die ausgewählten Expertengewichte senden, die Projektionen effizient ausführen, die Routing-Gewichte anwenden und dann die Ergebnisse sammeln und neu ordnen. Dies adressiert das Expert Backend System (eingeführt in PR #42697).
Das Expert Backend führt eine steckbare Ausführungsarchitektur ein, die die Expertenberechnung von der Modellimplementierung entkoppelt. Anstatt eine Dispatch-Strategie in jedem MoE-Modell fest zu kodieren, ermöglicht das System Expertenschichten, dynamisch ein Backend zur Laufzeit auszuwählen. Dies wird durch ein Decorator-Muster implementiert (@use_experts_implementation), das Expert-Klassen umschließt und die Berechnung automatisch an das ausgewählte Backend sendet.
Aktuell sind drei Backends verfügbar:
Mixture of Experts (MoE) Modelle können Hunderte von Milliarden Parametern umfassen, weit mehr als auf eine einzelne GPU passen. Die Expert Parallelisierung (EP) löst dieses Problem, indem sie Experten auf mehrere Geräte verteilt. Jedes Gerät lädt nur seine zugewiesene Untergruppe von Experten, führt Berechnungen für diese Experten durch und beteiligt sich dann an der Aggregation der Ergebnisse. Dieser Ansatz skaliert Modelle auf weitaus größere Parameterzahlen, ohne die Rechenkosten zu erhöhen, da jedes Token nur wenige Experten aktiviert.
Expert Parallelisierung wird über `enable_expert_parallel` aktiviert:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.distributed.configuration_utils import DistributedConfig
distributed_config = DistributedConfig(enable_expert_parallel=True)
model = AutoModelForCausalLM.from_pretrained(
"openai/gpt-oss-120b",
dtype="auto",
distributed_config=distributed_config,
)
Der Start erfolgt mit:
torchrun --nproc-per-node N script.py
Dabei teilt `N` die Gesamtzahl der Experten gleichmäßig und entspricht möglicherweise der Anzahl der GPUs in Ihrem Knoten.
Wenn `enable_expert_parallel=True` gesetzt ist, wechselt das Modell vom standardmäßigen Tensor-Parallel-Plan (TP) zu einem Expert-Parallel-Plan (EP) mit spezialisierten Sharding-Strategien. Kernkomponenten von EP sind:
MoEs sind hervorragend für die Skalierung der Inferenz geeignet, ihr Training ist jedoch erheblich komplexer. Dies liegt an der enormen Parameteranzahl, der komplizierten Kommunikation zwischen verteilten Experten und den Instabilitäten beim Routing. Um diese Herausforderungen zu bewältigen, wurde in Zusammenarbeit mit Unsloth eine deutlich schnellere MoE-Trainingslösung entwickelt, die:
Diese Optimierungen nutzen die Abstraktion des Expert Backends, standardisieren die `torch._grouped_mm` API von PyTorch und verwenden benutzerdefinierte Triton Grouped-GEMM + LoRA-Kernel. Unsloth baut auf den Optimierungen von Transformers (und TRL) auf, um die Leistung weiter zu steigern.
Während spärliche Architekturen sich weiterentwickeln, ist es das Ziel, dass die `transformers`-Bibliothek diese Entwicklung begleitet. Die Integration von Mixture of Experts in die `transformers`-Bibliothek stellt einen bedeutenden Schritt dar, um die Grenzen der Skalierbarkeit von großen Sprachmodellen zu erweitern. Durch innovative Ansätze beim Laden von Gewichten, der Gestaltung des Expert-Backends und der Expert-Parallelisierung werden sowohl die Effizienz der Inferenz als auch die Trainingsgeschwindigkeit erheblich verbessert. Diese Entwicklungen tragen dazu bei, die praktische Anwendbarkeit von extrem großen Modellen zu erleichtern und neue Möglichkeiten für zukünftige KI-Anwendungen zu eröffnen.
Die fortlaufende Forschung und Entwicklung in diesem Bereich, insbesondere im Hinblick auf die Stabilität des Trainings und die weitere Optimierung der Hardware-Nutzung, wird entscheidend sein, um das volle Potenzial von MoE-Architekturen auszuschöpfen. Die Zusammenarbeit zwischen Forschungsgemeinschaften und Entwicklern von Frameworks wie `transformers` ist dabei unerlässlich, um diese komplexen Systeme zugänglich und leistungsfähig zu gestalten.
Lernen Sie in nur 30 Minuten kennen, wie Ihr Team mit KI mehr erreichen kann – live und persönlich.
🚀 Demo jetzt buchen