模型 / 数据集
ZHZisZZ/dllm avatar
ZHZisZZ/dllm

dLLM:一个把扩散语言模型训练与评测收拢到一起的 Python 库

dLLM: Simple Diffusion Language Modeling

2,688 个 Star280 个 ForkPythonApache-2.0

秒懂

它是什么?
dLLM 面向想训练或评估扩散语言模型的研究者与工程师,它把 Hugging Face Trainer、lm-evaluation-harness 和多篇论文的算法实现整合到统一接口下。本文基于仓库文档与目录结构,说明它解决了什么问题、怎么跑起来,以及哪些场景不该选它。
适合谁用?
dLLM 适合两类人:一是想复现或对比 LLaDA、Dream、BERT-Chat 等扩散语言模型的研究者,二是想把现有自回归模型或 BERT 编码器改造成扩散模型、但不想从零写训练循环的工程师。它不适合追求生产级部署或需要严格复现官方实现的人,仓库注释也承认无法做到 100% 精确复现。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 60 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是扩散语言模型的碎片化问题

扩散语言模型(DLLM)不是单点技术,而是掩码扩散、块扩散、编辑流等一系列方法的统称。每个新模型往往附带一套独立的训练代码、推理脚本和评测流程,研究者要对比不同方法时,得反复适配接口。dLLM 把训练建立在 Hugging Face Trainer 之上,把评测建立在 lm-evaluation-harness 之上,试图提供一个统一入口。它的目标用户很明确:不是做推理服务部署的工程师,而是需要训练、微调、评估开源权重模型的研究者或算法工程师。仓库的 examples 目录按模型组织,包括 LLaDA、LLaDA-MoE、Dream、BERT-Chat 等,每个目录下都有对应的训练或推理说明。这种设计把散落在各论文代码库里的实现收拢到一个命名空间下,降低切换成本。

训练、推理与评测的分层机制

从 README 的结构看,dLLM 的核心不是发明新算法,而是把已有算法接到标准工具上。训练层基于 transformers 的 Trainer,这意味着数据加载、梯度累积、检查点保存等逻辑都沿用 Hugging Face 的约定,使用者不必重新学习一套 API。训练算法方面,它实现了 MDLM 的掩码扩散、BD3LM 的块扩散和 Edit Flows 的编辑操作,这些是论文级别的算法,不是简单的封装。推理和评测层则通过 lm-evaluation-harness 统一,评测时不需要为每个模型写单独的生成循环。这种分层有个直接后果:模型的差异被抽象在模型类和采样逻辑里,而上层的数据流和评测逻辑保持一致。文档没有给出具体的数据流图,但从目录结构和依赖关系可以推断,训练脚本会先定义模型配置,再调用 Trainer,评测则通过 lm-evaluation-harness 的接口加载模型和任务。

从零跑通一个示例的实操路径

安装步骤在 README 的 Setup 部分写得很具体。先用 conda 创建 Python 3.10 环境,命令是 conda create -n dllm python=3.10 -y,然后激活。接着安装 CUDA 12.4 和对应版本的 PyTorch,给出的命令是 conda install cuda=12.4 -c nvidia,再通过 pip 安装 torch==2.6.0、torchvision==0.21.0 和 torchaudio==2.6.0。注意 README 的安装命令在截断处结束,后半部分没有显示,实际执行时可能需要补全 --index-url 参数。安装完成后,具体训练和推理步骤分散在 examples 目录下,例如 examples/llada 有预训练和微调说明,examples/bert 有把 BERT 转成对话模型的配方。文档没有提供一键运行的脚本,用户需要根据目标模型进入对应目录阅读说明。对于只想做推理的人,examples/llada2 和 examples/llada21 只包含推理代码,这降低了门槛。

Fast-dLLM 与 diffu-GRPO 的扩展方向

dLLM 不止覆盖基础训练,还接入了两个外部项目来扩展能力。Fast-dLLM 来自 NVlabs,提供缓存和置信度阈值解码,用于加速 LLaDA 和 Dream 的推理与评测,相关指令在 examples/fastdllm 目录。另一个是 diffu-GRPO,一个针对掩码扩散模型的强化学习训练方法,已经在 LLaDA 和 Tiny-A2D 上验证过,覆盖 GSM8K、MATH、Countdown、Sudoku 和 Code 五个推理任务,训练说明在 examples/rl 目录。这两个扩展表明 dLLM 的定位是研究工具链,而不是静态的模型库。但要注意,这些扩展是外部项目,它们有自己的维护周期和许可证,dLLM 仓库本身采用 Apache-2.0,但 Fast-dLLM 和 diffu-GRPO 不一定相同。集成带来的好处是能在一个环境里跑通从预训练到强化学习的完整流程,代价是依赖链变长,排查问题时需要跨仓库定位。

