[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-ZHZisZZ--dllm":3,"tool-ZHZisZZ--dllm":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":83,"owner_url":83,"languages":84,"stars":93,"forks":94,"last_commit_at":95,"license":96,"difficulty_score":10,"env_os":97,"env_gpu":98,"env_ram":99,"env_deps":100,"category_tags":110,"github_topics":111,"view_count":23,"oss_zip_url":115,"oss_zip_packed_at":115,"status":16,"created_at":116,"updated_at":117,"faqs":118,"releases":148},2897,"ZHZisZZ\u002Fdllm","dllm","dLLM: Simple Diffusion Language Modeling","dLLM 是一个专注于简化扩散语言模型（Diffusion Language Models）开发与评估的开源库。它致力于解决当前扩散模型领域训练流程复杂、复现困难以及评估标准不统一的痛点，为整个研发链路提供了透明且可复现的解决方案。\n\n该工具主要面向 AI 研究人员和开发者，特别是那些希望探索非自回归生成范式、复现前沿论文或构建自定义扩散模型的团队。dLLM 基于 Hugging Face `transformers` 构建了可扩展的训练管道，原生支持 LoRA、DeepSpeed 和 FSDP 等高效训练技术，大幅降低了大规模模型训练的门槛。同时，它集成了统一的评估框架，屏蔽了复杂的推理细节，让定制化测试变得简单直观。\n\n在技术亮点方面，dLLM 不仅提供了 LLaDA、Dream 等开源权重模型的完整训练与微调食谱，还实现了掩码扩散（MDLM）、块扩散（BD3LM）等多种先进算法。近期更新更引入了 Fast-dLLM 加速推理技术，并支持将任意自回归模型（如 Qwen、LLaMA）或 BERT 编码器转化为扩散模型，为社区提供了极具价值的参考实现与实验基线。","\u003Ch1 align=\"center\">dLLM\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\nSimple Diffusion Language Modeling\n\u003C\u002Fp>\n\n\u003C!-- \u003Cdiv align=\"center\">\n\n[![Report](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-B31B1B?style=for-the-badge&logo=arxiv&logoColor=white)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.22661)\n[![Models](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHugging%20Face-yellow?style=for-the-badge&logo=huggingface&logoColor=white)](https:\u002F\u002Fhuggingface.co\u002Fdllm-hub)\n\n\u003C\u002Fdiv> -->\n\n\u003Cp align=\"center\">\n    📃 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2602.22661\" target=\"_blank\">Report\u003C\u002Fa> | 🤗 \u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fdllm-hub\" target=\"_blank\">Models\u003C\u002Fa>\n\u003C\u002Fp>\n\n\n\u003Cp align=\"center\">\n\u003Cimg\n  src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZHZisZZ_dllm_readme_acf9f18876c7.gif\"\n  alt=\"dLLM logo\">\n\u003C\u002Fp>\n\n## Overview\n**dLLM** is a library that unifies the training and evaluation of **diffusion language models**, bringing transparency and reproducibility to the entire development pipeline:\n\n- dLLM provides scalable training pipelines (based on [`transformers`](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers\u002Fblob\u002Fmain\u002Fsrc\u002Ftransformers) [Trainer](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers\u002Fblob\u002Fmain\u002Fsrc\u002Ftransformers\u002Ftrainer.py)), with support for [LoRA](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Fpeft), [DeepSpeed](https:\u002F\u002Fgithub.com\u002Fdeepspeedai\u002FDeepSpeed), [FSDP](https:\u002F\u002Fpytorch.org\u002Fblog\u002Fintroducing-pytorch-fully-sharded-data-parallel-api\u002F) and beyond.\n\n- dLLM provides unified evaluation pipelines (based on [`lm-evaluation-harness`](https:\u002F\u002Fgithub.com\u002FEleutherAI\u002Flm-evaluation-harness)) that abstracts away inference details and making customization simple.\n\n- Built on these components, dLLM provides the minimal **training \u002F inference \u002F evaluation** recipes for open-weight models (e.g., [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) and [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487)), and implementations of training algorithms (e.g., [MDLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.07524) (masked diffusion), [BD3LM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2503.09573) (block diffusion), [Edit Flows](https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.09018) and so on).\n\n\u003C!-- > [!NOTE]\n> This repository is primarily for educational purposes and does not aim for 100% exact reproduction of official models (which is impossible). We hope it serves as a helpful reference for the community — contributions and improvements are always welcome! -->\n\n\n## News\n\n\u003C!-- **[2026\u002F02]** 📄 Checkout our **[`technical report`](assets\u002FdLLM.pdf)**! -->\n\n**[2026\u002F02] ⚡[`Fast-dLLM`](https:\u002F\u002Fgithub.com\u002FNVlabs\u002FFast-dLLM)**: We support accelerated inference and evaluation of  [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) and [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487) with [Fast-dLLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2505.22618) (cache, confidence-threshold decoding). See [`examples\u002Ffastdllm`](\u002Fexamples\u002Ffastdllm) for inference \u002F evaluation instructions.\n\n**[2025\u002F12] 🤗[`Tiny-A2D`](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002Fdllm-hub\u002Ftiny-a2d)**: We released a collection of **SOTA** small (0.5B\u002F0.6B) diffusion models adapted from AR models, with fully open recipes for converting **ANY** AR model (e.g., Qwen, LLaMA, and GPT-2) into a diffusion model. See [`examples\u002Fa2d`](\u002Fexamples\u002Fa2d) for training \u002F inference \u002F evaluation instructions.\n\n**[2025\u002F11] 🤗[`BERT-Chat`](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002Fdllm-hub\u002Fbert-chat)**: We released a collection of BERTs finetuned to chat with diffusion, with open recipes for turning **ANY** BERT encoder (e.g., BERT, RoBERTa, ModernBERT) into a diffusion model. See [`examples\u002Fbert`](\u002Fexamples\u002Fbert) for training \u002F inference \u002F evaluation instructions.\n\n\n## Table of Contents\n- [Features](#features)\n- [Setup](#setup)\n- [Files](#files)\n- [Training](#training)\n- [Inference](#inference)\n- [Evaluation](#evaluation)\n- [Citation](#citation)\n\n\n## Features\n- [`examples\u002Fllada`](\u002Fexamples\u002Fllada): Pretraining, finetuning and evaluating [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) \u002F [LLaDA-MoE](https:\u002F\u002Farxiv.org\u002Fabs\u002F2509.24389).\n- [`examples\u002Fdream`](\u002Fexamples\u002Fdream): Pretraining, finetuning and evaluating [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487).\n- [`examples\u002Fa2d`](\u002Fexamples\u002Fa2d): Finetuning any autoregressive model to generate text with [masked diffusion](https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.07524) \u002F [block diffusion](https:\u002F\u002Farxiv.org\u002Fabs\u002F2503.09573).\n- [`examples\u002Fbert`](\u002Fexamples\u002Fbert): Finetuning any [BERT](https:\u002F\u002Farxiv.org\u002Fabs\u002F1810.04805) to be lightweight Chatbots.\n    \u003C!-- \u003Cdetails>\n    \u003Csummary>🎬 Click to show BERT-Chat Demo\u003C\u002Fsummary>\n\n    \u003Cp align=\"center\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZHZisZZ_dllm_readme_540066f10cd4.gif\" alt=\"chat\" width=\"80%\">\n    \u003C\u002Fp>\n    \u003Cp align=\"center\">\n    \u003Cem>\n        Chat with \u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fdllm-hub\u002FModernBERT-large-chat-v0.1\">\u003Ccode>ModernBERT-large-chat-v0.1\u003C\u002Fcode>\u003C\u002Fa>. See \u003Ca href=\"\u002Fexamples\u002Fbert\u002FREADME.md#inference\">Inference\u003C\u002Fa> for details.\n    \u003C\u002Fem>\n    \u003C\u002Fp>\n    \u003C\u002Fdetails> -->\n- [`examples\u002Feditflow`](\u002Fexamples\u002Feditflow): Educational reference for training [Edit Flows](https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.09018) models, demonstrating how to extend existing DLLMs (e.g., LLaDA, Dream, BERT-Chat) with *edit operations*—insertion, deletion, and substitution—and how to pretrain or finetune Edit Flows models from scratch on public data.\n   \u003C!-- \u003Cdetails>\n   \u003Csummary>🎬 Click to show EditFlow Demo\u003C\u002Fsummary>\n\n   \u003Cp align=\"center\">\n     \u003Cimg src=\"\u002Fexamples\u002Feditflow\u002Fassets\u002Fall.gif\" alt=\"EditFlow demo\" width=\"100%\">\n   \u003C\u002Fp>\n   \u003Cp align=\"center\">\u003Cem>EditFlow performing insertion (blue), substitution from mask tokens (black), substitution from non-mask tokens (red), and deletion (strikethrough → removed) during sampling.\u003C\u002Fem>\u003C\u002Fp>\n\n   \u003C\u002Fdetails> -->\n- [`examples\u002Ffastdllm`](\u002Fexamples\u002Ffastdllm): Inferencing and evaluating [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) and [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487) with [Fast-dLLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2505.22618) (cache, confidence-threshold decoding, and beyond).\n- More upcoming.\n\n\n## Setup\n### Installation\n```bash\n# create and activate conda environment\nconda create -n dllm python=3.10 -y\nconda activate dllm\n\n# install pytorch with CUDA 12.4 (other pytorch\u002Fcuda versions should also work)\nconda install cuda=12.4 -c nvidia\npip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 \\\n    --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu124\n\n# install dllm package\npip install -e .\n```\n### (optional) Evaluation setup\n\n```bash\n# initialize `lm-evaluation-harness` submodule\ngit submodule update --init --recursive\n\n# install submodule in editable mode with IFEval & Math dependencies\npip install -e \"lm-evaluation-harness[ifeval,math]\"\n```\n\n### (optional) Slurm setup\nFor [Slurm](https:\u002F\u002Fslurm.schedmd.com\u002F) users, update [`scripts\u002Ftrain.slurm.sh`](\u002Fscripts\u002Ftrain.slurm.sh) for your cluster:\n```diff\n- #SBATCH --partition=mllm_safety # Note: adjust this for your cluster\n- #SBATCH --quotatype=spot        # Note: adjust this for your cluster\n+ #SBATCH --partition=YOUR_PARTITION\n+ #SBATCH --quotatype=YOUR_QUOTATYPE\n```\nNext, create a directory for your job logs:\n```shell\nmkdir .logs\n```\nThis folder will store the log files generated by your sbatch jobs.\n\n## Files\n```\n# modules for training \u002F sampling\ndllm\n├── core                   # Core reusable modules shared across `dllm\u002Fpipelines` \n│   ├── samplers\n│   ├── schedulers\n│   └── trainers\n├── data\n├── pipelines              # Application-specific training & inference pipelines\n|   ├── bert\n│   ├── dream\n│   ├── editflow\n│   ├── fastdllm\n│   └── llada\n│       ├── models         # Model architecture and configs \n│       ├── sampler.py     # Inference module\n│       ├── trainer.py     # Training module\n│       └── eval.py        # Evaluation module\n├── tools\n└── utils\n\n# entry points for training \u002F sampling\nexamples\n├── bert\n├── dream\n├── editflow\n├── fastdllm\n└── llada\n    ├── chat.py            # Interactive inference example\n    ├── sample.py          # Inference example\n    ├── pt.py              # Pretraining example\n    ├── README.md          # Documentation (you are here)\n    ├── sft.py             # Supervised finetuning example\n    └── eval.sh            # Evaluation script\n```\n\n## Training\n\nA typical training entry script (for example, [`examples\u002Fllada\u002Fsft.py`](\u002Fexamples\u002Fllada\u002Fsft.py)) looks like this:\n```python\nimport transformers\n\nimport dllm\n\nmodel_args, data_args, training_args = parser.parse_args_into_dataclasses()\n# ----- Model ------------------------------------------------------------------\nmodel = dllm.utils.get_model(model_args=model_args)\n# ----- Tokenizer --------------------------------------------------------------\ntokenizer = dllm.utils.get_tokenizer(model_args=model_args)\n# ----- Dataset ----------------------------------------------------------------\ndataset = \"...\"\n\n# ----- Training --------------------------------------------------------------\ntrainer = dllm.core.trainers.MDLMTrainer(\n    model=model,\n    tokenizer=tokenizer,\n    train_dataset=dataset[\"train\"],\n    eval_dataset=dataset[\"test\"],\n    args=training_args,\n    data_collator=transformers.DataCollatorForSeq2Seq(\n        tokenizer,\n        return_tensors=\"pt\",\n        padding=True,\n        label_pad_token_id=tokenizer.pad_token_id, \n    ),\n)\ntrainer.train()\n```\n\nYou can launch training job locally with `accelerate`, or submit it to a [Slurm](https:\u002F\u002Fslurm.schedmd.com\u002F) cluster using `sbatch`.\n```shell\n# Run locally (ZeRO-2 on 8 GPUs with 4bit quantization and LoRA)\naccelerate launch \\\n    --config_file scripts\u002Faccelerate_configs\u002Fzero2.yaml \\\n    examples\u002Fllada\u002Fsft.py \\\n    --num_train_epochs 4 \\\n    --load_in_4bit True --lora True\n```\n```shell\n# Submit to a Slurm cluster (FSDP on 1 node, 8 GPUs)\nsbatch --gres=gpu:8 scripts\u002Ftrain.slurm.sh \\\n    --accelerate_config \"fsdp\" \\\n    --script_path \"examples\u002Fllada\u002Fsft.py\" \\\n    --num_train_epochs 4\n\n# Submit to a Slurm cluster (FSDP on 2 nodes, 16 GPUs)\nsbatch --nodes=2 --gres=gpu:8 scripts\u002Ftrain.slurm.sh \\\n    --accelerate_config \"fsdp\" \\\n    --script_path \"examples\u002Fllada\u002Fsft.py\" \\\n    --num_train_epochs 4\n```\nSee [Features](#features) for specific training recipes.\n\n\n\u003C!-- Here are some useful tips for training: -->\n#### Useful tips for training:\n- Use a subset of data:\n`--dataset_args \"allenai\u002Ftulu-3-sft-mixture[train:10000,test:1000]\"`\n- Concatenate datasets:\n`--dataset_args \"allenai\u002Ftulu-3-sft-mixture+HuggingFaceTB\u002Fsmoltalk\"`\n- Train with LoRA and 4bit quantization:\n`--load_in_4bit True --lora True`\n- Train with different distributed training methods:\n`--accelerate_config \"ddp,zero-{1,2,3},fsdp\"`\n- Load pretraining dataset in streaming mode:\n`--streaming True`\n- Preprocess SFT dataset before training (e.g., LLaDA):\n  \u003C!-- ```shell\n  # Preprocess SFT data\n  python dllm\u002Ftools\u002Fpreprocess_sft_dataset.py \\\n      --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" \\\n      --sft_map_fn_path \"dllm.utils.default_sft_map_fn\" \\\n      --dataset_args \"allenai\u002Ftulu-3-sft-mixture\" \\\n      --output_dir \".data\u002Fsft\u002Fllada\u002Ftulu-3-sft-mixture\" \\\n      --num_proc 64\n  \n  # SFT with preprocessed data\n  accelerate launch \\\n      --config_file scripts\u002Faccelerate_configs\u002Ffsdp.yaml \\\n      examples\u002Fllada\u002Fsft.py \\\n      --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" \\\n      --dataset_args \".data\u002Fsft\u002Fllada\u002Ftulu-3-sft-mixture\" \\\n      --load_preprocessed_data True \\\n      ...\n  ``` -->\n\n  ```diff\n  # Preprocess SFT data\n  + python dllm\u002Ftools\u002Fpreprocess_sft_dataset.py \\\n  +     --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" \\\n  +     --sft_map_fn_path \"dllm.utils.default_sft_map_fn\" \\\n  +     --dataset_args \"allenai\u002Ftulu-3-sft-mixture\" \\\n  +     --output_dir \".data\u002Fsft\u002Fllada\u002Ftulu-3-sft-mixture\" \\\n  +     --num_proc 64\n  \n  # SFT with preprocessed data\n  accelerate launch \\\n      --config_file scripts\u002Faccelerate_configs\u002Ffsdp.yaml \\\n      examples\u002Fllada\u002Fsft.py \\\n      --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" \\\n  -   --dataset_args \"allenai\u002Ftulu-3-sft-mixture\" \\\n  +   --dataset_args \".data\u002Fsft\u002Fllada\u002Ftulu-3-sft-mixture\" \\\n  +   --load_preprocessed_data True \\\n      ...\n  ```\n\n## Inference\n\nWe provide unified [samplers](\u002Fdllm\u002Fcore\u002Fsamplers) that abstracts away inference details. \nA typical inference entry script (for example, [`examples\u002Fllada\u002Fsample.py`](\u002Fexamples\u002Fllada\u002Fsample.py)) looks like this:\n```python\nimport dllm\n\nmodel = dllm.utils.get_model(model_args=script_args).eval()\ntokenizer = dllm.utils.get_tokenizer(model_args=script_args)\nsampler = dllm.core.samplers.MDLMSampler(model=model, tokenizer=tokenizer)\n\nmessages = [\n    [{\"role\": \"user\", \"content\": \"Lily runs 12 km\u002Fh for 4 hours. How far in 8 hours?\"}],\n    [{\"role\": \"user\", \"content\": \"Please write an educational python function.\"}],\n]\n\ninputs = tokenizer.apply_chat_template(\n    messages,\n    add_generation_prompt=True,\n    tokenize=True,\n)\n\noutputs = sampler.sample(inputs, return_dict=True)\nsequences = dllm.utils.sample_trim(tokenizer, outputs.sequences.tolist(), inputs)\n```\n\nYou can also try interactive chat script (for example, [`examples\u002Fllada\u002Fchat.py`](\u002Fexamples\u002Fllada\u002Fchat.py)) for visualized multi-turn dialogue:\n```shell\npython -u examples\u002Fllada\u002Fchat.py --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Instruct\"\n```\n\nYou can accelerate inference of [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) and [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487) with [Fast-dLLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2505.22618).\n```shell\npython examples\u002Ffastdllm\u002Fllada\u002Fsample.py --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Instruct\" --use_cache prefix --threshold 0.9\n```\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZHZisZZ_dllm_readme_226dde2f8f66.gif\" alt=\"chat\" width=\"80%\">\n\u003C\u002Fp>\n\u003C!-- \u003Cp align=\"center\">\u003Cem>EditFlow performing insertion (blue), substitution from mask tokens (black), substitution from non-mask tokens (red), and deletion (strikethrough → removed) during sampling.\u003C\u002Fem>\u003C\u002Fp> -->\n\n## Evaluation\n> Read [(optional) Evaluation setup](\u002FREADME.md#optional-evaluation-setup) before running evaluation. \n\nFor example, to evaluate [`LLaDA-8B-Instruct`](https:\u002F\u002Fhuggingface.co\u002FGSAI-ML\u002FLLaDA-8B-Instruct) on [`MMLU_Pro`](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FTIGER-Lab\u002FMMLU-Pro) using 4 GPUs, run:\n```shell\naccelerate launch --num_processes 4 \\\n    dllm\u002Fpipelines\u002Fllada\u002Feval.py \\\n    --tasks \"mmlu_pro\" \\\n    --model \"llada\" \\\n    --apply_chat_template \\\n    --num_fewshot 0 \\\n    --model_args \"pretrained=GSAI-ML\u002FLLaDA-8B-Instruct,is_check_greedy=False,mc_num=1,max_new_tokens=256,steps=256,block_size=256,cfg_scale=0.0\"\n```\n\nWe also provide scripts to automatically evaluate [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992), [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487), and [BERT-Chat](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002Fdllm-hub\u002Fbert-chat) on all benchmarks.\nFor example, you can run [`examples\u002Fllada\u002Feval.sh`](\u002Fexamples\u002Fllada\u002Feval.sh) directly using the following commands:\n```shell\nbash examples\u002Fllada\u002Feval.sh --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Instruct\" --instruct True\nbash examples\u002Fllada\u002Feval.sh --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" --instruct False\n```\n\nWe provide scripts to evaluate [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) and [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487) using [Fast-dLLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2505.22618):\n```shell\nbash examples\u002Ffastdllm\u002Fllada\u002Feval.sh --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Instruct\" --instruct True --num_gpu 1\nbash examples\u002Ffastdllm\u002Fdream\u002Feval.sh --model_name_or_path \"Dream-org\u002FDream-v0-Base-7B\" --instruct False --num_gpu 1\n```\n\n\n## Citation\n```\n@misc{zhou2026dllm,\n      title={dLLM: Simple Diffusion Language Modeling}, \n      author={Zhanhui Zhou and Lingjie Chen and Hanghang Tong and Dawn Song},\n      year={2026},\n      eprint={2602.22661},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.22661}, \n}\n```\n","\u003Ch1 align=\"center\">dLLM\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n简单扩散语言建模\n\u003C\u002Fp>\n\n\u003C!-- \u003Cdiv align=\"center\">\n\n[![报告](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-B31B1B?style=for-the-badge&logo=arxiv&logoColor=white)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.22661)\n[![模型](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHugging%20Face-yellow?style=for-the-badge&logo=huggingface&logoColor=white)](https:\u002F\u002Fhuggingface.co\u002Fdllm-hub)\n\n\u003C\u002Fdiv> -->\n\n\u003Cp align=\"center\">\n    📃 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2602.22661\" target=\"_blank\">报告\u003C\u002Fa> | 🤗 \u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fdllm-hub\" target=\"_blank\">模型\u003C\u002Fa>\n\u003C\u002Fp>\n\n\n\u003Cp align=\"center\">\n\u003Cimg\n  src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZHZisZZ_dllm_readme_acf9f18876c7.gif\"\n  alt=\"dLLM logo\">\n\u003C\u002Fp>\n\n## 概述\n**dLLM** 是一个统一 **扩散语言模型** 训练与评估的库，为整个开发流程带来透明性和可复现性：\n\n- dLLM 提供基于 [`transformers`](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers\u002Fblob\u002Fmain\u002Fsrc\u002Ftransformers) [Trainer](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers\u002Fblob\u002Fmain\u002Fsrc\u002Ftransformers\u002Ftrainer.py) 的可扩展训练流水线，支持 [LoRA](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Fpeft)、[DeepSpeed](https:\u002F\u002Fgithub.com\u002Fdeepspeedai\u002FDeepSpeed)、[FSDP](https:\u002F\u002Fpytorch.org\u002Fblog\u002Fintroducing-pytorch-fully-sharded-data-parallel-api\u002F) 等。\n\n- dLLM 基于 [`lm-evaluation-harness`](https:\u002F\u002Fgithub.com\u002FEleutherAI\u002Flm-evaluation-harness) 提供统一的评估流水线，抽象了推理细节，使自定义变得简单。\n\n- 在这些组件的基础上，dLLM 提供针对开放权重模型（如 [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) 和 [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487)）的最小化 **训练\u002F推理\u002F评估** 流程，并实现了多种训练算法（如 [MDLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.07524)（掩码扩散）、[BD3LM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2503.09573)（块扩散）、[Edit Flows](https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.09018) 等）。\n\n\u003C!-- > [!NOTE]\n> 本仓库主要用于教育目的，并不追求对官方模型的100%精确复现（这几乎是不可能的）。我们希望它能为社区提供有益的参考——欢迎各位贡献和改进！ -->\n\n\n## 新闻\n\n\u003C!-- **[2026\u002F02]** 📄 查看我们的 **[`技术报告`](assets\u002FdLLM.pdf)**！ -->\n\n**[2026\u002F02] ⚡[`Fast-dLLM`](https:\u002F\u002Fgithub.com\u002FNVlabs\u002FFast-dLLM)**：我们通过 [Fast-dLLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2505.22618)（缓存、置信度阈值解码等）支持加速推理和评估 [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) 和 [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487)。请参阅 [`examples\u002Ffastdllm`](\u002Fexamples\u002Ffastdllm) 获取推理\u002F评估说明。\n\n**[2025\u002F12] 🤗[`Tiny-A2D`](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002Fdllm-hub\u002Ftiny-a2d)**：我们发布了一系列基于 AR 模型改造而来的 **SOTA** 小型（0.5B\u002F0.6B）扩散模型，并提供了将 **任意** AR 模型（如 Qwen、LLaMA、GPT-2 等）转换为扩散模型的完整开源流程。请参阅 [`examples\u002Fa2d`](\u002Fexamples\u002Fa2d) 获取训练\u002F推理\u002F评估说明。\n\n**[2025\u002F11] 🤗[`BERT-Chat`](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002Fdllm-hub\u002Fbert-chat)**：我们发布了一系列微调后可用于对话的 BERT 模型，提供了将 **任意** BERT 编码器（如 BERT、RoBERTa、ModernBERT 等）转化为扩散模型的开源流程。请参阅 [`examples\u002Fbert`](\u002Fexamples\u002Fbert) 获取训练\u002F推理\u002F评估说明。\n\n\n## 目录\n- [功能](#features)\n- [设置](#setup)\n- [文件](#files)\n- [训练](#training)\n- [推理](#inference)\n- [评估](#evaluation)\n- [引用](#citation)\n\n\n## 功能\n- [`examples\u002Fllada`](\u002Fexamples\u002Fllada)：预训练、微调和评估 [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) \u002F [LLaDA-MoE](https:\u002F\u002Farxiv.org\u002Fabs\u002F2509.24389)。\n- [`examples\u002Fdream`](\u002Fexamples\u002Fdream)：预训练、微调和评估 [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487)。\n- [`examples\u002Fa2d`](\u002Fexamples\u002Fa2d)：将任意自回归模型微调为使用 [掩码扩散](https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.07524) \u002F [块扩散](https:\u002F\u002Farxiv.org\u002Fabs\u002F2503.09573) 生成文本。\n- [`examples\u002Fbert`](\u002Fexamples\u002Fbert)：将任意 [BERT](https:\u002F\u002Farxiv.org\u002Fabs\u002F1810.04805) 微调为轻量级聊天机器人。\n    \u003C!-- \u003Cdetails>\n    \u003Csummary>🎬 点击查看 BERT-Chat 演示\u003C\u002Fsummary>\n\n    \u003Cp align=\"center\">\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZHZisZZ_dllm_readme_540066f10cd4.gif\" alt=\"chat\" width=\"80%\">\n    \u003C\u002Fp>\n    \u003Cp align=\"center\">\n    \u003Cem>\n        使用 \u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fdllm-hub\u002FModernBERT-large-chat-v0.1\">\u003Ccode>ModernBERT-large-chat-v0.1\u003C\u002Fcode>\u003C\u002Fa> 进行对话。详情请参阅 \u003Ca href=\"\u002Fexamples\u002Fbert\u002FREADME.md#inference\">推理\u003C\u002Fa> 部分。\n    \u003C\u002Fem>\n    \u003C\u002Fp>\n    \u003C\u002Fdetails> -->\n- [`examples\u002Feditflow`](\u002Fexamples\u002Feditflow)：用于训练 [Edit Flows](https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.09018) 模型的教育参考，展示了如何在现有 DLLM（如 LLaDA、Dream、BERT-Chat）基础上添加 *编辑操作*——插入、删除和替换——以及如何从头开始在公开数据上预训练或微调 Edit Flow 模型。\n   \u003C!-- \u003Cdetails>\n   \u003Csummary>🎬 点击查看 EditFlow 演示\u003C\u002Fsummary>\n\n   \u003Cp align=\"center\">\n     \u003Cimg src=\"\u002Fexamples\u002Feditflow\u002Fassets\u002Fall.gif\" alt=\"EditFlow 演示\" width=\"100%\">\n   \u003C\u002Fp>\n   \u003Cp align=\"center\">\u003Cem>EditFlow 在采样过程中执行插入（蓝色）、从掩码标记替换（黑色）、从非掩码标记替换（红色）以及删除（划线→移除）。\u003C\u002Fem>\u003C\u002Fp>\n\n   \u003C\u002Fdetails> -->\n- [`examples\u002Ffastdllm`](\u002Fexamples\u002Ffastdllm)：使用 [Fast-dLLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2505.22618)（缓存、置信度阈值解码等）对 [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) 和 [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487) 进行推理和评估。\n- 更多内容即将推出。\n\n\n## 设置\n### 安装\n```bash\n# 创建并激活 conda 环境\nconda create -n dllm python=3.10 -y\nconda activate dllm\n\n# 安装带有 CUDA 12.4 的 PyTorch（其他版本的 PyTorch\u002FCUDA 也应适用）\nconda install cuda=12.4 -c nvidia\npip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 \\\n    --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu124\n\n# 安装 dllm 包\npip install -e .\n```\n### （可选）评估设置\n\n```bash\n# 初始化 `lm-evaluation-harness` 子模块\ngit submodule update --init --recursive\n\n# 以可编辑模式安装子模块，并包含 IFEval 和 Math 依赖项\npip install -e \"lm-evaluation-harness[ifeval,math]\"\n```\n\n### （可选）Slurm 设置\n对于 [Slurm](https:\u002F\u002Fslurm.schedmd.com\u002F) 用户，请根据您的集群更新 [`scripts\u002Ftrain.slurm.sh`](\u002Fscripts\u002Ftrain.slurm.sh)：\n```diff\n- #SBATCH --partition=mllm_safety # 注意：请根据您的集群调整此项\n- #SBATCH --quotatype=spot        # 注意：请根据您的集群调整此项\n+ #SBATCH --partition=YOUR_PARTITION\n+ #SBATCH --quotatype=YOUR_QUOTATYPE\n```\n接下来，为您的作业日志创建一个目录：\n```shell\nmkdir .logs\n```\n该文件夹将存储您通过 sbatch 提交的作业生成的日志文件。\n\n## 文件\n```\n\n# 用于训练\u002F采样的模块\ndllm\n├── core                   # 核心可重用模块，供 `dllm\u002Fpipelines` 共享\n│   ├── samplers\n│   ├── schedulers\n│   └── trainers\n├── data\n├── pipelines              # 针对特定应用的训练与推理流水线\n|   ├── bert\n│   ├── dream\n│   ├── editflow\n│   ├── fastdllm\n│   └── llada\n│       ├── models         # 模型架构与配置\n│       ├── sampler.py     # 推理模块\n│       ├── trainer.py     # 训练模块\n│       └── eval.py        # 评估模块\n├── tools\n└── utils\n\n# 训练\u002F采样的入口点\nexamples\n├── bert\n├── dream\n├── editflow\n├── fastdllm\n└── llada\n    ├── chat.py            # 交互式推理示例\n    ├── sample.py          # 推理示例\n    ├── pt.py              # 预训练示例\n    ├── README.md          # 文档（您当前所在）\n    ├── sft.py             # 监督微调示例\n    └── eval.sh            # 评估脚本\n```\n\n## 训练\n\n典型的训练入口脚本（例如 [`examples\u002Fllada\u002Fsft.py`](\u002Fexamples\u002Fllada\u002Fsft.py)）如下所示：\n```python\nimport transformers\n\nimport dllm\n\nmodel_args, data_args, training_args = parser.parse_args_into_dataclasses()\n# ----- 模型 ------------------------------------------------------------------\n模型 = dllm.utils.get_model(model_args=model_args)\n# ----- 分词器 --------------------------------------------------------------\n分词器 = dllm.utils.get_tokenizer(model_args=model_args)\n# ----- 数据集 ----------------------------------------------------------------\n数据集 = \"...\"\n\n# ----- 训练 --------------------------------------------------------------\ntrainer = dllm.core.trainers.MDLMTrainer(\n    model=model,\n    tokenizer=tokenizer,\n    train_dataset=dataset[\"train\"],\n    eval_dataset=dataset[\"test\"],\n    args=training_args,\n    data_collator=transformers.DataCollatorForSeq2Seq(\n        tokenizer,\n        return_tensors=\"pt\",\n        padding=True,\n        label_pad_token_id=tokenizer.pad_token_id, \n    ),\n)\ntrainer.train()\n```\n\n您可以在本地使用 `accelerate` 启动训练任务，或通过 `sbatch` 将其提交到 [Slurm](https:\u002F\u002Fslurm.schedmd.com\u002F) 集群。\n```shell\n# 在本地运行（8 张 GPU 上启用 ZeRO-2、4bit 量化和 LoRA）\naccelerate launch \\\n    --config_file scripts\u002Faccelerate_configs\u002Fzero2.yaml \\\n    examples\u002Fllada\u002Fsft.py \\\n    --num_train_epochs 4 \\\n    --load_in_4bit True --lora True\n```\n```shell\n# 提交到 Slurm 集群（单节点 8 张 GPU 上启用 FSDP）\nsbatch --gres=gpu:8 scripts\u002Ftrain.slurm.sh \\\n    --accelerate_config \"fsdp\" \\\n    --script_path \"examples\u002Fllada\u002Fsft.py\" \\\n    --num_train_epochs 4\n\n# 提交到 Slurm 集群（双节点 16 张 GPU 上启用 FSDP）\nsbatch --nodes=2 --gres=gpu:8 scripts\u002Ftrain.slurm.sh \\\n    --accelerate_config \"fsdp\" \\\n    --script_path \"examples\u002Fllada\u002Fsft.py\" \\\n    --num_train_epochs 4\n```\n\n具体训练方案请参阅 [Features](#features)。\n\n\n\u003C!-- 这里有一些有用的训练技巧： -->\n#### 有用的训练技巧：\n- 使用数据子集：\n`--dataset_args \"allenai\u002Ftulu-3-sft-mixture[train:10000,test:1000]\"`\n- 拼接多个数据集：\n`--dataset_args \"allenai\u002Ftulu-3-sft-mixture+HuggingFaceTB\u002Fsmoltalk\"`\n- 结合 LoRA 和 4bit 量化进行训练：\n`--load_in_4bit True --lora True`\n- 使用不同的分布式训练方法：\n`--accelerate_config \"ddp,zero-{1,2,3},fsdp\"`\n- 以流式方式加载预训练数据集：\n`--streaming True`\n- 在训练前预处理 SFT 数据集（例如 LLaDA）：\n  \u003C!-- ```shell\n  # 预处理 SFT 数据\n  python dllm\u002Ftools\u002Fpreprocess_sft_dataset.py \\\n      --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" \\\n      --sft_map_fn_path \"dllm.utils.default_sft_map_fn\" \\\n      --dataset_args \"allenai\u002Ftulu-3-sft-mixture\" \\\n      --output_dir \".data\u002Fsft\u002Fllada\u002Ftulu-3-sft-mixture\" \\\n      --num_proc 64\n  \n  # 使用预处理后的数据进行 SFT\n  accelerate launch \\\n      --config_file scripts\u002Faccelerate_configs\u002Ffsdp.yaml \\\n      examples\u002Fllada\u002Fsft.py \\\n      --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" \\\n      --dataset_args \".data\u002Fsft\u002Fllada\u002Ftulu-3-sft-mixture\" \\\n      --load_preprocessed_data True \\\n      ...\n  ``` -->\n\n  ```diff\n  # 预处理 SFT 数据\n  + python dllm\u002Ftools\u002Fpreprocess_sft_dataset.py \\\n  +     --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" \\\n  +     --sft_map_fn_path \"dllm.utils.default_sft_map_fn\" \\\n  +     --dataset_args \"allenai\u002Ftulu-3-sft-mixture\" \\\n  +     --output_dir \".data\u002Fsft\u002Fllada\u002Ftulu-3-sft-mixture\" \\\n  +     --num_proc 64\n  \n  # 使用预处理后的数据进行 SFT\n  accelerate launch \\\n      --config_file scripts\u002Faccelerate_configs\u002Ffsdp.yaml \\\n      examples\u002Fllada\u002Fsft.py \\\n      --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" \\\n  -   --dataset_args \"allenai\u002Ftulu-3-sft-mixture\" \\\n  +   --dataset_args \".data\u002Fsft\u002Fllada\u002Ftulu-3-sft-mixture\" \\\n  +   --load_preprocessed_data True \\\n      ...\n  ```\n\n## 推理\n\n我们提供了统一的 [samplers](\u002Fdllm\u002Fcore\u002Fsamplers)，用于抽象化推理细节。\n典型的推理入口脚本（例如 [`examples\u002Fllada\u002Fsample.py`](\u002Fexamples\u002Fllada\u002Fsample.py)）如下所示：\n```python\nimport dllm\n\n模型 = dllm.utils.get_model(model_args=script_args).eval()\n分词器 = dllm.utils.get_tokenizer(model_args=script_args)\n采样器 = dllm.core.samplers.MDLMSampler(model=model, tokenizer=tokenizer)\n\nmessages = [\n    [{\"role\": \"user\", \"content\": \"莉莉以每小时 12 公里的速度跑了 4 小时。那么 8 小时能跑多远？\"}],\n    [{\"role\": \"user\", \"content\": \"请编写一个教育性的 Python 函数。\"}],\n]\n\ninputs = tokenizer.apply_chat_template(\n    messages,\n    add_generation_prompt=True,\n    tokenize=True,\n)\n\noutputs = sampler.sample(inputs, return_dict=True)\nsequences = dllm.utils.sample_trim(tokenizer, outputs.sequences.tolist(), inputs)\n```\n\n您还可以尝试交互式聊天脚本（例如 [`examples\u002Fllada\u002Fchat.py`](\u002Fexamples\u002Fllada\u002Fchat.py)），以可视化多轮对话：\n```shell\npython -u examples\u002Fllada\u002Fchat.py --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Instruct\"\n```\n\n借助 [Fast-dLLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2505.22618)，您可以加速 [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) 和 [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487) 的推理。\n```shell\npython examples\u002Ffastdllm\u002Fllada\u002Fsample.py --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Instruct\" --use_cache prefix --threshold 0.9\n```\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZHZisZZ_dllm_readme_226dde2f8f66.gif\" alt=\"chat\" width=\"80%\">\n\u003C\u002Fp>\n\u003C!-- \u003Cp align=\"center\">\u003Cem>EditFlow 在采样过程中执行插入（蓝色）、从掩码标记替换（黑色）、从非掩码标记替换（红色）以及删除（删除线 → 已移除）操作。\u003C\u002Fem>\u003C\u002Fp> -->\n\n## 评估\n> 在运行评估之前，请阅读[(可选) 评估设置](\u002FREADME.md#optional-evaluation-setup)。\n\n例如，要在 [`MMLU_Pro`](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FTIGER-Lab\u002FMMLU-Pro) 数据集上使用 4 张 GPU 评估 [`LLaDA-8B-Instruct`](https:\u002F\u002Fhuggingface.co\u002FGSAI-ML\u002FLLaDA-8B-Instruct)，请运行：\n```shell\naccelerate launch --num_processes 4 \\\n    dllm\u002Fpipelines\u002Fllada\u002Feval.py \\\n    --tasks \"mmlu_pro\" \\\n    --model \"llada\" \\\n    --apply_chat_template \\\n    --num_fewshot 0 \\\n    --model_args \"pretrained=GSAI-ML\u002FLLaDA-8B-Instruct,is_check_greedy=False,mc_num=1,max_new_tokens=256,steps=256,block_size=256,cfg_scale=0.0\"\n```\n\n我们还提供了脚本，用于在所有基准测试上自动评估 [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992)、[Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487) 和 [BERT-Chat](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002Fdllm-hub\u002Fbert-chat)。例如，您可以直接使用以下命令运行 [`examples\u002Fllada\u002Feval.sh`](\u002Fexamples\u002Fllada\u002Feval.sh)：\n```shell\nbash examples\u002Fllada\u002Feval.sh --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Instruct\" --instruct True\nbash examples\u002Fllada\u002Feval.sh --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Base\" --instruct False\n```\n\n我们还提供了使用 [Fast-dLLM](https:\u002F\u002Farxiv.org\u002Fabs\u002F2505.22618) 评估 [LLaDA](https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.09992) 和 [Dream](https:\u002F\u002Farxiv.org\u002Fabs\u002F2508.15487) 的脚本：\n```shell\nbash examples\u002Ffastdllm\u002Fllada\u002Feval.sh --model_name_or_path \"GSAI-ML\u002FLLaDA-8B-Instruct\" --instruct True --num_gpu 1\nbash examples\u002Ffastdllm\u002Fdream\u002Feval.sh --model_name_or_path \"Dream-org\u002FDream-v0-Base-7B\" --instruct False --num_gpu 1\n```\n\n\n## 引用\n```\n@misc{zhou2026dllm,\n      title={dLLM: 简单的扩散语言建模}, \n      author={Zhanhui Zhou 和 Lingjie Chen 和 Hanghang Tong 和 Dawn Song},\n      year={2026},\n      eprint={2602.22661},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.22661}, \n}\n```","# dLLM 快速上手指南\n\ndLLM 是一个用于统一训练和评估**扩散语言模型**（Diffusion Language Models）的开源库。它基于 Hugging Face `transformers` 和 `lm-evaluation-harness`，提供了可扩展的训练流水线（支持 LoRA、DeepSpeed、FSDP）和统一的评估方案，旨在让扩散模型的开发更加透明和可复现。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux (推荐)\n*   **Python 版本**: 3.10\n*   **GPU**: 支持 CUDA 的 NVIDIA 显卡（示例基于 CUDA 12.4，其他版本通常也兼容）\n*   **依赖管理**: 推荐使用 `conda` 进行环境隔离\n\n## 安装步骤\n\n### 1. 创建并激活 Conda 环境\n\n```bash\nconda create -n dllm python=3.10 -y\nconda activate dllm\n```\n\n### 2. 安装 PyTorch (CUDA 12.4)\n\n根据您的硬件环境安装对应的 PyTorch 版本。以下是官方推荐的 CUDA 12.4 安装命令：\n\n```bash\nconda install cuda=12.4 -c nvidia\npip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 \\\n    --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu124\n```\n\n> **提示**：如果您在中国大陆，建议使用国内镜像源加速下载。例如使用清华源：\n> ```bash\n> pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 \\\n>     --index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n> *(注：PyTorch 的 CUDA 版本包通常仍需从官方源或特定渠道获取，上述命令主要加速纯 Python 依赖)*\n\n### 3. 安装 dLLM 库\n\n克隆仓库后，以可编辑模式安装：\n\n```bash\npip install -e .\n```\n\n### 4. (可选) 配置评估工具\n\n如果需要运行基准测试评估，需初始化子模块并安装 `lm-evaluation-harness`：\n\n```bash\ngit submodule update --init --recursive\npip install -e \"lm-evaluation-harness[ifeval,math]\"\n```\n\n## 基本使用\n\ndLLM 提供了针对不同模型架构（如 LLaDA, Dream, BERT-Chat 等）的示例脚本。以下以 **LLaDA** 模型的监督微调（SFT）为例，展示最基础的训练流程。\n\n### 1. 准备训练脚本\n\n典型的训练入口脚本位于 `examples\u002Fllada\u002Fsft.py`。其核心逻辑如下（无需手动修改，了解即可）：\n\n```python\nimport transformers\nimport dllm\n\n# 解析参数\nmodel_args, data_args, training_args = parser.parse_args_into_dataclasses()\n\n# 加载模型和分词器\nmodel = dllm.utils.get_model(model_args=model_args)\ntokenizer = dllm.utils.get_tokenizer(model_args=model_args)\n\n# 构建数据集 (此处省略具体加载代码)\ndataset = \"...\"\n\n# 初始化 Trainer (以 MDLMTrainer 为例)\ntrainer = dllm.core.trainers.MDLMTrainer(\n    model=model,\n    tokenizer=tokenizer,\n    train_dataset=dataset[\"train\"],\n    eval_dataset=dataset[\"test\"],\n    args=training_args,\n    data_collator=transformers.DataCollatorForSeq2Seq(\n        tokenizer,\n        return_tensors=\"pt\",\n        padding=True,\n        label_pad_token_id=tokenizer.pad_token_id, \n    ),\n)\n\n# 开始训练\ntrainer.train()\n```\n\n### 2. 启动训练\n\n您可以使用 `accelerate` 在本地单机多卡启动，或通过 `sbatch` 提交到 Slurm 集群。\n\n#### 方式 A：本地运行 (推荐初学者)\n\n以下命令演示如何在 8 张 GPU 上使用 ZeRO-2 策略、4bit 量化和 LoRA 进行微调：\n\n```bash\naccelerate launch \\\n    --config_file scripts\u002Faccelerate_configs\u002Fzero2.yaml \\\n    examples\u002Fllada\u002Fsft.py \\\n    --num_train_epochs 4 \\\n    --load_in_4bit True --lora True\n```\n\n**常用参数技巧：**\n*   **使用数据子集测试**: `--dataset_args \"allenai\u002Ftulu-3-sft-mixture[train:10000,test:1000]\"`\n*   **合并数据集**: `--dataset_args \"dataset1+dataset2\"`\n*   **流式加载大数据集**: `--streaming True`\n\n#### 方式 B：提交到 Slurm 集群\n\n如果您拥有集群权限，可以修改 `scripts\u002Ftrain.slurm.sh` 中的分区配置后提交任务：\n\n```bash\n# 单节点 8 卡 (FSDP)\nsbatch --gres=gpu:8 scripts\u002Ftrain.slurm.sh \\\n    --accelerate_config \"fsdp\" \\\n    --script_path \"examples\u002Fllada\u002Fsft.py\" \\\n    --num_train_epochs 4\n\n# 多节点 16 卡 (FSDP)\nsbatch --nodes=2 --gres=gpu:8 scripts\u002Ftrain.slurm.sh \\\n    --accelerate_config \"fsdp\" \\\n    --script_path \"examples\u002Fllada\u002Fsft.py\" \\\n    --num_train_epochs 4\n```\n\n### 3. 推理与采样\n\n训练完成后，可以使用提供的采样器进行文本生成。以 LLaDA 为例：\n\n```bash\npython examples\u002Fllada\u002Fsample.py \\\n    --model_name_or_path \u003Cyour_model_path> \\\n    --prompt \"Once upon a time\" \\\n    --max_new_tokens 100\n```\n\n对于交互式对话体验（如 BERT-Chat），可使用：\n\n```bash\npython examples\u002Fbert\u002Fchat.py --model_name_or_path \u003Cyour_chat_model_path>\n```\n\n更多针对特定模型（如 Dream, EditFlow, Fast-dLLM）的详细用法，请参阅 `examples\u002F` 目录下对应文件夹的 `README.md`。","某 AI 实验室的研究团队正致力于将成熟的自回归模型（如 LLaMA 或 Qwen）转化为扩散语言模型，以探索其在文本生成多样性上的新潜力。\n\n### 没有 dllm 时\n- **复现门槛极高**：研究人员需手动拼凑分散的代码片段来实现掩码扩散（MDLM）或块扩散（BD3LM）等复杂算法，极易因细节疏漏导致训练失败。\n- **评估流程割裂**：缺乏统一的评估框架，每次实验后需编写定制化脚本对接 `lm-evaluation-harness`，耗时且难以保证结果的可比性。\n- **资源适配困难**：在大规模集群上部署时，需自行配置 DeepSpeed 或 FSDP 等并行策略，调试分布式训练环境往往占据数周时间。\n- **模型转换黑盒**：将任意自回归模型转换为扩散模型缺乏标准食谱（Recipe），团队需反复试错调整超参数，研发周期漫长。\n\n### 使用 dllm 后\n- **算法开箱即用**：dllm 内置了 MDLM、BD3LM 等主流训练算法的实现，团队可直接调用标准化接口，将算法验证时间从数周缩短至数天。\n- **评估一键自动化**：依托集成的统一评估流水线，研究人员只需简单配置即可自动完成推理与性能打分，确保不同实验间的数据严格可比。\n- **弹性扩展无忧**：dllm 原生支持 LoRA、DeepSpeed 及 FSDP，团队能无缝利用现有算力集群进行大规模训练，无需关注底层并行细节。\n- **转换路径清晰**：借助 dllm 提供的开放食谱（如 Tiny-A2D 案例），团队成功将现有的 Qwen 模型快速转化为扩散模型，并复现了 SOTA 效果。\n\ndllm 通过统一训练、推理与评估的全链路标准，让扩散语言模型的研发从“手工造轮子”转变为高效的“标准化生产”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZHZisZZ_dllm_6b226a2a.png","ZHZisZZ","Zhanhui Zhou","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FZHZisZZ_77084154.jpg","PhD student @ UC Berkeley","UC Berkeley","Berkeley","zhanhui@berkeley.edu","asapzzhou","https:\u002F\u002Fgithub.com\u002FZHZisZZ",[85,89],{"name":86,"color":87,"percentage":88},"Python","#3572A5",99.7,{"name":90,"color":91,"percentage":92},"Shell","#89e051",0.3,2302,226,"2026-04-03T05:13:02","Apache-2.0","Linux","必需 NVIDIA GPU，支持 CUDA 12.4（文档示例），建议使用多卡环境（如 8 卡）进行分布式训练","未说明",{"notes":101,"python":102,"dependencies":103},"1. 官方安装指南基于 Conda 环境管理。2. 默认示例使用 CUDA 12.4 和 PyTorch 2.6.0，但注明其他版本也可行。3. 支持多种分布式训练策略（DeepSpeed ZeRO, FSDP, DDP）。4. 若需运行评估脚本，需初始化并安装 lm-evaluation-harness 子模块。5. 提供了 Slurm 集群提交脚本的配置示例。","3.10",[104,105,106,107,108,109],"torch==2.6.0","transformers","accelerate","peft","deepspeed","lm-evaluation-harness",[26,14,13],[112,113,114],"llm","discrete-diffusion-models","nlp",null,"2026-03-27T02:49:30.150509","2026-04-06T07:13:57.764106",[119,124,129,134,139,144],{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},13395,"是否支持将自回归（AR）模型转换为扩散语言模型（dLLM）进行训练？","支持。您可以参考 `examples\u002Fa2d` 目录中的示例，了解如何将任意 AR 模型适配为扩散模型。此外，维护者正在 `dev` 分支中完善 a2d 流水线（路径：`dllm\u002Fpipelines\u002Fa2d` 和 `examples\u002Fa2d`），预计不久后会合并到主分支。部分可用的检查点模型可在 Hugging Face 的 `dllm-collection\u002Ftiny-a2d` 集合中找到。","https:\u002F\u002Fgithub.com\u002FZHZisZZ\u002Fdllm\u002Fissues\u002F12",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},13396,"LLaDA 模型在 SFT 微调时的显存占用为何远高于 LLaMA？","这通常与扩散语言模型（DLLM）的训练机制有关。大多数论文指出，DLLM 需要看到的 token 数量大约是自回归模型（ARLLM）的两倍，因为训练时通常只对约 50% 的 token 进行掩码计算。在实际操作中，DLLM 通常需要训练约 50 个 epoch（每个 epoch 使用不同的掩码）才能收敛。对于 SFT 数据集，建议至少使用 10 个 epoch。高显存占用可能源于此机制以及修改后的注意力掩码或架构差异。","https:\u002F\u002Fgithub.com\u002FZHZisZZ\u002Fdllm\u002Fissues\u002F14",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},13397,"如何在仅使用 CPU 的环境下运行该项目？","可以在纯 CPU 环境下运行，但生成速度会非常慢。有用户反馈在旧款笔记本电脑（无独立 GPU）上运行时，生成过程需要超过 20 分钟。虽然功能可用，但强烈建议使用 GPU 以获得秒级的生成速度。如果编译阶段报错，请确保已正确安装所有 CPU 版本的依赖库。","https:\u002F\u002Fgithub.com\u002FZHZisZZ\u002Fdllm\u002Fissues\u002F23",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},13398,"评估结果与 README 文档中的数据不一致，或者特定任务（如 MMLU）得分为 0，该如何解决？","这通常是由于代码版本过旧导致的。维护者已在 PR #89 中修复了相关问题。请拉取主分支（main）的最新提交并重新安装包，即可解决评估结果不匹配或得分为 0 的问题。","https:\u002F\u002Fgithub.com\u002FZHZisZZ\u002Fdllm\u002Fissues\u002F88",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},13399,"是否有针对标准 MDM 模型（如 LLaDA）的训练预算和基准测试结果？","目前由于计算资源限制，维护者尚未进行大规模的持续预训练（CPT）。现有的 LLaDA 修改代码是参照 ModernBERT 的方法 адаптирован 的。关于 ModernBERT 结合 CPT+SFT 的基准分数分析暂未完全公开，但一旦有新的实验进展，维护者会及时更新。","https:\u002F\u002Fgithub.com\u002FZHZisZZ\u002Fdllm\u002Fissues\u002F8",{"id":145,"question_zh":146,"answer_zh":147,"source_url":123},13400,"DiffuLLaMA 中的注意力退火掩码矩阵（attention annealing mask matrix）如何实现？","DiffuLLaMA 中已经存在该功能的实现，具体代码可参考其 Trainer 文件中的相关行（如 `llamafactory\u002Ftrain\u002Fddm\u002Ftrainer.py` 的第 158 行及 642-654 行）。虽然概念本身不复杂，但将这种动态变化的注意力模式传递给模型的朴素方法仍有工程优化的空间，未来可能会引入类似 FlexAttention 的技术来提升效率。",[]]