Modèle / jeu de données
ZHZisZZ/dllm avatar
ZHZisZZ/dllm

dLLM : une bibliothèque unique pour entraîner et évaluer les modèles de langage par diffusion

dLLM: Simple Diffusion Language Modeling

2 688 étoiles280 forksPythonApache-2.0

En bref

De quoi s’agit-il ?
dLLM rassemble sous une même interface l'entraînement et l'évaluation des modèles de langage à diffusion discrète, avec des recettes prêtes à l'emploi pour LLaDA, Dream et des encodeurs BERT convertis. Le projet vise la reproductibilité, pas la performance brute.
À qui s’adresse-t-il ?
dLLM convient aux équipes qui veulent expérimenter la diffusion discrète sans réécrire une pile d'entraînement, et à celles qui cherchent une référence lisible pour reproduire MDLM ou BD3LM. Il ne convient pas à qui attend un modèle conversationnel prêt pour la production : les recettes fournies supposent de choisir soi-même un checkpoint, une tâche et un budget de calcul.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 60 jours.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le vide que dLLM cherche à combler

Les modèles de langage par diffusion discrète circulent surtout sous forme d'articles et de dépôts isolés. Chaque travail publie son propre script d'entraînement, sa propre boucle d'échantillonnage et sa propre manière de mesurer les résultats. Comparer deux algorithmes devient alors un travail de reconstruction avant même de pouvoir lancer une expérience. dLLM part de ce constat : le README annonce une bibliothèque qui unifie l'entraînement et l'évaluation, avec l'objectif affiché d'apporter de la reproductibilité à toute la chaîne. Le public visé est précis. Il s'agit de chercheurs et d'ingénieurs qui veulent tester une variante de diffusion masquée, convertir un modèle autorégressif existant, ou reproduire un résultat publié, sans réimplémenter l'infrastructure à chaque fois. Le dépôt ne se présente pas comme un produit : le README contient un commentaire HTML désactivé qui décrit le dépôt comme destiné à l'apprentissage et renonce explicitement à une reproduction exacte des modèles officiels. Ce positionnement est honnête, et il faut le prendre au sérieux au moment de choisir ses outils.

Une architecture en deux couches empruntées

dLLM ne réinvente ni l'entraînement ni l'évaluation. La couche d'entraînement s'appuie sur le Trainer de transformers, avec le support de LoRA via peft, de DeepSpeed et de FSDP pour la parallélisation. La couche d'évaluation s'appuie sur lm-evaluation-harness, ce qui a une conséquence concrète : les détails d'inférence sont abstraits, et la personnalisation passe par les points d'extension de cette bibliothèque plutôt que par du code propre à dLLM. Ce choix a un mérite et un coût. Le mérite est que les recettes restent courtes et que les utilisateurs retrouvent des outils qu'ils connaissent déjà. Le coût est que dLLM hérite des limites de ses dépendances : une rupture d'API dans transformers ou dans lm-evaluation-harness se répercute directement sur les exemples du dépôt. Sur le plan des algorithmes, le README cite MDLM pour la diffusion masquée, BD3LM pour la diffusion par blocs, Edit Flows pour les opérations d'édition, et diffu-GRPO pour l'apprentissage par renforcement. Ces méthodes ne partagent pas la même procédure de corruption ni le même objectif d'entraînement. La valeur de dLLM tient justement à ce qu'elles cohabitent derrière une interface commune, ce qui rend leurs différences observables.

Ce que contiennent réellement les exemples

Le dépôt s'organise autour d'un dossier examples, et chaque sous-dossier correspond à un cas d'usage distinct. examples/llada couvre le pré-entraînement, le fine-tuning et l'évaluation de LLaDA et LLaDA-MoE. examples/dream fait de même pour Dream. examples/a2d s'attaque à la conversion de n'importe quel modèle autorégressif (Qwen, LLaMA, GPT-2 sont cités) vers la génération par diffusion masquée ou par blocs. examples/bert transforme un encodeur BERT, RoBERTa ou ModernBERT en chatbot léger. examples/editflow sert de référence pédagogique pour les opérations d'insertion, de suppression et de substitution. examples/fastdllm ajoute l'inférence accélérée par cache et décodage à seuil de confiance. examples/rl porte l'entraînement GRPO sur cinq tâches de raisonnement (GSM8K, MATH, Countdown, Sudoku, Code). La présence de ces dossiers ne garantit pas que chacun soit également mûr. Le README signale lui-même que la liste des fonctionnalités se termine par la mention « More upcoming », et l'historique des nouveautés montre des ajouts étalés entre novembre 2025 et avril 2026. Les recettes les plus anciennes ont eu plus de temps pour être éprouvées que les plus récentes. C'est une distinction à garder en tête avant de bâtir un projet dessus.

Mise en route : l'environnement imposé