Tiny-A2D 与 BERT-Chat:把自回归模型改成扩散模型

dLLM 的一个特色是支持模型转换。Tiny-A2D 是一组 0.5B 和 0.6B 的小型扩散模型,从自回归模型转换而来,文档声称可以用开放配方把任何自回归模型,比如 Qwen、LLaMA、GPT-2,转成扩散模型。BERT-Chat 则面向编码器模型,把 BERT、RoBERTa、ModernBERT 这类编码器微调成能对话的扩散模型。这两个方向的共同点是利用了现有预训练权重,而不是从头训练。对于算力有限的个人研究者,这比从头预训练一个扩散模型可行得多。但文档没有说明转换后的模型在质量上与原自回归模型的差距,也没有提供具体的评估数字。另一个隐含限制是,转换配方针对的是掩码扩散和块扩散,不是所有扩散变体都支持,所以如果你的目标算法不在列表里,就不能直接套用。

真实限制:复现精度与覆盖范围

README 的注释部分有一句明确的提醒,仓库主要用于教育目的,不追求对官方模型的 100% 精确复现,因为那是不可能的。这句话被注释掉了,但它在仓库历史中存在,也符合开源研究代码的普遍现实。这意味着如果你需要严格复现论文里的实验结果,dLLM 可能不是可靠来源,应该回到各模型的官方实现。另一个限制是覆盖范围不均衡:LLaDA 系列有预训练、微调和推理,但 LLaDA2.1 只有推理示例,没有训练代码。Edit Flows 被标注为教育参考,说明它的实现可能没有经过大规模验证。此外,README 没有提供任何基准测试结果或性能数据,所以无法从文档判断这些实现在速度或显存占用上是否高效。如果你要在生产环境使用,这些不确定性都是风险点。

替代方案与选择依据

与 dLLM 最接近的替代方案是直接使用各模型的官方代码库,例如 LLaDA 的官方仓库或 Dream 的官方实现。这些库通常针对单一模型优化,能提供更精确的复现和更详细的配置。差异在于,官方库往往只覆盖一个模型,而 dLLM 试图统一多个模型和算法。另一个替代方案是 Hugging Face transformers 本身,它已经支持一些扩散模型,但原生支持范围有限,且不包含像 Edit Flows 这样的新算法。选择时,你的核心需求决定了方向:如果只研究一个模型,官方库更直接;如果要在多个模型之间做对比实验,dLLM 的统一接口能节省适配时间。还有一个实际考量是许可证,dLLM 使用 Apache-2.0,这对商业使用相对友好,但如果你依赖 Fast-dLLM 或 diffu-GRPO,需要单独检查它们的许可证。

维护状态与升级成本

仓库最后推送时间是 2026 年 7 月,说明项目仍在活跃维护,没有归档。但 README 中没有列出任何正式版本发布,也没有 release 记录,这意味着项目可能处于持续开发状态,API 可能随时变化。升级成本方面,由于依赖 transformers 和 lm-evaluation-harness,这两个上游库的版本更新可能会引入破坏性变更,你需要关注它们的发布说明。dLLM 本身没有提供版本锁定文件,安装时使用最新版 PyTorch 2.6.0,但文档没有说明是否兼容更新的 PyTorch 版本。许可证是 Apache-2.0,允许修改和再分发,但如果你修改了代码并对外发布,需要保留版权声明。对于研究用途,这些成本可以接受,但如果你计划把 dLLM 集成到长期维护的项目中,需要做好跟踪上游变更的准备。

编辑结论

dLLM 适合两类人:一是想复现或对比 LLaDA、Dream、BERT-Chat 等扩散语言模型的研究者,二是想把现有自回归模型或 BERT 编码器改造成扩散模型、但不想从零写训练循环的工程师。它不适合追求生产级部署或需要严格复现官方实现的人,仓库注释也承认无法做到 100% 精确复现。采用前先做两件事:确认你需要的模型和算法是否在 examples 目录里有对应配方,因为不同模型的成熟度差异很大,例如 LLaDA2.1 目前只有推理示例,没有训练脚本;再检查 Fast-dLLM 和 diffu-GRPO 等外部依赖的许可证与维护状态,它们不在本仓库的 Apache-2.0 覆盖范围内。若你的任务是快速验证一个小型扩散语言模型的想法,dLLM 的 Tiny-A2D 和 BERT-Chat 配方可能是最直接的起点;若你需要的是经过大规模生产验证的文本生成框架,应该转向 transformers 原生支持的自回归模型。

官方来源

  1. Issues
  2. License: Apache-2.0
  3. Project website
  4. README
  5. ZHZisZZ/dllm on GitHub
社区笔记

社区笔记