Modell / Datensatz
ZHZisZZ/dllm avatar
ZHZisZZ/dllm

dLLM: eine Bibliothek für Training und Evaluation von Diffusionssprachmodellen

dLLM: Simple Diffusion Language Modeling

2.688 Sterne280 ForksPythonApache-2.0

Auf einen Blick

Was ist das?
dLLM bündelt Trainingsrezepte, Inferenzpfade und eine an lm-evaluation-harness angelehnte Auswertung für maskierte Diffusion, Blockdiffusion und Edit Flows. Der Nutzen liegt in der Vergleichbarkeit, die Grenze in der Reproduktion fremder Checkpoints.
Für wen ist es gedacht?
Wer Diffusionssprachmodelle auf eigener Hardware trainieren oder fremde Checkpoints unter einheitlichen Bedingungen vergleichen will, findet in dLLM die passende Struktur, sofern die genannten Trainings- und Auswertungsskripte im jeweiligen examples-Verzeichnis vorhanden sind.
Darf ich es kommerziell nutzen?
Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 60 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Python, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Welche Lücke dLLM schließt

Diffusionssprachmodelle werden in der Forschungsliteratur meist als Einzelbeiträge veröffentlicht. Jede Arbeit bringt eigene Trainingsschleifen, eigene Sampling-Verfahren und eigene Auswertungsskripte mit. Wer zwei Ansätze vergleichen will, vergleicht deshalb selten die Modelle, sondern meist die Implementierungen. dLLM setzt genau dort an: Das Repository beschreibt sich selbst als Bibliothek, die Training und Evaluation von Diffusionssprachmodellen vereinheitlicht und Transparenz sowie Reproduzierbarkeit über die gesamte Entwicklungskette herstellen soll. Die Zielgruppe sind damit Forschende und Ingenieure, die bereits wissen, was maskierte Diffusion ist, und die nicht bei jeder neuen Variante die Datenpipeline neu schreiben wollen. Das Projekt richtet sich ausdrücklich nicht an Anwender, die lediglich eine Chat-Schnittstelle suchen. Der Hinweis im Repository, dass es vorrangig Bildungszwecken diene und keine vollständige Reproduktion der offiziellen Modelle anstrebe, ist keine Bescheidenheitsfloskel, sondern eine Nutzungsgrenze, die man vor dem Einstieg kennen sollte.

Maskierte Diffusion, Blockdiffusion und Edit Flows im selben Rahmen

Die Bibliothek baut auf zwei bestehenden Säulen auf. Das Training verwendet den Trainer aus der transformers-Bibliothek, ergänzt um LoRA über peft, DeepSpeed und FSDP. Die Evaluation lehnt sich an lm-evaluation-harness an und soll die Details der Inferenz hinter einer gemeinsamen Schnittstelle verbergen. Dazwischen liegen die eigentlichen Diffusionsverfahren: MDLM als maskierte Diffusion, BD3LM als Blockdiffusion, Edit Flows mit Einfüge-, Lösch- und Ersetzungsoperationen sowie diffu-GRPO als Verfahren zur Optimierung über Belohnungssignale. Die Architektur ist also nicht ein einzelnes Modell, sondern eine Sammlung von Trainings- und Auswertungspfaden, die sich gemeinsame Infrastruktur teilen. Der Datenfluss folgt dem üblichen Muster: Ein Basismodell oder eine Konvertierungsroutine erzeugt ein Diffusionsmodell, der Trainer läuft über die vorhandene Schleife, die Auswertung greift auf die vereinheitlichte Schnittstelle zu. Wer die Verfahren wechseln will, wechselt das Verzeichnis unter examples, nicht die gesamte Codebasis. Das ist der eigentliche Beitrag: nicht ein neuer Algorithmus, sondern ein gemeinsamer Rahmen für mehrere.

Einrichtung und erste Befehle

Das Setup beginnt mit einer Conda-Umgebung auf Python 3.10. Der README zeigt die Reihenfolge: conda create -n dllm python=3.10 -y, dann conda activate dllm, anschließend die CUDA-Installation über conda install cuda=12.4 -c nvidia und schließlich PyTorch in der Version 2.6.0 zusammen mit torchvision 0.21.0 und torchaudio 2.6.0 über den angegebenen Index. Der README weist darauf hin, dass andere PyTorch- und CUDA-Versionen ebenfalls funktionieren sollten, was als Hinweis und nicht als Zusage zu lesen ist. Die Beispielverzeichnisse tragen sprechende Namen: examples/llada für Pretraining, Finetuning und Evaluation von LLaDA und LLaDA-MoE, examples/dream für Dream, examples/bert für die Umwandlung von BERT-Encodern in Chat-Modelle, examples/a2d für die Konvertierung autoregressiver Modelle, examples/editflow für die Edit-Flows-Referenz, examples/fastdllm für beschleunigte Inferenz mit Cache und Confidence-Threshold-Decoding sowie examples/rl für GRPO-Training. Die genauen Kommandos stehen jeweils in den README-Dateien dieser Unterverzeichnisse, nicht im Hauptdokument. Wer den Einstieg plant, sollte dort zuerst lesen, weil der Haupt-README nur die Struktur beschreibt.

Was das Repository nicht leistet