L'installation documentée passe par conda. Le README donne ces commandes : création d'un environnement nommé dllm en Python 3.10, installation de CUDA 12.4 depuis le canal nvidia, puis installation de PyTorch dans des versions figées, avec torch==2.6.0, torchvision==0.21.0 et torchaudio==2.6.0, tirées depuis l'index officiel de PyTorch. Le README précise que d'autres versions de PyTorch et de CUDA devraient aussi fonctionner, mais la seule combinaison explicitement testée par les auteurs est celle-ci. Cette précision compte : les versions figées sont un point de départ sûr, pas une contrainte absolue, et c'est à vous de valider une autre combinaison. Le reste du README, tronqué dans le matériel fourni, ne permet pas de confirmer les commandes d'entraînement, les clés de configuration ou les scripts d'évaluation exacts. Les sections Training, Inference et Evaluation existent dans la table des matières, et chaque dossier d'exemple possède son propre README, mais je ne peux pas citer ici des noms de fichiers ou de paramètres que je n'ai pas vus. Toute affirmation sur la configuration précise d'un entraînement LLaDA serait une invention.

Les limites que le dépôt admet lui-même

La plus importante figure dans un commentaire HTML du README, donc invisible à la lecture rapide : le dépôt est présenté comme principalement éducatif et renonce à reproduire exactement les modèles officiels, ce qui est qualifié d'impossible. Autrement dit, si vous cherchez à retrouver les scores publiés par les auteurs de LLaDA ou de Dream, dLLM ne s'engage pas à vous y mener. Il fournit un chemin reproductible vers une implémentation, pas vers un chiffre identique. Deuxième limite, structurelle : la dépendance à transformers et à lm-evaluation-harness signifie que la stabilité de dLLM suit celle de ses dépendances, et qu'une montée de version peut casser des exemples sans qu'aucun code du dépôt n'ait changé. Troisième limite, sur le périmètre : les exemples couvrent l'inférence de LLaDA2.0 et LLaDA2.1, mais pas leur entraînement, alors que LLaDA et Dream bénéficient des trois étapes. Le support n'est donc pas homogène d'un modèle à l'autre. Enfin, le matériel fourni ne contient aucune information sur les ressources GPU nécessaires, sur les volumes de données utilisés, ni sur les temps d'entraînement. Ces chiffres manquent, et leur absence empêche d'évaluer le coût réel d'une reproduction.

Face à un dépôt de recherche monolithique

L'alternative la plus directe n'est pas un autre framework mais le dépôt officiel d'un modèle donné, par exemple celui publié avec LLaDA. La différence d'approche est nette. Un dépôt officiel optimise pour un modèle précis : il contient les scripts exacts qui ont produit les résultats de l'article, avec les hyperparamètres correspondants. dLLM optimise pour la pluralité : une seule interface pour plusieurs algorithmes et plusieurs modèles, au prix d'une fidélité moindre à chacun. Si votre objectif est de reproduire un chiffre publié, le dépôt officiel est le bon point de départ. Si votre objectif est de comparer MDLM, BD3LM et Edit Flows dans des conditions identiques, ou de convertir un modèle autorégressif que vous possédez déjà, un dépôt mono-modèle ne vous aidera pas, et dLLM devient pertinent. Le compromis est explicite : dLLM échange la fidélité à un modèle contre la comparabilité entre plusieurs.

Licence et coût de maintenance

dLLM est distribué sous Apache-2.0. Cette licence est permissive : elle autorise l'usage commercial, la modification et la redistribution, à condition de conserver les mentions de copyright et le texte de la licence, et elle inclut une clause de brevets. Elle ne couvre que le code du dépôt. Les poids hébergés sur Hugging Face sous dllm-hub, ainsi que les modèles sous-jacents comme LLaDA, Dream ou Qwen, relèvent de leurs propres licences, qu'il faut vérifier séparément avant tout usage. Sur la maintenance, le dernier push observé date de juillet 2026 et l'historique des nouveautés montre un rythme d'ajout soutenu sur plusieurs mois. Ce rythme a un revers : un dépôt qui ajoute régulièrement des exemples et des algorithmes voit sa surface de test s'étendre plus vite que sa couverture. La mention « More upcoming » en fin de liste de fonctionnalités indique que d'autres dossiers sont attendus. Pour un utilisateur, cela signifie que la documentation d'un exemple peut décrire un état antérieur à celui du code. La vérification la plus utile avant d'adopter dLLM n'est donc pas de lire le README racine, mais d'ouvrir le README du dossier examples qui vous concerne et de comparer ses commandes aux fichiers réellement présents.

Conclusion éditoriale

dLLM convient aux équipes qui veulent expérimenter la diffusion discrète sans réécrire une pile d'entraînement, et à celles qui cherchent une référence lisible pour reproduire MDLM ou BD3LM. Il ne convient pas à qui attend un modèle conversationnel prêt pour la production : les recettes fournies supposent de choisir soi-même un checkpoint, une tâche et un budget de calcul. Avant de vous engager, vérifiez la version de PyTorch exigée par le README (torch==2.6.0 avec CUDA 12.4), l'état réel du dépôt d'exemples que vous comptez utiliser, et si les poids annoncés sur Hugging Face couvrent votre langue cible.

Sources officielles

  1. Issues
  2. License: Apache-2.0
  3. Project website
  4. README
  5. ZHZisZZ/dllm on GitHub
Notes de la communauté

Notes de la communauté