Der wichtigste Vorbehalt steht im auskommentierten Hinweis des README: Das Repository diene vorrangig Bildungszwecken und erhebe keinen Anspruch auf exakte Reproduktion der offiziellen Modelle. Für Vergleiche mit veröffentlichten Zahlen bedeutet das, dass eigene Läufe nicht ohne Weiteres gegen die Ergebnisse aus den Papern gestellt werden können. Ein zweiter Punkt betrifft die Inferenz: Die Pfade für LLaDA2.0 unter examples/llada2 und LLaDA2.1 unter examples/llada21 sind laut README auf Inferenz beschränkt, dort gibt es kein Training. Wer diese Modelle feinjustieren will, findet im Repository keinen dokumentierten Weg. Drittens ist der Umfang der Beispiele ungleich verteilt: LLaDA und Dream haben Pretraining, Finetuning und Evaluation, BERT-Chat und A2D sind Konvertierungsrezepte, Edit Flows ist ausdrücklich als Bildungsreferenz bezeichnet. Ein einheitliches Werkzeug über alle Varianten hinweg ist dLLM damit nur eingeschränkt. Und schließlich: Wer einen Dienst mit fester Latenz und Lastverteilung braucht, wird in dieser Sammlung von Forschungsskripten keine Antwort finden.

Wo die Grenze zu lm-evaluation-harness verläuft

Die naheliegende Alternative ist die direkte Nutzung von lm-evaluation-harness, auf dem die Auswertung von dLLM aufsetzt. Der Unterschied liegt im Abstraktionsniveau. lm-evaluation-harness ist auf autoregressive Modelle zugeschnitten: Es erzeugt Token für Token und bewertet die Wahrscheinlichkeit der Fortsetzung. Ein maskiertes Diffusionsmodell erzeugt Text nicht sequenziell, sondern durch wiederholtes Entmaskieren, und die Reihenfolge der Entmaskierung beeinflusst das Ergebnis. dLLM fügt an dieser Stelle eine Zwischenschicht ein, die die Inferenzdetails hinter einer einheitlichen Schnittstelle verbirgt, sodass dieselbe Aufgabe für Diffusion und für autoregressive Modelle formuliert werden kann. Wer bereits eine umfangreiche Auswertungspipeline auf lm-evaluation-harness betreibt, muss also abwägen, ob die zusätzliche Schicht den Aufwand rechtfertigt. Für reine autoregressive Modelle bringt sie nichts. Für Diffusionsmodelle ist sie der Grund, überhaupt auf dLLM zu schauen, weil die Alternativen sonst bedeuten, die Sampling-Logik in jedes Auswertungsskript einzeln einzubauen.

Betrieb, Pflege und Lizenz

dLLM steht unter Apache-2.0. Diese Lizenz erlaubt kommerzielle Nutzung, verlangt aber die Beibehaltung der Urheberrechtshinweise und der Lizenzdatei sowie eine Kennzeichnung geänderter Dateien. Wer Teile der Bibliothek in ein eigenes Produkt übernimmt, muss die Bedingungen einhalten; das ist eine organisatorische Aufgabe, keine technische. Rechtliche Beratung ersetzt dieser Hinweis nicht. Zum Wartungsaufwand lässt sich aus dem Material nur begrenzt etwas ableiten. Das Repository ist nicht archiviert, der letzte Push liegt laut Metadaten im Juli 2026. Es gibt keine abgerufenen Releases, das Projekt wird also über den main-Branch verteilt. Das bedeutet für Nutzer: Es gibt keine Versionsnummer, an der man sich festhalten kann, und keine Release Notes, die Änderungen zwischen Ständen dokumentieren. Wer dLLM einsetzt, sollte einen bestimmten Commit festhalten und die Abhängigkeiten selbst pinnen. Die Bindung an transformers, peft, DeepSpeed und PyTorch bedeutet außerdem, dass ein Upgrade einer dieser Bibliotheken die Beispielrezepte brechen kann. Ein Upgrade-Pfad ist im Material nicht beschrieben.

Wann sich der Einstieg lohnt

Der stärkste Teil von dLLM ist die Konvertierungsrichtung. Die Sammlung enthält Rezepte, um einen beliebigen autoregressiven Encoder oder Decoder in ein Diffusionsmodell zu überführen: examples/a2d für Qwen, LLaMA und GPT-2, examples/bert für BERT, RoBERTa und ModernBERT. Wer bereits ein Basismodell besitzt und wissen will, wie es sich unter maskierter Diffusion verhält, spart mit diesen Beispielen den Aufbau einer eigenen Trainingsschleife. Der zweite starke Teil ist die Vergleichbarkeit: Wenn mehrere Verfahren über dieselbe Auswertung laufen, sind die Unterschiede zwischen den Verfahren besser sichtbar als die Unterschiede zwischen den Skripten. Wer dagegen nur ein fertiges Modell für eine Anwendung braucht, für den ist der Umweg über Konvertierung, Training und eigene Evaluation nicht sinnvoll. Und wer Ergebnisse aus dem Paper exakt nachfahren will, sollte vorher prüfen, ob die Konfiguration im jeweiligen examples-Verzeichnis überhaupt dieselben Daten und Hyperparameter verwendet, denn der README schließt exakte Reproduktion ausdrücklich aus.

Redaktionelles Fazit

Wer Diffusionssprachmodelle auf eigener Hardware trainieren oder fremde Checkpoints unter einheitlichen Bedingungen vergleichen will, findet in dLLM die passende Struktur, sofern die genannten Trainings- und Auswertungsskripte im jeweiligen examples-Verzeichnis vorhanden sind. Wer einen produktionsreifen Inferenzserver oder eine exakte Reproduktion der offiziellen LLaDA- und Dream-Gewichte sucht, ist hier falsch adressiert, denn der Hinweis auf den Bildungszweck und die fehlende Anspruchsgleichheit steht im Repository selbst. Vor dem ersten Lauf ist zu prüfen, ob die Beispiele unter examples/a2d und examples/editflow tatsächlich die benötigten Konvertierungsschritte für das eigene Basismodell abdecken.

Offizielle Quellen

  1. Issues
  2. License: Apache-2.0
  3. Project website
  4. README
  5. ZHZisZZ/dllm on GitHub
Community-Notizen

Community-Notizen